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,