diff --git a/renderdoc/driver/d3d12/d3d12_resources.cpp b/renderdoc/driver/d3d12/d3d12_resources.cpp index 5db14e07c..a4ea3e673 100644 --- a/renderdoc/driver/d3d12/d3d12_resources.cpp +++ b/renderdoc/driver/d3d12/d3d12_resources.cpp @@ -136,6 +136,8 @@ ID3D12DeviceChild *Unwrap(ID3D12DeviceChild *ptr) WrappedID3D12Resource::~WrappedID3D12Resource() { + SAFE_RELEASE(m_Heap); + // perform an implicit unmap on release if(GetResourceRecord()) { diff --git a/renderdoc/driver/d3d12/d3d12_resources.h b/renderdoc/driver/d3d12/d3d12_resources.h index cb14fba72..8132f5974 100644 --- a/renderdoc/driver/d3d12/d3d12_resources.h +++ b/renderdoc/driver/d3d12/d3d12_resources.h @@ -938,7 +938,11 @@ public: return this; } - void SetHeap(ID3D12Heap *heap) { m_Heap = (WrappedID3D12Heap *)heap; } + void SetHeap(ID3D12Heap *heap) + { + m_Heap = (WrappedID3D12Heap *)heap; + SAFE_ADDREF(m_Heap); + } static void RefBuffers(D3D12ResourceManager *rm); static rdcarray AddRefBuffersBeforeCapture(D3D12ResourceManager *rm);