From cf0bd455c2efecceba918662cbeb83088a418f1b Mon Sep 17 00:00:00 2001 From: baldurk Date: Sat, 23 Jan 2016 16:11:46 +0100 Subject: [PATCH] EmitVertex/EndPrimitive opcodes have no return type or ID --- .../shaders/spirv/spirv_disassemble.cpp | 26 +++++++++++++------ 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/renderdoc/driver/shaders/spirv/spirv_disassemble.cpp b/renderdoc/driver/shaders/spirv/spirv_disassemble.cpp index 6f36d2e5b..d16d7c00e 100644 --- a/renderdoc/driver/shaders/spirv/spirv_disassemble.cpp +++ b/renderdoc/driver/shaders/spirv/spirv_disassemble.cpp @@ -1204,10 +1204,6 @@ struct SPVInstruction case spv::OpDPdxCoarse: case spv::OpDPdyCoarse: case spv::OpFwidthCoarse: - case spv::OpEmitVertex: - case spv::OpEmitStreamVertex: - case spv::OpEndPrimitive: - case spv::OpEndStreamPrimitive: case spv::OpImageSparseTexelsResident: case spv::OpImage: case spv::OpSampledImage: @@ -1286,6 +1282,13 @@ struct SPVInstruction return ret; } + case spv::OpEmitVertex: + case spv::OpEmitStreamVertex: + case spv::OpEndPrimitive: + case spv::OpEndStreamPrimitive: + { + return ToStr::Get(opcode) + "()"; + } case spv::OpVectorShuffle: { RDCASSERT(op); @@ -4538,10 +4541,6 @@ void ParseSPIRV(uint32_t *spirv, size_t spirvLength, SPVModule &module) case spv::OpDPdxCoarse: case spv::OpDPdyCoarse: case spv::OpFwidthCoarse: - case spv::OpEmitVertex: - case spv::OpEmitStreamVertex: - case spv::OpEndPrimitive: - case spv::OpEndStreamPrimitive: case spv::OpImageSparseTexelsResident: case spv::OpImage: case spv::OpSampledImage: @@ -4591,6 +4590,17 @@ void ParseSPIRV(uint32_t *spirv, size_t spirvLength, SPVModule &module) curBlock->instructions.push_back(&op); break; } + case spv::OpEmitVertex: + case spv::OpEmitStreamVertex: + case spv::OpEndPrimitive: + case spv::OpEndStreamPrimitive: + { + // these don't emit an ID, don't take a type, they are just + // single operations + op.op = new SPVOperation(); + op.op->type = NULL; + break; + } case spv::OpVectorShuffle: { SPVInstruction *typeInst = module.GetByID(spirv[it+1]);