From fef07604902706d5f5181bd696e0f9a8be2956b2 Mon Sep 17 00:00:00 2001 From: Jake Turner Date: Thu, 22 Oct 2026 10:26:10 +0100 Subject: [PATCH] D3D11 & D3D12 rebuild reflection when reloading shaders to match Vulkan - Changing PDB search path will now reload all built shaders to get any newly found PDB data tracked and ready to be embedded into the RDC file --- renderdoc/driver/d3d11/d3d11_resources.cpp | 6 ++++++ renderdoc/driver/d3d12/d3d12_resources.cpp | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/renderdoc/driver/d3d11/d3d11_resources.cpp b/renderdoc/driver/d3d11/d3d11_resources.cpp index 3d7f0eb4d..29d46bd59 100644 --- a/renderdoc/driver/d3d11/d3d11_resources.cpp +++ b/renderdoc/driver/d3d11/d3d11_resources.cpp @@ -159,6 +159,7 @@ void WrappedShader::ReloadShaderDebugInformation() void WrappedShader::ShaderEntry::Reload() { + bool wasBuilt = m_Built; m_Built = false; *m_Details = ShaderReflection(); m_Access.clear(); @@ -169,6 +170,11 @@ void WrappedShader::ShaderEntry::Reload() m_Bytecode = m_DXBCFile->GetShaderBlob(); } SAFE_DELETE(m_DXBCFile); + if(wasBuilt && (GetDXBC() != NULL)) + { + BuildReflection(); + m_Built = true; + } } UINT GetSubresourceCount(ID3D11Resource *res) diff --git a/renderdoc/driver/d3d12/d3d12_resources.cpp b/renderdoc/driver/d3d12/d3d12_resources.cpp index c326d51d5..ac73c2a81 100644 --- a/renderdoc/driver/d3d12/d3d12_resources.cpp +++ b/renderdoc/driver/d3d12/d3d12_resources.cpp @@ -650,9 +650,15 @@ void WrappedID3D12PipelineState::ShaderEntry::ReloadShaderDebugInformation() void WrappedID3D12PipelineState::ShaderEntry::Reload() { + bool wasBuilt = m_Built; m_Built = false; *m_Details = ShaderReflection(); SAFE_DELETE(m_DXBCFile); + if(wasBuilt && (GetDXBC() != NULL)) + { + BuildReflection(); + m_Built = true; + } } rdcpair FindMatchingRootParameter(const D3D12RootSignature &sig,