Implement GL_NV_shader_subgroup_partitioned

This commit is contained in:
Jeff Bolz
2018-03-29 22:52:17 -05:00
parent 6b1ede4124
commit 2abe9a4d34
15 changed files with 4659 additions and 9 deletions

24
SPIRV/doc.cpp Normal file → Executable file
View File

@@ -728,17 +728,22 @@ const char* ScopeString(int mem)
}
}
const int GroupOperationCeiling = 4;
const int GroupOperationCeiling = 9;
const char* GroupOperationString(int gop)
{
switch (gop)
{
case 0: return "Reduce";
case 1: return "InclusiveScan";
case 2: return "ExclusiveScan";
case 3: return "ClusteredReduce";
case GroupOperationReduce: return "Reduce";
case GroupOperationInclusiveScan: return "InclusiveScan";
case GroupOperationExclusiveScan: return "ExclusiveScan";
case GroupOperationClusteredReduce: return "ClusteredReduce";
#ifdef NV_EXTENSIONS
case GroupOperationPartitionedReduceNV: return "PartitionedReduceNV";
case GroupOperationPartitionedInclusiveScanNV: return "PartitionedInclusiveScanNV";
case GroupOperationPartitionedExclusiveScanNV: return "PartitionedExclusiveScanNV";
#endif
case GroupOperationCeiling:
default: return "Bad";
@@ -876,6 +881,7 @@ const char* CapabilityString(int info)
case 5255: return "ShaderViewportMaskNV";
case 5259: return "ShaderStereoViewNV";
case 5260: return "PerViewAttributesNV";
case 5297: return "GroupNonUniformPartitionedNV";
#endif
case 5265: return "FragmentFullyCoveredEXT";
@@ -1272,6 +1278,9 @@ const char* OpcodeString(int op)
case OpDecorateStringGOOGLE: return "OpDecorateStringGOOGLE";
case OpMemberDecorateStringGOOGLE: return "OpMemberDecorateStringGOOGLE";
#ifdef NV_EXTENSIONS
case 5296: return "OpGroupNonUniformPartitionNV";
#endif
case OpcodeCeiling:
default:
return "Bad";
@@ -3138,6 +3147,11 @@ void Parameterize()
InstructionDesc[OpFragmentFetchAMD].operands.push(OperandId, "'Coordinate'");
InstructionDesc[OpFragmentFetchAMD].operands.push(OperandId, "'Fragment Index'");
#endif
#ifdef NV_EXTENSIONS
InstructionDesc[OpGroupNonUniformPartitionNV].capabilities.push_back(CapabilityGroupNonUniformPartitionedNV);
InstructionDesc[OpGroupNonUniformPartitionNV].operands.push(OperandId, "X");
#endif
}
}; // end spv namespace