From c5e32d47c4abd4f3ac32763ef88241bcefe6ec01 Mon Sep 17 00:00:00 2001 From: baldurk Date: Tue, 19 Jan 2016 21:33:08 +0100 Subject: [PATCH] Declare variables after processing func if they aren't declared inline --- .../driver/shaders/spirv/spirv_disassemble.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/renderdoc/driver/shaders/spirv/spirv_disassemble.cpp b/renderdoc/driver/shaders/spirv/spirv_disassemble.cpp index 6ebebfb49..3b14e9a6a 100644 --- a/renderdoc/driver/shaders/spirv/spirv_disassemble.cpp +++ b/renderdoc/driver/shaders/spirv/spirv_disassemble.cpp @@ -2538,6 +2538,20 @@ string SPVModule::Disassemble(const string &entryPoint) funcops[o]->line = (int)o; } + // declare any variables that didn't get declared inline somewhere above +#if !C_VARIABLE_DECLARATIONS + for(size_t v=0; v < vars.size(); v++) + { + if(varDeclared[v]) continue; + + RDCASSERT(vars[v]->var && vars[v]->var->type); + retDisasm += string(indent, ' ') + vars[v]->var->type->DeclareVariable(vars[v]->decorations, vars[v]->GetIDName()) + ";\n"; + } + + if(!vars.empty()) + retDisasm += "\n"; +#endif + retDisasm += funcDisassembly; SAFE_DELETE_ARRAY(varDeclared);