From a769f3e25382de876307825bdd4ad75a306ded1b Mon Sep 17 00:00:00 2001 From: baldurk Date: Fri, 5 Nov 2021 12:12:11 +0000 Subject: [PATCH] D3D12 placed resources keep a refcount on their heap --- renderdoc/driver/d3d12/d3d12_resources.cpp | 2 ++ renderdoc/driver/d3d12/d3d12_resources.h | 6 +++++- 2 files changed, 7 insertions(+), 1 deletion(-) 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);