From c7512e15e207b82a850fdeff5af242882aae5096 Mon Sep 17 00:00:00 2001 From: baldurk Date: Fri, 22 Apr 2016 17:45:11 +0200 Subject: [PATCH] Implement OpArrayLength very similar to AccessChain/CompositeExtract --- renderdoc/driver/shaders/spirv/spirv_disassemble.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/renderdoc/driver/shaders/spirv/spirv_disassemble.cpp b/renderdoc/driver/shaders/spirv/spirv_disassemble.cpp index f2ad70bdc..31a28862a 100644 --- a/renderdoc/driver/shaders/spirv/spirv_disassemble.cpp +++ b/renderdoc/driver/shaders/spirv/spirv_disassemble.cpp @@ -1197,6 +1197,7 @@ struct SPVInstruction case spv::OpCompositeExtract: case spv::OpCompositeInsert: case spv::OpAccessChain: + case spv::OpArrayLength: case spv::OpInBoundsAccessChain: { RDCASSERT(op); @@ -1352,8 +1353,11 @@ struct SPVInstruction { if(!inlineOp) ret = StringFormat::Fmt("%s %s = ", op->type->GetName().c_str(), GetIDName().c_str()); - + ret += composite + accessString; + + if(opcode == spv::OpArrayLength) + ret += ".length()"; } return ret; @@ -2245,6 +2249,7 @@ string SPVModule::Disassemble(const string &entryPoint) if(arg->op->complexity >= maxAllowedComplexity || (arg->op->arguments.size() > 2 && arg->opcode != spv::OpAccessChain && + arg->opcode != spv::OpArrayLength && arg->opcode != spv::OpInBoundsAccessChain && arg->opcode != spv::OpSelect && arg->opcode != spv::OpCompositeConstruct)) @@ -5256,6 +5261,7 @@ void ParseSPIRV(uint32_t *spirv, size_t spirvLength, SPVModule &module) curBlock->instructions.push_back(&op); break; } + case spv::OpArrayLength: case spv::OpCompositeExtract: case spv::OpCompositeInsert: {