From 6c91b28e71e46d509431178fb52a7715385d54af Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Wed, 8 Nov 2023 11:27:00 -0800 Subject: [PATCH] Added the "SDL.renderer.d3d12.command_queue" property Fixes https://github.com/libsdl-org/SDL/issues/8491 --- include/SDL3/SDL_render.h | 1 + src/render/direct3d12/SDL_render_d3d12.c | 8 +++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/include/SDL3/SDL_render.h b/include/SDL3/SDL_render.h index 9fde47f2c6..5b745b54ea 100644 --- a/include/SDL3/SDL_render.h +++ b/include/SDL3/SDL_render.h @@ -313,6 +313,7 @@ extern DECLSPEC int SDLCALL SDL_GetRendererInfo(SDL_Renderer *renderer, SDL_Rend * "SDL.renderer.d3d9.device" - the IDirect3DDevice9 associated with the renderer * "SDL.renderer.d3d11.device" - the ID3D11Device associated with the renderer * "SDL.renderer.d3d12.device" - the ID3D12Device associated with the renderer + * "SDL.renderer.d3d12.command_queue" - the ID3D12CommandQueue associated with the renderer * * \param renderer the rendering context * \returns a valid property ID on success or 0 on failure; call diff --git a/src/render/direct3d12/SDL_render_d3d12.c b/src/render/direct3d12/SDL_render_d3d12.c index 2fd1f00d10..8e89185a01 100644 --- a/src/render/direct3d12/SDL_render_d3d12.c +++ b/src/render/direct3d12/SDL_render_d3d12.c @@ -323,6 +323,10 @@ static void D3D12_ReleaseAll(SDL_Renderer *renderer) D3D12_RenderData *data = (D3D12_RenderData *)renderer->driverdata; SDL_Texture *texture = NULL; + SDL_PropertiesID props = SDL_GetRendererProperties(renderer); + SDL_SetProperty(props, "SDL.renderer.d3d12.device", NULL); + SDL_SetProperty(props, "SDL.renderer.d3d12.command_queue", NULL); + /* Release all textures */ for (texture = renderer->textures; texture; texture = texture->next) { D3D12_DestroyTexture(renderer, texture); @@ -1068,7 +1072,9 @@ static HRESULT D3D12_CreateDeviceResources(SDL_Renderer *renderer) } data->srvPoolHead = &data->srvPoolNodes[0]; - SDL_SetProperty(SDL_GetRendererProperties(renderer), "SDL.renderer.d3d12.device", data->d3dDevice); + SDL_PropertiesID props = SDL_GetRendererProperties(renderer); + SDL_SetProperty(props, "SDL.renderer.d3d12.device", data->d3dDevice); + SDL_SetProperty(props, "SDL.renderer.d3d12.command_queue", data->commandQueue); done: SAFE_RELEASE(d3dDevice);