diff --git a/renderdoc/driver/d3d12/d3d12_resources.cpp b/renderdoc/driver/d3d12/d3d12_resources.cpp index d585db52f..7df646d93 100644 --- a/renderdoc/driver/d3d12/d3d12_resources.cpp +++ b/renderdoc/driver/d3d12/d3d12_resources.cpp @@ -27,6 +27,7 @@ #include "d3d12_command_queue.h" std::vector WrappedID3D12Resource::m_Addresses; +std::map WrappedID3D12Resource::m_List; #undef D3D12_TYPE_MACRO #define D3D12_TYPE_MACRO(iface) WRAPPED_POOL_INST(CONCAT(Wrapped, iface)); diff --git a/renderdoc/driver/d3d12/d3d12_resources.h b/renderdoc/driver/d3d12/d3d12_resources.h index 8d591f9bd..f72ad2d79 100644 --- a/renderdoc/driver/d3d12/d3d12_resources.h +++ b/renderdoc/driver/d3d12/d3d12_resources.h @@ -467,6 +467,8 @@ class WrappedID3D12Resource : public WrappedDeviceChild12 public: ALLOCATE_WITH_WRAPPED_POOL(WrappedID3D12Resource); + static std::map m_List; + static ResourceId GetResIDFromAddr(D3D12_GPU_VIRTUAL_ADDRESS addr) { if(m_Addresses.empty()) @@ -490,6 +492,8 @@ public: WrappedID3D12Resource(ID3D12Resource *real, WrappedID3D12Device *device) : WrappedDeviceChild12(real, device) { + m_List[GetResourceID()] = this; + // assuming only valid for buffers if(m_pReal->GetDesc().Dimension == D3D12_RESOURCE_DIMENSION_BUFFER) { @@ -509,6 +513,8 @@ public: } virtual ~WrappedID3D12Resource() { + m_List.erase(GetResourceID()); + // assuming only valid for buffers if(m_pReal->GetDesc().Dimension == D3D12_RESOURCE_DIMENSION_BUFFER) {