From ff547fa24fbf3805f1b5e675fd67184f87b7ad12 Mon Sep 17 00:00:00 2001 From: baldurk Date: Thu, 27 Oct 2016 15:42:37 +0200 Subject: [PATCH] Only allocate DSVs for output windows with depth. --- renderdoc/driver/d3d12/d3d12_debug.cpp | 6 +++++- renderdoc/driver/d3d12/d3d12_debug.h | 1 + 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/renderdoc/driver/d3d12/d3d12_debug.cpp b/renderdoc/driver/d3d12/d3d12_debug.cpp index f1c259089..497bef7d9 100644 --- a/renderdoc/driver/d3d12/d3d12_debug.cpp +++ b/renderdoc/driver/d3d12/d3d12_debug.cpp @@ -89,6 +89,7 @@ D3D12DebugManager::D3D12DebugManager(WrappedID3D12Device *wrapper) m_ResourceManager = wrapper->GetResourceManager(); m_OutputWindowID = 1; + m_DSVID = 0; m_WrappedDevice = wrapper; m_WrappedDevice->InternalRef(); @@ -1084,7 +1085,7 @@ uint64_t D3D12DebugManager::MakeOutputWindow(WindowingSystem system, void *data, m_WrappedDevice->GetDescriptorHandleIncrementSize(D3D12_DESCRIPTOR_HEAP_TYPE_RTV); outw.dsv = dsvHeap->GetCPUDescriptorHandleForHeapStart(); - outw.dsv.ptr += SIZE_T(m_OutputWindowID) * + outw.dsv.ptr += SIZE_T(m_DSVID) * m_WrappedDevice->GetDescriptorHandleIncrementSize(D3D12_DESCRIPTOR_HEAP_TYPE_DSV); outw.col = NULL; @@ -1093,7 +1094,10 @@ uint64_t D3D12DebugManager::MakeOutputWindow(WindowingSystem system, void *data, outw.depth = NULL; if(depth) + { outw.MakeDSV(); + m_DSVID++; + } uint64_t id = m_OutputWindowID++; m_OutputWindows[id] = outw; diff --git a/renderdoc/driver/d3d12/d3d12_debug.h b/renderdoc/driver/d3d12/d3d12_debug.h index e412b1e05..ac82ab0ac 100644 --- a/renderdoc/driver/d3d12/d3d12_debug.h +++ b/renderdoc/driver/d3d12/d3d12_debug.h @@ -217,6 +217,7 @@ private: int m_width, m_height; uint64_t m_OutputWindowID; + uint64_t m_DSVID; uint64_t m_CurrentOutputWindow; map m_OutputWindows;