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)));