From 21a5c1dcab8e4b4b0c48f63b848bd620dcc78609 Mon Sep 17 00:00:00 2001 From: baldurk Date: Wed, 5 May 2021 16:08:48 +0100 Subject: [PATCH] Better disassembly of NonSemantic.DebugPrintf --- renderdoc/driver/shaders/spirv/spirv_disassemble.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/renderdoc/driver/shaders/spirv/spirv_disassemble.cpp b/renderdoc/driver/shaders/spirv/spirv_disassemble.cpp index 8332e3f09..06469512a 100644 --- a/renderdoc/driver/shaders/spirv/spirv_disassemble.cpp +++ b/renderdoc/driver/shaders/spirv/spirv_disassemble.cpp @@ -1544,19 +1544,28 @@ rdcstr Reflector::Disassemble(const rdcstr &entryPoint, uint32_t inst = it.word(4); const bool IsGLSL450 = (setname == "GLSL.std.450"); + const bool IsDebugPrintf = (setname == "NonSemantic.DebugPrintf"); // GLSL.std.450 all parameters are Ids const bool idParams = IsGLSL450 || setname.beginsWith("NonSemantic."); if(IsGLSL450) ret += StringFormat::Fmt("%s::%s(", setname.c_str(), ToStr(GLSLstd450(inst)).c_str()); + else if(IsDebugPrintf) + ret += "DebugPrintf("; else ret += StringFormat::Fmt("%s::[%u](", setname.c_str(), inst); for(size_t i = 5; i < it.size(); i++) { + if(i == 5 && IsDebugPrintf) + ret += "\""; + // TODO could generate this from the instruction set grammar. ret += idParams ? idName(Id::fromWord(it.word(i))) : ToStr(it.word(i)); + if(i == 5 && IsDebugPrintf) + ret += "\""; + if(i + 1 < it.size()) ret += ", "; }