From 4e13c6c38e61ead677c61ef0b0495b8f65f21c8a Mon Sep 17 00:00:00 2001 From: baldurk Date: Sun, 4 Oct 2015 13:16:38 +0200 Subject: [PATCH] Fix store/copy not printing destination properly --- .../shaders/spirv/spirv_disassemble.cpp | 22 ++++++++++--------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/renderdoc/driver/shaders/spirv/spirv_disassemble.cpp b/renderdoc/driver/shaders/spirv/spirv_disassemble.cpp index 7f9b50a6f..28a1e819a 100644 --- a/renderdoc/driver/shaders/spirv/spirv_disassemble.cpp +++ b/renderdoc/driver/shaders/spirv/spirv_disassemble.cpp @@ -629,12 +629,13 @@ struct SPVInstruction { RDCASSERT(op); - string arg; - op->GetArg(ids, 1, arg); + string dest, src; + op->GetArg(ids, 0, dest); + op->GetArg(ids, 1, src); // inlined only in function parameters, just return argument if(inlineOp) - return arg; + return src; char assignStr[] = " = "; @@ -642,22 +643,23 @@ struct SPVInstruction assignStr[0] = 0; #if LOAD_STORE_CONSTRUCTORS - return StringFormat::Fmt("Store(%s%s)%s%s", op->arguments[0]->GetIDName().c_str(), OptionalFlagString(op->access).c_str(), assignStr, arg.c_str()); + return StringFormat::Fmt("Store(%s%s)%s%s", dest.c_str(), OptionalFlagString(op->access).c_str(), assignStr, src.c_str()); #else - return StringFormat::Fmt("%s%s%s%s", op->arguments[0]->GetIDName().c_str(), OptionalFlagString(op->access).c_str(), assignStr, arg.c_str()); + return StringFormat::Fmt("%s%s%s%s", dest.c_str(), OptionalFlagString(op->access).c_str(), assignStr, src.c_str()); #endif } case spv::OpCopyMemory: { RDCASSERT(!inlineOp && op); - - string arg; - op->GetArg(ids, 1, arg); + + string dest, src; + op->GetArg(ids, 0, dest); + op->GetArg(ids, 1, src); #if LOAD_STORE_CONSTRUCTORS - return StringFormat::Fmt("Copy(%s%s) = Load(%s%s)", op->arguments[0]->GetIDName().c_str(), OptionalFlagString(op->access).c_str(), arg.c_str(), OptionalFlagString(op->access).c_str()); + return StringFormat::Fmt("Copy(%s%s) = Load(%s%s)", dest.c_str(), OptionalFlagString(op->access).c_str(), src.c_str(), OptionalFlagString(op->access).c_str()); #else - return StringFormat::Fmt("%s%s = %s%s", op->arguments[0]->GetIDName().c_str(), OptionalFlagString(op->access).c_str(), arg.c_str(), OptionalFlagString(op->access).c_str()); + return StringFormat::Fmt("%s%s = %s%s", dest.c_str(), OptionalFlagString(op->access).c_str(), src.c_str(), OptionalFlagString(op->access).c_str()); #endif } case spv::OpLoad: