From aabc2d5b1961e7a45d161d0a9699a42eb27b632e Mon Sep 17 00:00:00 2001 From: baldurk Date: Wed, 15 Jul 2026 14:26:17 +0100 Subject: [PATCH] Display debug scopes in shader disassembly --- .../shaders/spirv/spirv_disassemble.cpp | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/renderdoc/driver/shaders/spirv/spirv_disassemble.cpp b/renderdoc/driver/shaders/spirv/spirv_disassemble.cpp index c0d2d07e9..baa79c14a 100644 --- a/renderdoc/driver/shaders/spirv/spirv_disassemble.cpp +++ b/renderdoc/driver/shaders/spirv/spirv_disassemble.cpp @@ -1754,6 +1754,40 @@ rdcstr Reflector::Disassemble(const rdcstr &entryPoint, ret += ")"; } + else if(dbg.inst == ShaderDbg::Scope) + { + ret += indent; + ret += "// DebugScope("; + + OpShaderDbg scope(GetID(dbg.arg(0))); + + rdcstr line; + + if(scope.inst == ShaderDbg::Function) + line = idName(scope.arg(3)); + else if(scope.inst == ShaderDbg::LexicalBlock) + line = idName(scope.arg(1)); + + while(scope.inst != ShaderDbg::Function && scope.arg(3) != Id()) + scope = OpShaderDbg(GetID(scope.arg(3))); + + if(scope.inst == ShaderDbg::Function) + { + ret += idName(scope.arg(0)); + ret += ":"; + ret += line; + } + else + { + ret += ""; + ret += ":"; + ret += line; + } + + if(dbg.params.size() >= 2) + ret += " (in-lined)"; + ret += ")"; + } else if(dbg.inst == ShaderDbg::Value) { OpShaderDbg localVar(GetID(dbg.arg(0)));