From e8b183b7e804685d355d1c93571dcf64106926ed Mon Sep 17 00:00:00 2001 From: baldurk Date: Mon, 8 Feb 2021 13:48:58 +0000 Subject: [PATCH] Speculative workaround for DXGI bug * DXGI sometimes seems to return DXGI_INVALID_CALL when retrieving backbuffers. In this case we want to gracefully handle it instead of crashing and hope it will fix itself next time we try. --- renderdoc/driver/d3d11/d3d11_device.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/renderdoc/driver/d3d11/d3d11_device.cpp b/renderdoc/driver/d3d11/d3d11_device.cpp index b0b776499..6578045f2 100644 --- a/renderdoc/driver/d3d11/d3d11_device.cpp +++ b/renderdoc/driver/d3d11/d3d11_device.cpp @@ -1525,10 +1525,13 @@ void WrappedID3D11Device::NewSwapchainBuffer(IUnknown *backbuffer) { WrappedID3D11Texture2D1 *wrapped = (WrappedID3D11Texture2D1 *)backbuffer; - // add internal reference to keep this texture alive - SAFE_INTADDREF(wrapped); - // release the external reference - wrapped->Release(); + if(wrapped) + { + // add internal reference to keep this texture alive + SAFE_INTADDREF(wrapped); + // release the external reference + wrapped->Release(); + } } void WrappedID3D11Device::ReleaseSwapchainResources(IDXGISwapper *swapper, UINT QueueCount,