From 5366ce7b4afce4161e4dd6261aca715611e8099d Mon Sep 17 00:00:00 2001 From: Jake Turner Date: Fri, 26 Apr 2024 07:50:48 +0100 Subject: [PATCH] RD DXIL Disassembly: ignore "undef" parameters in "dx.op" functions --- .../driver/shaders/dxil/dxil_disassemble.cpp | 25 +++++++++++++------ 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/renderdoc/driver/shaders/dxil/dxil_disassemble.cpp b/renderdoc/driver/shaders/dxil/dxil_disassemble.cpp index 2095f82e9..580c8aaaf 100644 --- a/renderdoc/driver/shaders/dxil/dxil_disassemble.cpp +++ b/renderdoc/driver/shaders/dxil/dxil_disassemble.cpp @@ -2503,9 +2503,7 @@ void Program::MakeRDDisassemblyString(const DXBC::Reflection *reflection) int paramStrCount = (int)dxFuncSig.size(); for(size_t a = 1; a < inst.args.size(); ++a) { - if(!first) - lineStr += ", "; - + rdcstr paramNameStr; if(paramStart < paramStrCount) { int paramEnd = dxFuncSig.find(',', paramStart); @@ -2515,13 +2513,24 @@ void Program::MakeRDDisassemblyString(const DXBC::Reflection *reflection) { rdcstr dxParamName = dxFuncSig.substr(paramStart, paramEnd - paramStart); paramStart = paramEnd + 1; - lineStr += "/*"; - lineStr += dxParamName; - lineStr += "*/ "; + paramNameStr = "/*"; + paramNameStr += dxParamName; + paramNameStr += "*/ "; } } - lineStr += ArgToString(inst.args[a], false); - first = false; + // Don't show "undef" parameters + bool isUndef = false; + if(const Constant *c = cast(inst.args[a])) + isUndef = c->isUndef(); + if(!isUndef) + { + if(!first) + lineStr += ", "; + + lineStr += paramNameStr; + lineStr += ArgToString(inst.args[a], false); + first = false; + } } lineStr += ")"; }