From b19c5b9f73baadb4e9e51561650d601780219c74 Mon Sep 17 00:00:00 2001 From: baldurk Date: Tue, 13 May 2025 15:16:42 +0100 Subject: [PATCH] Prevent crash if programmatic capture happens after deleting swapchain --- renderdoc/driver/d3d11/d3d11_device.cpp | 3 +++ renderdoc/driver/d3d12/d3d12_device.cpp | 3 +++ 2 files changed, 6 insertions(+) diff --git a/renderdoc/driver/d3d11/d3d11_device.cpp b/renderdoc/driver/d3d11/d3d11_device.cpp index 23256a9a8..245295828 100644 --- a/renderdoc/driver/d3d11/d3d11_device.cpp +++ b/renderdoc/driver/d3d11/d3d11_device.cpp @@ -1635,6 +1635,9 @@ void WrappedID3D11Device::ReleaseSwapchainResources(IDXGISwapper *swapper, UINT IUnknown *const *ppPresentQueue, IUnknown **unwrappedQueues) { + if(m_LastSwap == swapper) + m_LastSwap = NULL; + RDCASSERT(ppPresentQueue == NULL); if(ppPresentQueue) diff --git a/renderdoc/driver/d3d12/d3d12_device.cpp b/renderdoc/driver/d3d12/d3d12_device.cpp index 9b0bdf03d..87768eaa8 100644 --- a/renderdoc/driver/d3d12/d3d12_device.cpp +++ b/renderdoc/driver/d3d12/d3d12_device.cpp @@ -1701,6 +1701,9 @@ void WrappedID3D12Device::ReleaseSwapchainResources(IDXGISwapper *swapper, UINT IUnknown *const *ppPresentQueue, IUnknown **unwrappedQueues) { + if(m_LastSwap == swapper) + m_LastSwap = NULL; + if(ppPresentQueue) { for(UINT i = 0; i < QueueCount; i++)