From 6de786d243b7dd9f39b5b6dba5bedaa88c579a3d Mon Sep 17 00:00:00 2001 From: baldurk Date: Wed, 6 Aug 2025 13:14:47 +0100 Subject: [PATCH] Fix a crash when patching ray dispatches after device lost --- renderdoc/driver/d3d12/d3d12_manager.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/renderdoc/driver/d3d12/d3d12_manager.cpp b/renderdoc/driver/d3d12/d3d12_manager.cpp index b5b1fade9..38bf36a0c 100644 --- a/renderdoc/driver/d3d12/d3d12_manager.cpp +++ b/renderdoc/driver/d3d12/d3d12_manager.cpp @@ -2292,8 +2292,12 @@ void D3D12RTManager::PrepareRayDispatchBuffer(GPUAddressRangeTracker *origAddres D3D12GpuBufferHeapMemoryFlag::Default, lookupData.size(), 256, &m_LookupBuffer); - memcpy(m_LookupBuffer->Map(), lookupData.data(), lookupData.size()); - m_LookupBuffer->Unmap(); + void *ptr = m_LookupBuffer ? m_LookupBuffer->Map() : NULL; + if(ptr) + { + memcpy(m_LookupBuffer->Map(), lookupData.data(), lookupData.size()); + m_LookupBuffer->Unmap(); + } D3D12_GPU_VIRTUAL_ADDRESS baseAddr = m_LookupBuffer->Address(); m_LookupAddrs[0] = baseAddr + ObjectLookupOffset;