mirror of
https://github.com/KhronosGroup/SPIRV-Tools
synced 2024-11-22 19:50:05 +00:00
Make capabilities a bitfield in opcode/operand tables.
This commit is contained in:
parent
4170ceca12
commit
205408bae4
@ -45,20 +45,14 @@ namespace {
|
||||
spv_opcode_desc_t opcodeTableEntries[] = {
|
||||
#define EmptyList {}
|
||||
#define List(...) {__VA_ARGS__}
|
||||
#define Capability(X) Capability##X
|
||||
#define CapabilityNone -1
|
||||
// TODO(dneto): Some things can be enabled by one of two different capabilities.
|
||||
// The capabilities field in spv_operand_desc_t can't handle that yet.
|
||||
// Maybe have to make it a 64-bit mask. Currently there are 54 distinct
|
||||
// capabilities.
|
||||
// For now, just select the first one. This must be fixed for the validator
|
||||
// to work.
|
||||
#define Capability2(X,Y) Capability##X
|
||||
#define Capability(X) SPV_CAPABILITY_AS_MASK(Capability##X)
|
||||
#define Capability2(X,Y) Capability(X)|Capability(Y)
|
||||
#define CapabilityNone 0 // Needed so Capability(None) still expands to valid syntax.
|
||||
#define Instruction(Name,HasResult,HasType,NumLogicalOperands,NumCapabilities,CapabilityRequired,IsVariable,LogicalArgsList) \
|
||||
{ #Name, \
|
||||
Op##Name, \
|
||||
((CapabilityRequired != CapabilityNone ? SPV_OPCODE_FLAGS_CAPABILITIES : 0)), \
|
||||
uint32_t(CapabilityRequired), \
|
||||
(NumCapabilities) ? SPV_OPCODE_FLAGS_CAPABILITIES : 0, \
|
||||
(NumCapabilities) ? (CapabilityRequired) : 0, \
|
||||
0, {}, /* Filled in later. Operand list, including result id and type id, if needed */ \
|
||||
HasResult, \
|
||||
HasType, \
|
||||
@ -67,6 +61,7 @@ spv_opcode_desc_t opcodeTableEntries[] = {
|
||||
#undef EmptyList
|
||||
#undef List
|
||||
#undef Capability
|
||||
#undef Capability2
|
||||
#undef CapabilityNone
|
||||
#undef Instruction
|
||||
};
|
||||
|
@ -56,37 +56,37 @@ static const spv_operand_desc_t executionModelEntries[] = {
|
||||
{"Vertex",
|
||||
ExecutionModelVertex,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityShader,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityShader),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"TessellationControl",
|
||||
ExecutionModelTessellationControl,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityTessellation,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityTessellation),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"TessellationEvaluation",
|
||||
ExecutionModelTessellationEvaluation,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityTessellation,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityTessellation),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"Geometry",
|
||||
ExecutionModelGeometry,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityGeometry,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityGeometry),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"Fragment",
|
||||
ExecutionModelFragment,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityShader,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityShader),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"GLCompute",
|
||||
ExecutionModelGLCompute,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityShader,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityShader),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"Kernel",
|
||||
ExecutionModelKernel,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityKernel,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityKernel),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
};
|
||||
|
||||
@ -99,12 +99,12 @@ static const spv_operand_desc_t addressingModelEntries[] = {
|
||||
{"Physical32",
|
||||
AddressingModelPhysical32,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityAddresses,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityAddresses),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"Physical64",
|
||||
AddressingModelPhysical64,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityAddresses,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityAddresses),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
};
|
||||
|
||||
@ -112,17 +112,17 @@ static const spv_operand_desc_t memoryModelEntries[] = {
|
||||
{"Simple",
|
||||
MemoryModelSimple,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityShader,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityShader),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"GLSL450",
|
||||
MemoryModelGLSL450,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityShader,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityShader),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"OpenCL",
|
||||
MemoryModelOpenCL,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityKernel,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityKernel),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
};
|
||||
|
||||
@ -165,7 +165,7 @@ static const spv_operand_desc_t executionModeEntries[] = {
|
||||
{"LocalSizeHint",
|
||||
ExecutionModeLocalSizeHint,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityKernel,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityKernel),
|
||||
{SPV_OPERAND_TYPE_LITERAL_NUMBER, SPV_OPERAND_TYPE_LITERAL_NUMBER,
|
||||
SPV_OPERAND_TYPE_LITERAL_NUMBER, SPV_OPERAND_TYPE_NONE}},
|
||||
{ExecMode0(InputPoints, Geometry)},
|
||||
@ -174,9 +174,8 @@ static const spv_operand_desc_t executionModeEntries[] = {
|
||||
{"InputTriangles",
|
||||
ExecutionModeInputTriangles,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
// TODO(dneto): Capabilities are defined as sequential numbers instead of
|
||||
// bit masks. They cannot be meaningfully combined with a bitwise OR.
|
||||
CapabilityGeometry | CapabilityTessellation,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityGeometry) |
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityTessellation),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{ExecMode0(InputTrianglesAdjacency, Geometry)},
|
||||
{ExecMode0(InputQuads, Tessellation)},
|
||||
@ -184,9 +183,8 @@ static const spv_operand_desc_t executionModeEntries[] = {
|
||||
{"OutputVertices",
|
||||
ExecutionModeOutputVertices,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
// TODO(dneto): Capabilities are defined as sequential numbers instead of
|
||||
// bit masks. They cannot be meaningfully combined with a bitwise OR.
|
||||
CapabilityGeometry | CapabilityTessellation,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityGeometry) |
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityTessellation),
|
||||
{SPV_OPERAND_TYPE_LITERAL_NUMBER, SPV_OPERAND_TYPE_NONE}},
|
||||
{ExecMode0(OutputPoints, Geometry)},
|
||||
{ExecMode0(OutputLineStrip, Geometry)},
|
||||
@ -208,17 +206,17 @@ static const spv_operand_desc_t storageClassEntries[] = {
|
||||
{"Input",
|
||||
StorageClassInput,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityShader,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityShader),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"Uniform",
|
||||
StorageClassUniform,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityShader,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityShader),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"Output",
|
||||
StorageClassOutput,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityShader,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityShader),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"WorkgroupLocal",
|
||||
StorageClassWorkgroupLocal,
|
||||
@ -233,7 +231,7 @@ static const spv_operand_desc_t storageClassEntries[] = {
|
||||
{"PrivateGlobal",
|
||||
StorageClassPrivateGlobal,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityShader,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityShader),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"Function",
|
||||
StorageClassFunction,
|
||||
@ -243,17 +241,17 @@ static const spv_operand_desc_t storageClassEntries[] = {
|
||||
{"Generic",
|
||||
StorageClassGeneric,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityKernel,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityKernel),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"PushConstant",
|
||||
StorageClassPushConstant,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityShader,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityShader),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"AtomicCounter",
|
||||
StorageClassAtomicCounter,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityShader,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityShader),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"Image",
|
||||
StorageClassImage,
|
||||
@ -270,18 +268,18 @@ static const spv_operand_desc_t dimensionalityEntries[] = {
|
||||
{"Cube",
|
||||
DimCube,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityShader,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityShader),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"Rect",
|
||||
DimRect,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityShader,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityShader),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"Buffer", DimBuffer, SPV_OPCODE_FLAGS_NONE, 0, {SPV_OPERAND_TYPE_NONE}},
|
||||
{"InputTarget",
|
||||
DimInputTarget,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityInputTarget,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityInputTarget),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
};
|
||||
|
||||
@ -289,27 +287,27 @@ static const spv_operand_desc_t samplerAddressingModeEntries[] = {
|
||||
{"None",
|
||||
SamplerAddressingModeNone,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityKernel,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityKernel),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"ClampToEdge",
|
||||
SamplerAddressingModeClampToEdge,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityKernel,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityKernel),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"Clamp",
|
||||
SamplerAddressingModeClamp,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityKernel,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityKernel),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"Repeat",
|
||||
SamplerAddressingModeRepeat,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityKernel,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityKernel),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"RepeatMirrored",
|
||||
SamplerAddressingModeRepeatMirrored,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityKernel,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityKernel),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
};
|
||||
|
||||
@ -317,12 +315,12 @@ static const spv_operand_desc_t samplerFilterModeEntries[] = {
|
||||
{"Nearest",
|
||||
SamplerFilterModeNearest,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityKernel,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityKernel),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"Linear",
|
||||
SamplerFilterModeLinear,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityKernel,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityKernel),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
};
|
||||
|
||||
@ -332,8 +330,8 @@ static const spv_operand_desc_t samplerImageFormatEntries[] = {
|
||||
// capability instead.
|
||||
#define CASE(NAME) \
|
||||
{ \
|
||||
#NAME, ImageFormat##NAME, SPV_OPCODE_FLAGS_CAPABILITIES, CapabilityShader, \
|
||||
{ \
|
||||
#NAME, ImageFormat##NAME, SPV_OPCODE_FLAGS_CAPABILITIES, \
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityShader), { \
|
||||
SPV_OPERAND_TYPE_NONE \
|
||||
} \
|
||||
}
|
||||
@ -394,14 +392,15 @@ static const spv_operand_desc_t imageOperandEntries[] = {
|
||||
#define ID SPV_OPERAND_TYPE_ID
|
||||
#define NONE SPV_OPERAND_TYPE_NONE
|
||||
{"None", spv::ImageOperandsMaskNone, SPV_OPCODE_FLAGS_NONE, 0, {NONE}},
|
||||
{CASE_CAP(Bias, CapabilityShader), {ID, NONE}},
|
||||
{CASE_CAP(Bias, SPV_CAPABILITY_AS_MASK(CapabilityShader)), {ID, NONE}},
|
||||
{CASE(Lod), {ID, NONE}},
|
||||
{CASE(Grad), {ID, ID, NONE}},
|
||||
{CASE(ConstOffset), {ID, NONE}},
|
||||
{CASE_CAP(Offset, CapabilityImageGatherExtended), {ID, NONE}},
|
||||
{CASE_CAP(Offset, SPV_CAPABILITY_AS_MASK(CapabilityImageGatherExtended)),
|
||||
{ID, NONE}},
|
||||
{CASE(ConstOffsets), {ID, NONE}},
|
||||
{CASE(Sample), {ID, NONE}},
|
||||
{CASE_CAP(MinLod, CapabilityMinLod), {ID, NONE}},
|
||||
{CASE_CAP(MinLod, SPV_CAPABILITY_AS_MASK(CapabilityMinLod)), {ID, NONE}},
|
||||
#undef CASE
|
||||
#undef CASE_CAP
|
||||
#undef ID
|
||||
@ -417,27 +416,27 @@ static const spv_operand_desc_t fpFastMathModeEntries[] = {
|
||||
{"NotNaN",
|
||||
FPFastMathModeNotNaNMask,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityKernel,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityKernel),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"NotInf",
|
||||
FPFastMathModeNotInfMask,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityKernel,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityKernel),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"NSZ",
|
||||
FPFastMathModeNSZMask,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityKernel,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityKernel),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"AllowRecip",
|
||||
FPFastMathModeAllowRecipMask,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityKernel,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityKernel),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"Fast",
|
||||
FPFastMathModeFastMask,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityKernel,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityKernel),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
};
|
||||
|
||||
@ -445,22 +444,22 @@ static const spv_operand_desc_t fpRoundingModeEntries[] = {
|
||||
{"RTE",
|
||||
FPRoundingModeRTE,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityKernel,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityKernel),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"RTZ",
|
||||
FPRoundingModeRTZ,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityKernel,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityKernel),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"RTP",
|
||||
FPRoundingModeRTP,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityKernel,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityKernel),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"RTN",
|
||||
FPRoundingModeRTN,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityKernel,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityKernel),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
};
|
||||
|
||||
@ -468,12 +467,12 @@ static const spv_operand_desc_t linkageTypeEntries[] = {
|
||||
{"Export",
|
||||
LinkageTypeExport,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityLinkage,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityLinkage),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"Import",
|
||||
LinkageTypeImport,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityLinkage,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityLinkage),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
};
|
||||
|
||||
@ -481,17 +480,17 @@ static const spv_operand_desc_t accessQualifierEntries[] = {
|
||||
{"ReadOnly",
|
||||
AccessQualifierReadOnly,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityKernel,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityKernel),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"WriteOnly",
|
||||
AccessQualifierWriteOnly,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityKernel,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityKernel),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"ReadWrite",
|
||||
AccessQualifierReadWrite,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityKernel,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityKernel),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
};
|
||||
|
||||
@ -499,42 +498,42 @@ static const spv_operand_desc_t functionParameterAttributeEntries[] = {
|
||||
{"Zext",
|
||||
FunctionParameterAttributeZext,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityKernel,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityKernel),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"Sext",
|
||||
FunctionParameterAttributeSext,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityKernel,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityKernel),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"ByVal",
|
||||
FunctionParameterAttributeByVal,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityKernel,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityKernel),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"Sret",
|
||||
FunctionParameterAttributeSret,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityKernel,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityKernel),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"NoAlias",
|
||||
FunctionParameterAttributeNoAlias,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityKernel,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityKernel),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"NoCapture",
|
||||
FunctionParameterAttributeNoCapture,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityKernel,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityKernel),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"NoWrite",
|
||||
FunctionParameterAttributeNoWrite,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityKernel,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityKernel),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"NoReadWrite",
|
||||
FunctionParameterAttributeNoReadWrite,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityKernel,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityKernel),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
};
|
||||
|
||||
@ -542,99 +541,99 @@ static const spv_operand_desc_t decorationEntries[] = {
|
||||
{"RelaxedPrecision",
|
||||
DecorationRelaxedPrecision,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityShader,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityShader),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{
|
||||
"SpecId",
|
||||
DecorationSpecId,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityShader,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityShader),
|
||||
{SPV_OPERAND_TYPE_LITERAL_NUMBER},
|
||||
},
|
||||
{"Block",
|
||||
DecorationBlock,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityShader,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityShader),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"BufferBlock",
|
||||
DecorationBufferBlock,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityShader,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityShader),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"RowMajor",
|
||||
DecorationRowMajor,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityMatrix,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityMatrix),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"ColMajor",
|
||||
DecorationColMajor,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityMatrix,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityMatrix),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"ArrayStride",
|
||||
DecorationArrayStride,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityShader,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityShader),
|
||||
{SPV_OPERAND_TYPE_LITERAL_NUMBER, SPV_OPERAND_TYPE_NONE}},
|
||||
{"MatrixStride",
|
||||
DecorationMatrixStride,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityShader,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityShader),
|
||||
{SPV_OPERAND_TYPE_LITERAL_NUMBER, SPV_OPERAND_TYPE_NONE}},
|
||||
{"GLSLShared",
|
||||
DecorationGLSLShared,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityShader,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityShader),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"GLSLPacked",
|
||||
DecorationGLSLPacked,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityShader,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityShader),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"CPacked",
|
||||
DecorationCPacked,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityKernel,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityKernel),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"BuiltIn",
|
||||
DecorationBuiltIn,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityShader,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityShader),
|
||||
{SPV_OPERAND_TYPE_BUILT_IN, SPV_OPERAND_TYPE_NONE}},
|
||||
{"Smooth",
|
||||
DecorationSmooth,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityShader,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityShader),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"NoPerspective",
|
||||
DecorationNoPerspective,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityShader,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityShader),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"Flat",
|
||||
DecorationFlat,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityShader,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityShader),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"Patch",
|
||||
DecorationPatch,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityTessellation,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityTessellation),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"Centroid",
|
||||
DecorationCentroid,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityShader,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityShader),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"Sample",
|
||||
DecorationSample,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityShader,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityShader),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"Invariant",
|
||||
DecorationInvariant,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityShader,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityShader),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"Restrict",
|
||||
DecorationRestrict,
|
||||
@ -654,7 +653,7 @@ static const spv_operand_desc_t decorationEntries[] = {
|
||||
{"Constant",
|
||||
DecorationConstant,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityKernel,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityKernel),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"Coherent",
|
||||
DecorationCoherent,
|
||||
@ -674,42 +673,42 @@ static const spv_operand_desc_t decorationEntries[] = {
|
||||
{"Uniform",
|
||||
DecorationUniform,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityShader,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityShader),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"SaturatedConversion",
|
||||
DecorationSaturatedConversion,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityKernel,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityKernel),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"Stream",
|
||||
DecorationStream,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityGeometry,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityGeometry),
|
||||
{SPV_OPERAND_TYPE_LITERAL_NUMBER, SPV_OPERAND_TYPE_NONE}},
|
||||
{"Location",
|
||||
DecorationLocation,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityShader,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityShader),
|
||||
{SPV_OPERAND_TYPE_LITERAL_NUMBER, SPV_OPERAND_TYPE_NONE}},
|
||||
{"Component",
|
||||
DecorationComponent,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityShader,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityShader),
|
||||
{SPV_OPERAND_TYPE_LITERAL_NUMBER, SPV_OPERAND_TYPE_NONE}},
|
||||
{"Index",
|
||||
DecorationIndex,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityShader,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityShader),
|
||||
{SPV_OPERAND_TYPE_LITERAL_NUMBER, SPV_OPERAND_TYPE_NONE}},
|
||||
{"Binding",
|
||||
DecorationBinding,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityShader,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityShader),
|
||||
{SPV_OPERAND_TYPE_LITERAL_NUMBER, SPV_OPERAND_TYPE_NONE}},
|
||||
{"DescriptorSet",
|
||||
DecorationDescriptorSet,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityShader,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityShader),
|
||||
{SPV_OPERAND_TYPE_LITERAL_NUMBER, SPV_OPERAND_TYPE_NONE}},
|
||||
{"Offset",
|
||||
DecorationOffset,
|
||||
@ -719,49 +718,50 @@ static const spv_operand_desc_t decorationEntries[] = {
|
||||
{"XfbBuffer",
|
||||
DecorationXfbBuffer,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityShader,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityShader),
|
||||
{SPV_OPERAND_TYPE_LITERAL_NUMBER, SPV_OPERAND_TYPE_NONE}},
|
||||
{"XfbStride",
|
||||
DecorationXfbStride,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityShader,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityShader),
|
||||
{SPV_OPERAND_TYPE_LITERAL_NUMBER, SPV_OPERAND_TYPE_NONE}},
|
||||
{"FuncParamAttr",
|
||||
DecorationFuncParamAttr,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityKernel,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityKernel),
|
||||
{SPV_OPERAND_TYPE_FUNCTION_PARAMETER_ATTRIBUTE, SPV_OPERAND_TYPE_NONE}},
|
||||
{"FPRoundingMode",
|
||||
DecorationFPRoundingMode,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityKernel,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityKernel),
|
||||
{SPV_OPERAND_TYPE_FP_ROUNDING_MODE, SPV_OPERAND_TYPE_NONE}},
|
||||
{"FPFastMathMode",
|
||||
DecorationFPFastMathMode,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityKernel,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityKernel),
|
||||
{SPV_OPERAND_TYPE_FP_FAST_MATH_MODE, SPV_OPERAND_TYPE_NONE}},
|
||||
{"LinkageAttributes",
|
||||
DecorationLinkageAttributes,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityLinkage,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityLinkage),
|
||||
{SPV_OPERAND_TYPE_LITERAL_STRING, SPV_OPERAND_TYPE_LINKAGE_TYPE,
|
||||
SPV_OPERAND_TYPE_NONE}},
|
||||
{"NoContraction",
|
||||
DecorationNoContraction,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityShader,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityShader),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"InputTargetIndex",
|
||||
DecorationInputTargetIndex,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityShader, // TODO(dneto): Should this be CapabilityInputTarget?
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityShader), // TODO(dneto): Should this be
|
||||
// CapabilityInputTarget?
|
||||
{SPV_OPERAND_TYPE_NONE}}, // TODO(dneto): Should this have a literal
|
||||
// number argument?
|
||||
{"Alignment",
|
||||
DecorationAlignment,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityKernel,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityKernel),
|
||||
{SPV_OPERAND_TYPE_LITERAL_NUMBER, SPV_OPERAND_TYPE_NONE}},
|
||||
};
|
||||
|
||||
@ -769,117 +769,119 @@ static const spv_operand_desc_t builtInEntries[] = {
|
||||
{"Position",
|
||||
BuiltInPosition,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityShader,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityShader),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"PointSize",
|
||||
BuiltInPointSize,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityShader,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityShader),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"ClipDistance",
|
||||
BuiltInClipDistance,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityShader,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityShader),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"CullDistance",
|
||||
BuiltInCullDistance,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityShader,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityShader),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"VertexId",
|
||||
BuiltInVertexId,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityShader,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityShader),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"InstanceId",
|
||||
BuiltInInstanceId,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityShader,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityShader),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"PrimitiveId",
|
||||
BuiltInPrimitiveId,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityGeometry | CapabilityTessellation,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityGeometry) |
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityTessellation),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"InvocationId",
|
||||
BuiltInInvocationId,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityGeometry | CapabilityTessellation,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityGeometry) |
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityTessellation),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"Layer",
|
||||
BuiltInLayer,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityGeometry,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityGeometry),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"ViewportIndex",
|
||||
BuiltInViewportIndex,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityGeometry,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityGeometry),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"TessLevelOuter",
|
||||
BuiltInTessLevelOuter,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityTessellation,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityTessellation),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"TessLevelInner",
|
||||
BuiltInTessLevelInner,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityTessellation,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityTessellation),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"TessCoord",
|
||||
BuiltInTessCoord,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityTessellation,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityTessellation),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"PatchVertices",
|
||||
BuiltInPatchVertices,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityTessellation,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityTessellation),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"FragCoord",
|
||||
BuiltInFragCoord,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityShader,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityShader),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"PointCoord",
|
||||
BuiltInPointCoord,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityShader,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityShader),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"FrontFacing",
|
||||
BuiltInFrontFacing,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityShader,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityShader),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"SampleId",
|
||||
BuiltInSampleId,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityShader,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityShader),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"SamplePosition",
|
||||
BuiltInSamplePosition,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityShader,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityShader),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"SampleMask",
|
||||
BuiltInSampleMask,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityShader,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityShader),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"FragColor",
|
||||
BuiltInFragColor,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityShader,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityShader),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"FragDepth",
|
||||
BuiltInFragDepth,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityShader,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityShader),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"HelperInvocation",
|
||||
BuiltInHelperInvocation,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityShader,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityShader),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"NumWorkgroups",
|
||||
BuiltInNumWorkgroups,
|
||||
@ -909,77 +911,77 @@ static const spv_operand_desc_t builtInEntries[] = {
|
||||
{"LocalInvocationIndex",
|
||||
BuiltInLocalInvocationIndex,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityShader,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityShader),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"WorkDim",
|
||||
BuiltInWorkDim,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityKernel,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityKernel),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"GlobalSize",
|
||||
BuiltInGlobalSize,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityKernel,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityKernel),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"EnqueuedWorkgroupSize",
|
||||
BuiltInEnqueuedWorkgroupSize,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityKernel,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityKernel),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"GlobalOffset",
|
||||
BuiltInGlobalOffset,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityKernel,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityKernel),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"GlobalLinearId",
|
||||
BuiltInGlobalLinearId,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityKernel,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityKernel),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"WorkgroupLinearId",
|
||||
BuiltInWorkgroupLinearId,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityKernel,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityKernel),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"SubgroupSize",
|
||||
BuiltInSubgroupSize,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityKernel,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityKernel),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"SubgroupMaxSize",
|
||||
BuiltInSubgroupMaxSize,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityKernel,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityKernel),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"NumSubgroups",
|
||||
BuiltInNumSubgroups,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityKernel,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityKernel),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"NumEnqueuedSubgroups",
|
||||
BuiltInNumEnqueuedSubgroups,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityKernel,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityKernel),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"SubgroupId",
|
||||
BuiltInSubgroupId,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityKernel,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityKernel),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"SubgroupLocalInvocationId",
|
||||
BuiltInSubgroupLocalInvocationId,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityKernel,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityKernel),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"VertexIndex",
|
||||
BuiltInVertexIndex,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityShader,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityShader),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"InstanceIndex",
|
||||
BuiltInInstanceIndex,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityShader,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityShader),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
};
|
||||
|
||||
@ -1079,7 +1081,7 @@ static const spv_operand_desc_t memorySemanticsEntries[] = {
|
||||
{"UniformMemory",
|
||||
MemorySemanticsUniformMemoryMask,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityShader,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityShader),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"SubgroupMemory",
|
||||
MemorySemanticsSubgroupMemoryMask,
|
||||
@ -1099,7 +1101,7 @@ static const spv_operand_desc_t memorySemanticsEntries[] = {
|
||||
{"AtomicCounterMemory",
|
||||
MemorySemanticsAtomicCounterMemoryMask,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityShader,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityShader),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{
|
||||
"ImageMemory",
|
||||
@ -1165,17 +1167,17 @@ static const spv_operand_desc_t groupOperationEntries[] = {
|
||||
{"Reduce",
|
||||
GroupOperationReduce,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityKernel,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityKernel),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"InclusiveScan",
|
||||
GroupOperationInclusiveScan,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityKernel,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityKernel),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"ExclusiveScan",
|
||||
GroupOperationExclusiveScan,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityKernel,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityKernel),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
};
|
||||
|
||||
@ -1183,17 +1185,17 @@ static const spv_operand_desc_t kernelKernelEnqueueFlagssEntries[] = {
|
||||
{"NoWait",
|
||||
KernelEnqueueFlagsNoWait,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityKernel,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityKernel),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"WaitKernel",
|
||||
KernelEnqueueFlagsWaitKernel,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityKernel,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityKernel),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
{"WaitWorkGroup",
|
||||
KernelEnqueueFlagsWaitWorkGroup,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityKernel,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityKernel),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
};
|
||||
|
||||
@ -1206,7 +1208,7 @@ static const spv_operand_desc_t kernelProfilingInfoEntries[] = {
|
||||
{"CmdExecTime",
|
||||
KernelProfilingInfoCmdExecTimeMask,
|
||||
SPV_OPCODE_FLAGS_CAPABILITIES,
|
||||
CapabilityKernel,
|
||||
SPV_CAPABILITY_AS_MASK(CapabilityKernel),
|
||||
{SPV_OPERAND_TYPE_NONE}},
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user