libsdl-org / SDL

Simple Directmedia Layer
https://libsdl.org
zlib License
8.68k stars 1.63k forks source link

SDL3/D3D11 crashes due to device lost #9861

Open STVHA opened 1 month ago

STVHA commented 1 month ago

I tested device lost with testffmpeg and the latest SDL3.

This is the call stack at the crash:

SDL3.dll!D3D11_CreateSwapChain(SDL_Renderer * renderer, int w, int h) Line 980  C
SDL3.dll!D3D11_CreateWindowSizeDependentResources(SDL_Renderer * renderer) Line 1125    C
SDL3.dll!D3D11_UpdateForWindowSizeChange(SDL_Renderer * renderer) Line 1198 C
SDL3.dll!D3D11_HandleDeviceLost(SDL_Renderer * renderer) Line 1058  C
SDL3.dll!D3D11_RenderPresent(SDL_Renderer * renderer) Line 2728 C
SDL3.dll!SDL_RenderPresent_REAL(SDL_Renderer * renderer) Line 4455  C
SDL3.dll!SDL_RenderPresent(SDL_Renderer * a) Line 680   C

Actually before jumping to the crash point above, there was another memory issue related to D3D11_CreateBlendState() but I just made a temporary fix to bypass that point.

slouken commented 1 month ago

What are the repro steps for this?

STVHA commented 1 month ago

You can easily reproduce it by running the test with a debugger and then run "dxcap -forcetdr" from a cmd under administrator to trigger device lost.