Merge pull request #3023 from pmistryNV/GL_EXT_mesh_shader

Make OpEmitMeshTasksEXT a terminal instruction
This commit is contained in:
Greg Fischer
2022-09-09 11:44:17 -06:00
committed by GitHub
5 changed files with 158 additions and 158 deletions

View File

@@ -8597,6 +8597,8 @@ spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv::
if(taskPayloadID)
operands.push_back(taskPayloadID);
builder.createNoResultOp(spv::OpEmitMeshTasksEXT, operands);
// Make it a terminating instruction in the current block
builder.createAndSetNoPredecessorBlock("post-OpEmitMeshTasksEXT");
return 0;
case glslang::EOpSetMeshOutputsEXT:
builder.createNoResultOp(spv::OpSetMeshOutputsEXT, operands);

View File

@@ -844,6 +844,7 @@ public:
void createConditionalBranch(Id condition, Block* thenBlock, Block* elseBlock);
void createLoopMerge(Block* mergeBlock, Block* continueBlock, unsigned int control,
const std::vector<unsigned int>& operands);
void createAndSetNoPredecessorBlock(const char*);
// Sets to generate opcode for specialization constants.
void setToSpecConstCodeGenMode() { generatingOpCodeForSpecConst = true; }
@@ -863,7 +864,6 @@ public:
void remapDynamicSwizzle();
void transferAccessChainSwizzle(bool dynamic);
void simplifyAccessChainSwizzle();
void createAndSetNoPredecessorBlock(const char*);
void createSelectionMerge(Block* mergeBlock, unsigned int control);
void dumpSourceInstructions(std::vector<unsigned int>&) const;
void dumpSourceInstructions(const spv::Id fileId, const std::string& text, std::vector<unsigned int>&) const;