From 2d7a717e2dd370f42d5a72352e0a2689053bcd0b Mon Sep 17 00:00:00 2001 From: baldurk Date: Thu, 24 Sep 2020 22:28:58 +0100 Subject: [PATCH] Fix shader function being called on non-shaders corrupting memory --- renderdoc/driver/d3d12/d3d12_replay.cpp | 3 +++ renderdoc/driver/d3d12/d3d12_resources.h | 9 +++++++++ 2 files changed, 12 insertions(+) diff --git a/renderdoc/driver/d3d12/d3d12_replay.cpp b/renderdoc/driver/d3d12/d3d12_replay.cpp index 2d9a3dd93..465fc96ef 100644 --- a/renderdoc/driver/d3d12/d3d12_replay.cpp +++ b/renderdoc/driver/d3d12/d3d12_replay.cpp @@ -410,6 +410,9 @@ TextureDescription D3D12Replay::GetTexture(ResourceId id) rdcarray D3D12Replay::GetShaderEntryPoints(ResourceId shader) { + if(!WrappedID3D12Shader::IsShader(shader)) + return {}; + ID3D12DeviceChild *res = m_pDevice->GetResourceManager()->GetCurrentResource(shader); if(!res) diff --git a/renderdoc/driver/d3d12/d3d12_resources.h b/renderdoc/driver/d3d12/d3d12_resources.h index f42115102..22271cab3 100644 --- a/renderdoc/driver/d3d12/d3d12_resources.h +++ b/renderdoc/driver/d3d12/d3d12_resources.h @@ -714,6 +714,15 @@ public: shader->Release(); } + static bool IsShader(ResourceId id) + { + for(auto it = m_Shaders.begin(); it != m_Shaders.end(); ++it) + if(it->second->GetResourceID() == id) + return true; + + return false; + } + DXBCKey GetKey() { return m_Key; } D3D12_SHADER_BYTECODE GetDesc() {