가상 그래픽 드라이버 외주 개발자가 만들어준 드라이버가 SwDeviceCreate()와 SwDeviceClose()를 호출하다가 일정 횟수를 반복하다보면 그래픽 드라이버가 제대로 만들어지지 않는 현상을 발견하였다.
Debuging을 해보니 DirectX 자원을 생성하려고 할때 E_OUTOFMEMORY 가 발생하는거였다.
하지만 이것도 IGPU, AMD는 괜찮지만 NVIDIA에서만 발생한다.
그래서 NVIDIA Memory leak을 검색하다보니 flush()를 하면 괜찮다는 글을 발견하였다.
그렇다면 DX Resource를 Release할 때 AMD와 IGPU는 바로 해제를 하지만 NVIDIA는 Flush가 발생할때까지 command list에 쌓아두기만하다가 한번에 처리하는건 아닐까? 생각이 든다.
참조 : https://forums.developer.nvidia.com/t/create-texture-cause-memory-leak/50121
참조 : https://stackoverflow.com/questions/58726052/directx-11-createvertexshader-memory-leak
'Visualization Programming > DirectX11' 카테고리의 다른 글
DirectX11 - 리소스 관련 함수 및 구조체 (0) | 2017.04.19 |
---|---|
DirectX11 - 그래픽 카드 정보 확인 (0) | 2017.04.18 |
DirectX11 - DirectX11 함수에서 빠져나오지 않을 때... (0) | 2017.02.08 |
DirectX11 - Windows 7이상 부터는 DXSDK_Jun10을 설치 하지 않아도 된다 (0) | 2016.11.29 |
DirectX11 - D3DX11CreateShaderResourceViewFromMemory()에서 E_INVALIDARG 발생. (0) | 2016.11.22 |