From 756a980d96bdd5c6c50b42e104172a503c0e8e99 Mon Sep 17 00:00:00 2001 From: Jake Turner Date: Thu, 25 Apr 2024 18:23:09 +0100 Subject: [PATCH] RD DXIL Disassembly: ignore first getelemenptr index if it is zero Before GroupShared float* _30 = shared_pos[0] + _29; After GroupShared float* _30 = shared_pos[_29]; --- .../driver/shaders/dxil/dxil_disassemble.cpp | 23 +++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/renderdoc/driver/shaders/dxil/dxil_disassemble.cpp b/renderdoc/driver/shaders/dxil/dxil_disassemble.cpp index 151812232..2095f82e9 100644 --- a/renderdoc/driver/shaders/dxil/dxil_disassemble.cpp +++ b/renderdoc/driver/shaders/dxil/dxil_disassemble.cpp @@ -2786,18 +2786,33 @@ void Program::MakeRDDisassemblyString(const DXBC::Reflection *reflection) lineStr += ptrStr; // arg[1] : index 0 + bool first = true; if(inst.args.size() > 1) { - lineStr += "["; - lineStr += ArgToString(inst.args[1], false); - lineStr += "]"; + if(getival(inst.args[1]) > 0) + { + lineStr += "["; + lineStr += ArgToString(inst.args[1], false); + lineStr += "]"; + first = false; + } } // arg[2..] : index 1...N for(size_t a = 2; a < inst.args.size(); ++a) { - lineStr += " + "; + if(first) + lineStr += "["; + else + lineStr += " + "; + lineStr += ArgToString(inst.args[a], false); + + if(first) + { + lineStr += "]"; + first = false; + } } } }