From f8ddc1720aa408d281c339f4cbd814906080337e Mon Sep 17 00:00:00 2001 From: Jake Turner Date: Fri, 13 Sep 2024 14:43:04 +0100 Subject: [PATCH] Added prototype of DXIL Source Variable Debug Data --- renderdoc/driver/shaders/dxil/dxil_bytecode.h | 9 +++++++++ renderdoc/driver/shaders/dxil/dxil_reflect.cpp | 10 ++++++++++ 2 files changed, 19 insertions(+) diff --git a/renderdoc/driver/shaders/dxil/dxil_bytecode.h b/renderdoc/driver/shaders/dxil/dxil_bytecode.h index c45a96fe0..35fdae354 100644 --- a/renderdoc/driver/shaders/dxil/dxil_bytecode.h +++ b/renderdoc/driver/shaders/dxil/dxil_bytecode.h @@ -1536,6 +1536,14 @@ class Program : public DXBC::IDebugInfo { friend DXILDebug::Debugger; friend DXILDebug::ThreadState; + + struct LocalSourceVariable + { + uint32_t startInst; + uint32_t endInst; + rdcarray sourceVars; + }; + public: Program(const byte *bytes, size_t length); Program(const Program &o) = delete; @@ -1681,6 +1689,7 @@ protected: std::map m_ResourceHandles; std::map m_SsaAliases; std::map m_ResourceAnnotateCounts; + rdcarray m_Locals; rdcarray m_ResourceReferences; rdcstr m_Disassembly; diff --git a/renderdoc/driver/shaders/dxil/dxil_reflect.cpp b/renderdoc/driver/shaders/dxil/dxil_reflect.cpp index e2803c753..b45049d4e 100644 --- a/renderdoc/driver/shaders/dxil/dxil_reflect.cpp +++ b/renderdoc/driver/shaders/dxil/dxil_reflect.cpp @@ -1760,6 +1760,16 @@ void Program::GetLocals(const DXBC::DXBCContainer *dxbc, size_t instruction, uin rdcarray &locals) const { locals.clear(); + + for(const LocalSourceVariable &localVar : m_Locals) + { + if(localVar.startInst > instruction) + continue; + if(instruction > localVar.endInst) + continue; + + locals.append(localVar.sourceVars); + } } const ResourceReference *Program::GetResourceReference(const rdcstr &handleStr) const