glslang/SPIRV/spirv.h

1305 lines
38 KiB
C++

/*
** Copyright (c) 2015 The Khronos Group Inc.
**
** Permission is hereby granted, free of charge, to any person obtaining a copy
** of this software and/or associated documentation files (the "Materials"),
** to deal in the Materials without restriction, including without limitation
** the rights to use, copy, modify, merge, publish, distribute, sublicense,
** and/or sell copies of the Materials, and to permit persons to whom the
** Materials are furnished to do so, subject to the following conditions:
**
** The above copyright notice and this permission notice shall be included in
** all copies or substantial portions of the Materials.
**
** MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS
** STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND
** HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/
**
** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
** OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
** FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
** THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
** LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
** FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS
** IN THE MATERIALS.
*/
/*
** This header is automatically generated by the same tool that creates
** the Binary Section of the SPIR-V specification.
*/
/*
** Specification revision 30.
** Enumeration tokens for SPIR-V, in three styles: C, C++, generic.
** - C++ will have the tokens in the "spv" name space, with no prefix.
** - C will have tokens with as "Spv" prefix.
**
** Some tokens act like mask values, which can be OR'd together,
** while others are mutually exclusive. The mask-like ones have
** "Mask" in their name, and a parallel enum that has the shift
** amount (1 << x) for each corresponding enumerant.
*/
#ifndef spirv_H
#define spirv_H
#ifdef __cplusplus
namespace spv {
const int MagicNumber = 0x07230203;
const int Version = 99;
typedef unsigned int Id;
const unsigned int OpCodeMask = 0xFFFF;
const unsigned int WordCountShift = 16;
enum SourceLanguage {
SourceLanguageUnknown = 0,
SourceLanguageESSL = 1,
SourceLanguageGLSL = 2,
SourceLanguageOpenCL = 3,
};
enum ExecutionModel {
ExecutionModelVertex = 0,
ExecutionModelTessellationControl = 1,
ExecutionModelTessellationEvaluation = 2,
ExecutionModelGeometry = 3,
ExecutionModelFragment = 4,
ExecutionModelGLCompute = 5,
ExecutionModelKernel = 6,
};
enum AddressingModel {
AddressingModelLogical = 0,
AddressingModelPhysical32 = 1,
AddressingModelPhysical64 = 2,
};
enum MemoryModel {
MemoryModelSimple = 0,
MemoryModelGLSL450 = 1,
MemoryModelOpenCL12 = 2,
MemoryModelOpenCL20 = 3,
MemoryModelOpenCL21 = 4,
};
enum ExecutionMode {
ExecutionModeInvocations = 0,
ExecutionModeSpacingEqual = 1,
ExecutionModeSpacingFractionalEven = 2,
ExecutionModeSpacingFractionalOdd = 3,
ExecutionModeVertexOrderCw = 4,
ExecutionModeVertexOrderCcw = 5,
ExecutionModePixelCenterInteger = 6,
ExecutionModeOriginUpperLeft = 7,
ExecutionModeEarlyFragmentTests = 8,
ExecutionModePointMode = 9,
ExecutionModeXfb = 10,
ExecutionModeDepthReplacing = 11,
ExecutionModeDepthAny = 12,
ExecutionModeDepthGreater = 13,
ExecutionModeDepthLess = 14,
ExecutionModeDepthUnchanged = 15,
ExecutionModeLocalSize = 16,
ExecutionModeLocalSizeHint = 17,
ExecutionModeInputPoints = 18,
ExecutionModeInputLines = 19,
ExecutionModeInputLinesAdjacency = 20,
ExecutionModeInputTriangles = 21,
ExecutionModeInputTrianglesAdjacency = 22,
ExecutionModeInputQuads = 23,
ExecutionModeInputIsolines = 24,
ExecutionModeOutputVertices = 25,
ExecutionModeOutputPoints = 26,
ExecutionModeOutputLineStrip = 27,
ExecutionModeOutputTriangleStrip = 28,
ExecutionModeVecTypeHint = 29,
ExecutionModeContractionOff = 30,
};
enum StorageClass {
StorageClassUniformConstant = 0,
StorageClassInput = 1,
StorageClassUniform = 2,
StorageClassOutput = 3,
StorageClassWorkgroupLocal = 4,
StorageClassWorkgroupGlobal = 5,
StorageClassPrivateGlobal = 6,
StorageClassFunction = 7,
StorageClassGeneric = 8,
StorageClassPrivate = 9,
StorageClassAtomicCounter = 10,
};
enum Dim {
Dim1D = 0,
Dim2D = 1,
Dim3D = 2,
DimCube = 3,
DimRect = 4,
DimBuffer = 5,
};
enum SamplerAddressingMode {
SamplerAddressingModeNone = 0,
SamplerAddressingModeClampToEdge = 1,
SamplerAddressingModeClamp = 2,
SamplerAddressingModeRepeat = 3,
SamplerAddressingModeRepeatMirrored = 4,
};
enum SamplerFilterMode {
SamplerFilterModeNearest = 0,
SamplerFilterModeLinear = 1,
};
enum FPFastMathModeShift {
FPFastMathModeNotNaNShift = 0,
FPFastMathModeNotInfShift = 1,
FPFastMathModeNSZShift = 2,
FPFastMathModeAllowRecipShift = 3,
FPFastMathModeFastShift = 4,
};
enum FPFastMathModeMask {
FPFastMathModeMaskNone = 0,
FPFastMathModeNotNaNMask = 0x00000001,
FPFastMathModeNotInfMask = 0x00000002,
FPFastMathModeNSZMask = 0x00000004,
FPFastMathModeAllowRecipMask = 0x00000008,
FPFastMathModeFastMask = 0x00000010,
};
enum FPRoundingMode {
FPRoundingModeRTE = 0,
FPRoundingModeRTZ = 1,
FPRoundingModeRTP = 2,
FPRoundingModeRTN = 3,
};
enum LinkageType {
LinkageTypeExport = 0,
LinkageTypeImport = 1,
};
enum AccessQualifier {
AccessQualifierReadOnly = 0,
AccessQualifierWriteOnly = 1,
AccessQualifierReadWrite = 2,
};
enum FunctionParameterAttribute {
FunctionParameterAttributeZext = 0,
FunctionParameterAttributeSext = 1,
FunctionParameterAttributeByVal = 2,
FunctionParameterAttributeSret = 3,
FunctionParameterAttributeNoAlias = 4,
FunctionParameterAttributeNoCapture = 5,
FunctionParameterAttributeSVM = 6,
FunctionParameterAttributeNoWrite = 7,
FunctionParameterAttributeNoReadWrite = 8,
};
enum Decoration {
DecorationPrecisionLow = 0,
DecorationPrecisionMedium = 1,
DecorationPrecisionHigh = 2,
DecorationBlock = 3,
DecorationBufferBlock = 4,
DecorationRowMajor = 5,
DecorationColMajor = 6,
DecorationGLSLShared = 7,
DecorationGLSLStd140 = 8,
DecorationGLSLStd430 = 9,
DecorationGLSLPacked = 10,
DecorationSmooth = 11,
DecorationNoperspective = 12,
DecorationFlat = 13,
DecorationPatch = 14,
DecorationCentroid = 15,
DecorationSample = 16,
DecorationInvariant = 17,
DecorationRestrict = 18,
DecorationAliased = 19,
DecorationVolatile = 20,
DecorationConstant = 21,
DecorationCoherent = 22,
DecorationNonwritable = 23,
DecorationNonreadable = 24,
DecorationUniform = 25,
DecorationNoStaticUse = 26,
DecorationCPacked = 27,
DecorationSaturatedConversion = 28,
DecorationStream = 29,
DecorationLocation = 30,
DecorationComponent = 31,
DecorationIndex = 32,
DecorationBinding = 33,
DecorationDescriptorSet = 34,
DecorationOffset = 35,
DecorationAlignment = 36,
DecorationXfbBuffer = 37,
DecorationStride = 38,
DecorationBuiltIn = 39,
DecorationFuncParamAttr = 40,
DecorationFPRoundingMode = 41,
DecorationFPFastMathMode = 42,
DecorationLinkageAttributes = 43,
DecorationSpecId = 44,
};
enum BuiltIn {
BuiltInPosition = 0,
BuiltInPointSize = 1,
BuiltInClipVertex = 2,
BuiltInClipDistance = 3,
BuiltInCullDistance = 4,
BuiltInVertexId = 5,
BuiltInInstanceId = 6,
BuiltInPrimitiveId = 7,
BuiltInInvocationId = 8,
BuiltInLayer = 9,
BuiltInViewportIndex = 10,
BuiltInTessLevelOuter = 11,
BuiltInTessLevelInner = 12,
BuiltInTessCoord = 13,
BuiltInPatchVertices = 14,
BuiltInFragCoord = 15,
BuiltInPointCoord = 16,
BuiltInFrontFacing = 17,
BuiltInSampleId = 18,
BuiltInSamplePosition = 19,
BuiltInSampleMask = 20,
BuiltInFragColor = 21,
BuiltInFragDepth = 22,
BuiltInHelperInvocation = 23,
BuiltInNumWorkgroups = 24,
BuiltInWorkgroupSize = 25,
BuiltInWorkgroupId = 26,
BuiltInLocalInvocationId = 27,
BuiltInGlobalInvocationId = 28,
BuiltInLocalInvocationIndex = 29,
BuiltInWorkDim = 30,
BuiltInGlobalSize = 31,
BuiltInEnqueuedWorkgroupSize = 32,
BuiltInGlobalOffset = 33,
BuiltInGlobalLinearId = 34,
BuiltInWorkgroupLinearId = 35,
BuiltInSubgroupSize = 36,
BuiltInSubgroupMaxSize = 37,
BuiltInNumSubgroups = 38,
BuiltInNumEnqueuedSubgroups = 39,
BuiltInSubgroupId = 40,
BuiltInSubgroupLocalInvocationId = 41,
};
enum SelectionControlShift {
SelectionControlFlattenShift = 0,
SelectionControlDontFlattenShift = 1,
};
enum SelectionControlMask {
SelectionControlMaskNone = 0,
SelectionControlFlattenMask = 0x00000001,
SelectionControlDontFlattenMask = 0x00000002,
};
enum LoopControlShift {
LoopControlUnrollShift = 0,
LoopControlDontUnrollShift = 1,
};
enum LoopControlMask {
LoopControlMaskNone = 0,
LoopControlUnrollMask = 0x00000001,
LoopControlDontUnrollMask = 0x00000002,
};
enum FunctionControlShift {
FunctionControlInlineShift = 0,
FunctionControlDontInlineShift = 1,
FunctionControlPureShift = 2,
FunctionControlConstShift = 3,
};
enum FunctionControlMask {
FunctionControlMaskNone = 0,
FunctionControlInlineMask = 0x00000001,
FunctionControlDontInlineMask = 0x00000002,
FunctionControlPureMask = 0x00000004,
FunctionControlConstMask = 0x00000008,
};
enum MemorySemanticsShift {
MemorySemanticsRelaxedShift = 0,
MemorySemanticsSequentiallyConsistentShift = 1,
MemorySemanticsAcquireShift = 2,
MemorySemanticsReleaseShift = 3,
MemorySemanticsUniformMemoryShift = 4,
MemorySemanticsSubgroupMemoryShift = 5,
MemorySemanticsWorkgroupLocalMemoryShift = 6,
MemorySemanticsWorkgroupGlobalMemoryShift = 7,
MemorySemanticsAtomicCounterMemoryShift = 8,
MemorySemanticsImageMemoryShift = 9,
};
enum MemorySemanticsMask {
MemorySemanticsMaskNone = 0,
MemorySemanticsRelaxedMask = 0x00000001,
MemorySemanticsSequentiallyConsistentMask = 0x00000002,
MemorySemanticsAcquireMask = 0x00000004,
MemorySemanticsReleaseMask = 0x00000008,
MemorySemanticsUniformMemoryMask = 0x00000010,
MemorySemanticsSubgroupMemoryMask = 0x00000020,
MemorySemanticsWorkgroupLocalMemoryMask = 0x00000040,
MemorySemanticsWorkgroupGlobalMemoryMask = 0x00000080,
MemorySemanticsAtomicCounterMemoryMask = 0x00000100,
MemorySemanticsImageMemoryMask = 0x00000200,
};
enum MemoryAccessShift {
MemoryAccessVolatileShift = 0,
MemoryAccessAlignedShift = 1,
};
enum MemoryAccessMask {
MemoryAccessMaskNone = 0,
MemoryAccessVolatileMask = 0x00000001,
MemoryAccessAlignedMask = 0x00000002,
};
enum ExecutionScope {
ExecutionScopeCrossDevice = 0,
ExecutionScopeDevice = 1,
ExecutionScopeWorkgroup = 2,
ExecutionScopeSubgroup = 3,
};
enum GroupOperation {
GroupOperationReduce = 0,
GroupOperationInclusiveScan = 1,
GroupOperationExclusiveScan = 2,
};
enum KernelEnqueueFlags {
KernelEnqueueFlagsNoWait = 0,
KernelEnqueueFlagsWaitKernel = 1,
KernelEnqueueFlagsWaitWorkGroup = 2,
};
enum KernelProfilingInfoShift {
KernelProfilingInfoCmdExecTimeShift = 0,
};
enum KernelProfilingInfoMask {
KernelProfilingInfoMaskNone = 0,
KernelProfilingInfoCmdExecTimeMask = 0x00000001,
};
enum Op {
OpNop = 0,
OpSource = 1,
OpSourceExtension = 2,
OpExtension = 3,
OpExtInstImport = 4,
OpMemoryModel = 5,
OpEntryPoint = 6,
OpExecutionMode = 7,
OpTypeVoid = 8,
OpTypeBool = 9,
OpTypeInt = 10,
OpTypeFloat = 11,
OpTypeVector = 12,
OpTypeMatrix = 13,
OpTypeSampler = 14,
OpTypeFilter = 15,
OpTypeArray = 16,
OpTypeRuntimeArray = 17,
OpTypeStruct = 18,
OpTypeOpaque = 19,
OpTypePointer = 20,
OpTypeFunction = 21,
OpTypeEvent = 22,
OpTypeDeviceEvent = 23,
OpTypeReserveId = 24,
OpTypeQueue = 25,
OpTypePipe = 26,
OpConstantTrue = 27,
OpConstantFalse = 28,
OpConstant = 29,
OpConstantComposite = 30,
OpConstantSampler = 31,
OpConstantNullPointer = 32,
OpConstantNullObject = 33,
OpSpecConstantTrue = 34,
OpSpecConstantFalse = 35,
OpSpecConstant = 36,
OpSpecConstantComposite = 37,
OpVariable = 38,
OpVariableArray = 39,
OpFunction = 40,
OpFunctionParameter = 41,
OpFunctionEnd = 42,
OpFunctionCall = 43,
OpExtInst = 44,
OpUndef = 45,
OpLoad = 46,
OpStore = 47,
OpPhi = 48,
OpDecorationGroup = 49,
OpDecorate = 50,
OpMemberDecorate = 51,
OpGroupDecorate = 52,
OpGroupMemberDecorate = 53,
OpName = 54,
OpMemberName = 55,
OpString = 56,
OpLine = 57,
OpVectorExtractDynamic = 58,
OpVectorInsertDynamic = 59,
OpVectorShuffle = 60,
OpCompositeConstruct = 61,
OpCompositeExtract = 62,
OpCompositeInsert = 63,
OpCopyObject = 64,
OpCopyMemory = 65,
OpCopyMemorySized = 66,
OpSampler = 67,
OpTextureSample = 68,
OpTextureSampleDref = 69,
OpTextureSampleLod = 70,
OpTextureSampleProj = 71,
OpTextureSampleGrad = 72,
OpTextureSampleOffset = 73,
OpTextureSampleProjLod = 74,
OpTextureSampleProjGrad = 75,
OpTextureSampleLodOffset = 76,
OpTextureSampleProjOffset = 77,
OpTextureSampleGradOffset = 78,
OpTextureSampleProjLodOffset = 79,
OpTextureSampleProjGradOffset = 80,
OpTextureFetchTexelLod = 81,
OpTextureFetchTexelOffset = 82,
OpTextureFetchSample = 83,
OpTextureFetchTexel = 84,
OpTextureGather = 85,
OpTextureGatherOffset = 86,
OpTextureGatherOffsets = 87,
OpTextureQuerySizeLod = 88,
OpTextureQuerySize = 89,
OpTextureQueryLod = 90,
OpTextureQueryLevels = 91,
OpTextureQuerySamples = 92,
OpAccessChain = 93,
OpInBoundsAccessChain = 94,
OpSNegate = 95,
OpFNegate = 96,
OpNot = 97,
OpAny = 98,
OpAll = 99,
OpConvertFToU = 100,
OpConvertFToS = 101,
OpConvertSToF = 102,
OpConvertUToF = 103,
OpUConvert = 104,
OpSConvert = 105,
OpFConvert = 106,
OpConvertPtrToU = 107,
OpConvertUToPtr = 108,
OpPtrCastToGeneric = 109,
OpGenericCastToPtr = 110,
OpBitcast = 111,
OpTranspose = 112,
OpIsNan = 113,
OpIsInf = 114,
OpIsFinite = 115,
OpIsNormal = 116,
OpSignBitSet = 117,
OpLessOrGreater = 118,
OpOrdered = 119,
OpUnordered = 120,
OpArrayLength = 121,
OpIAdd = 122,
OpFAdd = 123,
OpISub = 124,
OpFSub = 125,
OpIMul = 126,
OpFMul = 127,
OpUDiv = 128,
OpSDiv = 129,
OpFDiv = 130,
OpUMod = 131,
OpSRem = 132,
OpSMod = 133,
OpFRem = 134,
OpFMod = 135,
OpVectorTimesScalar = 136,
OpMatrixTimesScalar = 137,
OpVectorTimesMatrix = 138,
OpMatrixTimesVector = 139,
OpMatrixTimesMatrix = 140,
OpOuterProduct = 141,
OpDot = 142,
OpShiftRightLogical = 143,
OpShiftRightArithmetic = 144,
OpShiftLeftLogical = 145,
OpLogicalOr = 146,
OpLogicalXor = 147,
OpLogicalAnd = 148,
OpBitwiseOr = 149,
OpBitwiseXor = 150,
OpBitwiseAnd = 151,
OpSelect = 152,
OpIEqual = 153,
OpFOrdEqual = 154,
OpFUnordEqual = 155,
OpINotEqual = 156,
OpFOrdNotEqual = 157,
OpFUnordNotEqual = 158,
OpULessThan = 159,
OpSLessThan = 160,
OpFOrdLessThan = 161,
OpFUnordLessThan = 162,
OpUGreaterThan = 163,
OpSGreaterThan = 164,
OpFOrdGreaterThan = 165,
OpFUnordGreaterThan = 166,
OpULessThanEqual = 167,
OpSLessThanEqual = 168,
OpFOrdLessThanEqual = 169,
OpFUnordLessThanEqual = 170,
OpUGreaterThanEqual = 171,
OpSGreaterThanEqual = 172,
OpFOrdGreaterThanEqual = 173,
OpFUnordGreaterThanEqual = 174,
OpDPdx = 175,
OpDPdy = 176,
OpFwidth = 177,
OpDPdxFine = 178,
OpDPdyFine = 179,
OpFwidthFine = 180,
OpDPdxCoarse = 181,
OpDPdyCoarse = 182,
OpFwidthCoarse = 183,
OpEmitVertex = 184,
OpEndPrimitive = 185,
OpEmitStreamVertex = 186,
OpEndStreamPrimitive = 187,
OpControlBarrier = 188,
OpMemoryBarrier = 189,
OpImagePointer = 190,
OpAtomicInit = 191,
OpAtomicLoad = 192,
OpAtomicStore = 193,
OpAtomicExchange = 194,
OpAtomicCompareExchange = 195,
OpAtomicCompareExchangeWeak = 196,
OpAtomicIIncrement = 197,
OpAtomicIDecrement = 198,
OpAtomicIAdd = 199,
OpAtomicISub = 200,
OpAtomicUMin = 201,
OpAtomicUMax = 202,
OpAtomicAnd = 203,
OpAtomicOr = 204,
OpAtomicXor = 205,
OpLoopMerge = 206,
OpSelectionMerge = 207,
OpLabel = 208,
OpBranch = 209,
OpBranchConditional = 210,
OpSwitch = 211,
OpKill = 212,
OpReturn = 213,
OpReturnValue = 214,
OpUnreachable = 215,
OpLifetimeStart = 216,
OpLifetimeStop = 217,
OpCompileFlag = 218,
OpAsyncGroupCopy = 219,
OpWaitGroupEvents = 220,
OpGroupAll = 221,
OpGroupAny = 222,
OpGroupBroadcast = 223,
OpGroupIAdd = 224,
OpGroupFAdd = 225,
OpGroupFMin = 226,
OpGroupUMin = 227,
OpGroupSMin = 228,
OpGroupFMax = 229,
OpGroupUMax = 230,
OpGroupSMax = 231,
OpGenericCastToPtrExplicit = 232,
OpGenericPtrMemSemantics = 233,
OpReadPipe = 234,
OpWritePipe = 235,
OpReservedReadPipe = 236,
OpReservedWritePipe = 237,
OpReserveReadPipePackets = 238,
OpReserveWritePipePackets = 239,
OpCommitReadPipe = 240,
OpCommitWritePipe = 241,
OpIsValidReserveId = 242,
OpGetNumPipePackets = 243,
OpGetMaxPipePackets = 244,
OpGroupReserveReadPipePackets = 245,
OpGroupReserveWritePipePackets = 246,
OpGroupCommitReadPipe = 247,
OpGroupCommitWritePipe = 248,
OpEnqueueMarker = 249,
OpEnqueueKernel = 250,
OpGetKernelNDrangeSubGroupCount = 251,
OpGetKernelNDrangeMaxSubGroupSize = 252,
OpGetKernelWorkGroupSize = 253,
OpGetKernelPreferredWorkGroupSizeMultiple = 254,
OpRetainEvent = 255,
OpReleaseEvent = 256,
OpCreateUserEvent = 257,
OpIsValidEvent = 258,
OpSetUserEventStatus = 259,
OpCaptureEventProfilingInfo = 260,
OpGetDefaultQueue = 261,
OpBuildNDRange = 262,
OpSatConvertSToU = 263,
OpSatConvertUToS = 264,
OpAtomicIMin = 265,
OpAtomicIMax = 266,
};
}; // end namespace spv
#endif // #ifdef __cplusplus
#ifndef __cplusplus
const int SpvMagicNumber = 0x07230203;
const int SpvVersion = 99;
typedef unsigned int SpvId;
const unsigned int SpvOpCodeMask = 0xFFFF;
const unsigned int SpvWordCountShift = 16;
typedef enum SpvSourceLanguage_ {
SpvSourceLanguageUnknown = 0,
SpvSourceLanguageESSL = 1,
SpvSourceLanguageGLSL = 2,
SpvSourceLanguageOpenCL = 3,
} SpvSourceLanguage;
typedef enum SpvExecutionModel_ {
SpvExecutionModelVertex = 0,
SpvExecutionModelTessellationControl = 1,
SpvExecutionModelTessellationEvaluation = 2,
SpvExecutionModelGeometry = 3,
SpvExecutionModelFragment = 4,
SpvExecutionModelGLCompute = 5,
SpvExecutionModelKernel = 6,
} SpvExecutionModel;
typedef enum SpvAddressingModel_ {
SpvAddressingModelLogical = 0,
SpvAddressingModelPhysical32 = 1,
SpvAddressingModelPhysical64 = 2,
} SpvAddressingModel;
typedef enum SpvMemoryModel_ {
SpvMemoryModelSimple = 0,
SpvMemoryModelGLSL450 = 1,
SpvMemoryModelOpenCL12 = 2,
SpvMemoryModelOpenCL20 = 3,
SpvMemoryModelOpenCL21 = 4,
} SpvMemoryModel;
typedef enum SpvExecutionMode_ {
SpvExecutionModeInvocations = 0,
SpvExecutionModeSpacingEqual = 1,
SpvExecutionModeSpacingFractionalEven = 2,
SpvExecutionModeSpacingFractionalOdd = 3,
SpvExecutionModeVertexOrderCw = 4,
SpvExecutionModeVertexOrderCcw = 5,
SpvExecutionModePixelCenterInteger = 6,
SpvExecutionModeOriginUpperLeft = 7,
SpvExecutionModeEarlyFragmentTests = 8,
SpvExecutionModePointMode = 9,
SpvExecutionModeXfb = 10,
SpvExecutionModeDepthReplacing = 11,
SpvExecutionModeDepthAny = 12,
SpvExecutionModeDepthGreater = 13,
SpvExecutionModeDepthLess = 14,
SpvExecutionModeDepthUnchanged = 15,
SpvExecutionModeLocalSize = 16,
SpvExecutionModeLocalSizeHint = 17,
SpvExecutionModeInputPoints = 18,
SpvExecutionModeInputLines = 19,
SpvExecutionModeInputLinesAdjacency = 20,
SpvExecutionModeInputTriangles = 21,
SpvExecutionModeInputTrianglesAdjacency = 22,
SpvExecutionModeInputQuads = 23,
SpvExecutionModeInputIsolines = 24,
SpvExecutionModeOutputVertices = 25,
SpvExecutionModeOutputPoints = 26,
SpvExecutionModeOutputLineStrip = 27,
SpvExecutionModeOutputTriangleStrip = 28,
SpvExecutionModeVecTypeHint = 29,
SpvExecutionModeContractionOff = 30,
} SpvExecutionMode;
typedef enum SpvStorageClass_ {
SpvStorageClassUniformConstant = 0,
SpvStorageClassInput = 1,
SpvStorageClassUniform = 2,
SpvStorageClassOutput = 3,
SpvStorageClassWorkgroupLocal = 4,
SpvStorageClassWorkgroupGlobal = 5,
SpvStorageClassPrivateGlobal = 6,
SpvStorageClassFunction = 7,
SpvStorageClassGeneric = 8,
SpvStorageClassPrivate = 9,
SpvStorageClassAtomicCounter = 10,
} SpvStorageClass;
typedef enum SpvDim_ {
SpvDim1D = 0,
SpvDim2D = 1,
SpvDim3D = 2,
SpvDimCube = 3,
SpvDimRect = 4,
SpvDimBuffer = 5,
} SpvDim;
typedef enum SpvSamplerAddressingMode_ {
SpvSamplerAddressingModeNone = 0,
SpvSamplerAddressingModeClampToEdge = 1,
SpvSamplerAddressingModeClamp = 2,
SpvSamplerAddressingModeRepeat = 3,
SpvSamplerAddressingModeRepeatMirrored = 4,
} SpvSamplerAddressingMode;
typedef enum SpvSamplerFilterMode_ {
SpvSamplerFilterModeNearest = 0,
SpvSamplerFilterModeLinear = 1,
} SpvSamplerFilterMode;
typedef enum SpvFPFastMathModeShift_ {
SpvFPFastMathModeNotNaNShift = 0,
SpvFPFastMathModeNotInfShift = 1,
SpvFPFastMathModeNSZShift = 2,
SpvFPFastMathModeAllowRecipShift = 3,
SpvFPFastMathModeFastShift = 4,
} SpvFPFastMathModeShift;
typedef enum SpvFPFastMathModeMask_ {
SpvFPFastMathModeMaskNone = 0,
SpvFPFastMathModeNotNaNMask = 0x00000001,
SpvFPFastMathModeNotInfMask = 0x00000002,
SpvFPFastMathModeNSZMask = 0x00000004,
SpvFPFastMathModeAllowRecipMask = 0x00000008,
SpvFPFastMathModeFastMask = 0x00000010,
} SpvFPFastMathModeMask;
typedef enum SpvFPRoundingMode_ {
SpvFPRoundingModeRTE = 0,
SpvFPRoundingModeRTZ = 1,
SpvFPRoundingModeRTP = 2,
SpvFPRoundingModeRTN = 3,
} SpvFPRoundingMode;
typedef enum SpvLinkageType_ {
SpvLinkageTypeExport = 0,
SpvLinkageTypeImport = 1,
} SpvLinkageType;
typedef enum SpvAccessQualifier_ {
SpvAccessQualifierReadOnly = 0,
SpvAccessQualifierWriteOnly = 1,
SpvAccessQualifierReadWrite = 2,
} SpvAccessQualifier;
typedef enum SpvFunctionParameterAttribute_ {
SpvFunctionParameterAttributeZext = 0,
SpvFunctionParameterAttributeSext = 1,
SpvFunctionParameterAttributeByVal = 2,
SpvFunctionParameterAttributeSret = 3,
SpvFunctionParameterAttributeNoAlias = 4,
SpvFunctionParameterAttributeNoCapture = 5,
SpvFunctionParameterAttributeSVM = 6,
SpvFunctionParameterAttributeNoWrite = 7,
SpvFunctionParameterAttributeNoReadWrite = 8,
} SpvFunctionParameterAttribute;
typedef enum SpvDecoration_ {
SpvDecorationPrecisionLow = 0,
SpvDecorationPrecisionMedium = 1,
SpvDecorationPrecisionHigh = 2,
SpvDecorationBlock = 3,
SpvDecorationBufferBlock = 4,
SpvDecorationRowMajor = 5,
SpvDecorationColMajor = 6,
SpvDecorationGLSLShared = 7,
SpvDecorationGLSLStd140 = 8,
SpvDecorationGLSLStd430 = 9,
SpvDecorationGLSLPacked = 10,
SpvDecorationSmooth = 11,
SpvDecorationNoperspective = 12,
SpvDecorationFlat = 13,
SpvDecorationPatch = 14,
SpvDecorationCentroid = 15,
SpvDecorationSample = 16,
SpvDecorationInvariant = 17,
SpvDecorationRestrict = 18,
SpvDecorationAliased = 19,
SpvDecorationVolatile = 20,
SpvDecorationConstant = 21,
SpvDecorationCoherent = 22,
SpvDecorationNonwritable = 23,
SpvDecorationNonreadable = 24,
SpvDecorationUniform = 25,
SpvDecorationNoStaticUse = 26,
SpvDecorationCPacked = 27,
SpvDecorationSaturatedConversion = 28,
SpvDecorationStream = 29,
SpvDecorationLocation = 30,
SpvDecorationComponent = 31,
SpvDecorationIndex = 32,
SpvDecorationBinding = 33,
SpvDecorationDescriptorSet = 34,
SpvDecorationOffset = 35,
SpvDecorationAlignment = 36,
SpvDecorationXfbBuffer = 37,
SpvDecorationStride = 38,
SpvDecorationBuiltIn = 39,
SpvDecorationFuncParamAttr = 40,
SpvDecorationFPRoundingMode = 41,
SpvDecorationFPFastMathMode = 42,
SpvDecorationLinkageAttributes = 43,
SpvDecorationSpecId = 44,
} SpvDecoration;
typedef enum SpvBuiltIn_ {
SpvBuiltInPosition = 0,
SpvBuiltInPointSize = 1,
SpvBuiltInClipVertex = 2,
SpvBuiltInClipDistance = 3,
SpvBuiltInCullDistance = 4,
SpvBuiltInVertexId = 5,
SpvBuiltInInstanceId = 6,
SpvBuiltInPrimitiveId = 7,
SpvBuiltInInvocationId = 8,
SpvBuiltInLayer = 9,
SpvBuiltInViewportIndex = 10,
SpvBuiltInTessLevelOuter = 11,
SpvBuiltInTessLevelInner = 12,
SpvBuiltInTessCoord = 13,
SpvBuiltInPatchVertices = 14,
SpvBuiltInFragCoord = 15,
SpvBuiltInPointCoord = 16,
SpvBuiltInFrontFacing = 17,
SpvBuiltInSampleId = 18,
SpvBuiltInSamplePosition = 19,
SpvBuiltInSampleMask = 20,
SpvBuiltInFragColor = 21,
SpvBuiltInFragDepth = 22,
SpvBuiltInHelperInvocation = 23,
SpvBuiltInNumWorkgroups = 24,
SpvBuiltInWorkgroupSize = 25,
SpvBuiltInWorkgroupId = 26,
SpvBuiltInLocalInvocationId = 27,
SpvBuiltInGlobalInvocationId = 28,
SpvBuiltInLocalInvocationIndex = 29,
SpvBuiltInWorkDim = 30,
SpvBuiltInGlobalSize = 31,
SpvBuiltInEnqueuedWorkgroupSize = 32,
SpvBuiltInGlobalOffset = 33,
SpvBuiltInGlobalLinearId = 34,
SpvBuiltInWorkgroupLinearId = 35,
SpvBuiltInSubgroupSize = 36,
SpvBuiltInSubgroupMaxSize = 37,
SpvBuiltInNumSubgroups = 38,
SpvBuiltInNumEnqueuedSubgroups = 39,
SpvBuiltInSubgroupId = 40,
SpvBuiltInSubgroupLocalInvocationId = 41,
} SpvBuiltIn;
typedef enum SpvSelectionControlShift_ {
SpvSelectionControlFlattenShift = 0,
SpvSelectionControlDontFlattenShift = 1,
} SpvSelectionControlShift;
typedef enum SpvSelectionControlMask_ {
SpvSelectionControlMaskNone = 0,
SpvSelectionControlFlattenMask = 0x00000001,
SpvSelectionControlDontFlattenMask = 0x00000002,
} SpvSelectionControlMask;
typedef enum SpvLoopControlShift_ {
SpvLoopControlUnrollShift = 0,
SpvLoopControlDontUnrollShift = 1,
} SpvLoopControlShift;
typedef enum SpvLoopControlMask_ {
SpvLoopControlMaskNone = 0,
SpvLoopControlUnrollMask = 0x00000001,
SpvLoopControlDontUnrollMask = 0x00000002,
} SpvLoopControlMask;
typedef enum SpvFunctionControlShift_ {
SpvFunctionControlInlineShift = 0,
SpvFunctionControlDontInlineShift = 1,
SpvFunctionControlPureShift = 2,
SpvFunctionControlConstShift = 3,
} SpvFunctionControlShift;
typedef enum SpvFunctionControlMask_ {
SpvFunctionControlMaskNone = 0,
SpvFunctionControlInlineMask = 0x00000001,
SpvFunctionControlDontInlineMask = 0x00000002,
SpvFunctionControlPureMask = 0x00000004,
SpvFunctionControlConstMask = 0x00000008,
} SpvFunctionControlMask;
typedef enum SpvMemorySemanticsShift_ {
SpvMemorySemanticsRelaxedShift = 0,
SpvMemorySemanticsSequentiallyConsistentShift = 1,
SpvMemorySemanticsAcquireShift = 2,
SpvMemorySemanticsReleaseShift = 3,
SpvMemorySemanticsUniformMemoryShift = 4,
SpvMemorySemanticsSubgroupMemoryShift = 5,
SpvMemorySemanticsWorkgroupLocalMemoryShift = 6,
SpvMemorySemanticsWorkgroupGlobalMemoryShift = 7,
SpvMemorySemanticsAtomicCounterMemoryShift = 8,
SpvMemorySemanticsImageMemoryShift = 9,
} SpvMemorySemanticsShift;
typedef enum SpvMemorySemanticsMask_ {
SpvMemorySemanticsMaskNone = 0,
SpvMemorySemanticsRelaxedMask = 0x00000001,
SpvMemorySemanticsSequentiallyConsistentMask = 0x00000002,
SpvMemorySemanticsAcquireMask = 0x00000004,
SpvMemorySemanticsReleaseMask = 0x00000008,
SpvMemorySemanticsUniformMemoryMask = 0x00000010,
SpvMemorySemanticsSubgroupMemoryMask = 0x00000020,
SpvMemorySemanticsWorkgroupLocalMemoryMask = 0x00000040,
SpvMemorySemanticsWorkgroupGlobalMemoryMask = 0x00000080,
SpvMemorySemanticsAtomicCounterMemoryMask = 0x00000100,
SpvMemorySemanticsImageMemoryMask = 0x00000200,
} SpvMemorySemanticsMask;
typedef enum SpvMemoryAccessShift_ {
SpvMemoryAccessVolatileShift = 0,
SpvMemoryAccessAlignedShift = 1,
} SpvMemoryAccessShift;
typedef enum SpvMemoryAccessMask_ {
SpvMemoryAccessMaskNone = 0,
SpvMemoryAccessVolatileMask = 0x00000001,
SpvMemoryAccessAlignedMask = 0x00000002,
} SpvMemoryAccessMask;
typedef enum SpvExecutionScope_ {
SpvExecutionScopeCrossDevice = 0,
SpvExecutionScopeDevice = 1,
SpvExecutionScopeWorkgroup = 2,
SpvExecutionScopeSubgroup = 3,
} SpvExecutionScope;
typedef enum SpvGroupOperation_ {
SpvGroupOperationReduce = 0,
SpvGroupOperationInclusiveScan = 1,
SpvGroupOperationExclusiveScan = 2,
} SpvGroupOperation;
typedef enum SpvKernelEnqueueFlags_ {
SpvKernelEnqueueFlagsNoWait = 0,
SpvKernelEnqueueFlagsWaitKernel = 1,
SpvKernelEnqueueFlagsWaitWorkGroup = 2,
} SpvKernelEnqueueFlags;
typedef enum SpvKernelProfilingInfoShift_ {
SpvKernelProfilingInfoCmdExecTimeShift = 0,
} SpvKernelProfilingInfoShift;
typedef enum SpvKernelProfilingInfoMask_ {
SpvKernelProfilingInfoMaskNone = 0,
SpvKernelProfilingInfoCmdExecTimeMask = 0x00000001,
} SpvKernelProfilingInfoMask;
typedef enum SpvOp_ {
SpvOpNop = 0,
SpvOpSource = 1,
SpvOpSourceExtension = 2,
SpvOpExtension = 3,
SpvOpExtInstImport = 4,
SpvOpMemoryModel = 5,
SpvOpEntryPoint = 6,
SpvOpExecutionMode = 7,
SpvOpTypeVoid = 8,
SpvOpTypeBool = 9,
SpvOpTypeInt = 10,
SpvOpTypeFloat = 11,
SpvOpTypeVector = 12,
SpvOpTypeMatrix = 13,
SpvOpTypeSampler = 14,
SpvOpTypeFilter = 15,
SpvOpTypeArray = 16,
SpvOpTypeRuntimeArray = 17,
SpvOpTypeStruct = 18,
SpvOpTypeOpaque = 19,
SpvOpTypePointer = 20,
SpvOpTypeFunction = 21,
SpvOpTypeEvent = 22,
SpvOpTypeDeviceEvent = 23,
SpvOpTypeReserveId = 24,
SpvOpTypeQueue = 25,
SpvOpTypePipe = 26,
SpvOpConstantTrue = 27,
SpvOpConstantFalse = 28,
SpvOpConstant = 29,
SpvOpConstantComposite = 30,
SpvOpConstantSampler = 31,
SpvOpConstantNullPointer = 32,
SpvOpConstantNullObject = 33,
SpvOpSpecConstantTrue = 34,
SpvOpSpecConstantFalse = 35,
SpvOpSpecConstant = 36,
SpvOpSpecConstantComposite = 37,
SpvOpVariable = 38,
SpvOpVariableArray = 39,
SpvOpFunction = 40,
SpvOpFunctionParameter = 41,
SpvOpFunctionEnd = 42,
SpvOpFunctionCall = 43,
SpvOpExtInst = 44,
SpvOpUndef = 45,
SpvOpLoad = 46,
SpvOpStore = 47,
SpvOpPhi = 48,
SpvOpDecorationGroup = 49,
SpvOpDecorate = 50,
SpvOpMemberDecorate = 51,
SpvOpGroupDecorate = 52,
SpvOpGroupMemberDecorate = 53,
SpvOpName = 54,
SpvOpMemberName = 55,
SpvOpString = 56,
SpvOpLine = 57,
SpvOpVectorExtractDynamic = 58,
SpvOpVectorInsertDynamic = 59,
SpvOpVectorShuffle = 60,
SpvOpCompositeConstruct = 61,
SpvOpCompositeExtract = 62,
SpvOpCompositeInsert = 63,
SpvOpCopyObject = 64,
SpvOpCopyMemory = 65,
SpvOpCopyMemorySized = 66,
SpvOpSampler = 67,
SpvOpTextureSample = 68,
SpvOpTextureSampleDref = 69,
SpvOpTextureSampleLod = 70,
SpvOpTextureSampleProj = 71,
SpvOpTextureSampleGrad = 72,
SpvOpTextureSampleOffset = 73,
SpvOpTextureSampleProjLod = 74,
SpvOpTextureSampleProjGrad = 75,
SpvOpTextureSampleLodOffset = 76,
SpvOpTextureSampleProjOffset = 77,
SpvOpTextureSampleGradOffset = 78,
SpvOpTextureSampleProjLodOffset = 79,
SpvOpTextureSampleProjGradOffset = 80,
SpvOpTextureFetchTexelLod = 81,
SpvOpTextureFetchTexelOffset = 82,
SpvOpTextureFetchSample = 83,
SpvOpTextureFetchTexel = 84,
SpvOpTextureGather = 85,
SpvOpTextureGatherOffset = 86,
SpvOpTextureGatherOffsets = 87,
SpvOpTextureQuerySizeLod = 88,
SpvOpTextureQuerySize = 89,
SpvOpTextureQueryLod = 90,
SpvOpTextureQueryLevels = 91,
SpvOpTextureQuerySamples = 92,
SpvOpAccessChain = 93,
SpvOpInBoundsAccessChain = 94,
SpvOpSNegate = 95,
SpvOpFNegate = 96,
SpvOpNot = 97,
SpvOpAny = 98,
SpvOpAll = 99,
SpvOpConvertFToU = 100,
SpvOpConvertFToS = 101,
SpvOpConvertSToF = 102,
SpvOpConvertUToF = 103,
SpvOpUConvert = 104,
SpvOpSConvert = 105,
SpvOpFConvert = 106,
SpvOpConvertPtrToU = 107,
SpvOpConvertUToPtr = 108,
SpvOpPtrCastToGeneric = 109,
SpvOpGenericCastToPtr = 110,
SpvOpBitcast = 111,
SpvOpTranspose = 112,
SpvOpIsNan = 113,
SpvOpIsInf = 114,
SpvOpIsFinite = 115,
SpvOpIsNormal = 116,
SpvOpSignBitSet = 117,
SpvOpLessOrGreater = 118,
SpvOpOrdered = 119,
SpvOpUnordered = 120,
SpvOpArrayLength = 121,
SpvOpIAdd = 122,
SpvOpFAdd = 123,
SpvOpISub = 124,
SpvOpFSub = 125,
SpvOpIMul = 126,
SpvOpFMul = 127,
SpvOpUDiv = 128,
SpvOpSDiv = 129,
SpvOpFDiv = 130,
SpvOpUMod = 131,
SpvOpSRem = 132,
SpvOpSMod = 133,
SpvOpFRem = 134,
SpvOpFMod = 135,
SpvOpVectorTimesScalar = 136,
SpvOpMatrixTimesScalar = 137,
SpvOpVectorTimesMatrix = 138,
SpvOpMatrixTimesVector = 139,
SpvOpMatrixTimesMatrix = 140,
SpvOpOuterProduct = 141,
SpvOpDot = 142,
SpvOpShiftRightLogical = 143,
SpvOpShiftRightArithmetic = 144,
SpvOpShiftLeftLogical = 145,
SpvOpLogicalOr = 146,
SpvOpLogicalXor = 147,
SpvOpLogicalAnd = 148,
SpvOpBitwiseOr = 149,
SpvOpBitwiseXor = 150,
SpvOpBitwiseAnd = 151,
SpvOpSelect = 152,
SpvOpIEqual = 153,
SpvOpFOrdEqual = 154,
SpvOpFUnordEqual = 155,
SpvOpINotEqual = 156,
SpvOpFOrdNotEqual = 157,
SpvOpFUnordNotEqual = 158,
SpvOpULessThan = 159,
SpvOpSLessThan = 160,
SpvOpFOrdLessThan = 161,
SpvOpFUnordLessThan = 162,
SpvOpUGreaterThan = 163,
SpvOpSGreaterThan = 164,
SpvOpFOrdGreaterThan = 165,
SpvOpFUnordGreaterThan = 166,
SpvOpULessThanEqual = 167,
SpvOpSLessThanEqual = 168,
SpvOpFOrdLessThanEqual = 169,
SpvOpFUnordLessThanEqual = 170,
SpvOpUGreaterThanEqual = 171,
SpvOpSGreaterThanEqual = 172,
SpvOpFOrdGreaterThanEqual = 173,
SpvOpFUnordGreaterThanEqual = 174,
SpvOpDPdx = 175,
SpvOpDPdy = 176,
SpvOpFwidth = 177,
SpvOpDPdxFine = 178,
SpvOpDPdyFine = 179,
SpvOpFwidthFine = 180,
SpvOpDPdxCoarse = 181,
SpvOpDPdyCoarse = 182,
SpvOpFwidthCoarse = 183,
SpvOpEmitVertex = 184,
SpvOpEndPrimitive = 185,
SpvOpEmitStreamVertex = 186,
SpvOpEndStreamPrimitive = 187,
SpvOpControlBarrier = 188,
SpvOpMemoryBarrier = 189,
SpvOpImagePointer = 190,
SpvOpAtomicInit = 191,
SpvOpAtomicLoad = 192,
SpvOpAtomicStore = 193,
SpvOpAtomicExchange = 194,
SpvOpAtomicCompareExchange = 195,
SpvOpAtomicCompareExchangeWeak = 196,
SpvOpAtomicIIncrement = 197,
SpvOpAtomicIDecrement = 198,
SpvOpAtomicIAdd = 199,
SpvOpAtomicISub = 200,
SpvOpAtomicUMin = 201,
SpvOpAtomicUMax = 202,
SpvOpAtomicAnd = 203,
SpvOpAtomicOr = 204,
SpvOpAtomicXor = 205,
SpvOpLoopMerge = 206,
SpvOpSelectionMerge = 207,
SpvOpLabel = 208,
SpvOpBranch = 209,
SpvOpBranchConditional = 210,
SpvOpSwitch = 211,
SpvOpKill = 212,
SpvOpReturn = 213,
SpvOpReturnValue = 214,
SpvOpUnreachable = 215,
SpvOpLifetimeStart = 216,
SpvOpLifetimeStop = 217,
SpvOpCompileFlag = 218,
SpvOpAsyncGroupCopy = 219,
SpvOpWaitGroupEvents = 220,
SpvOpGroupAll = 221,
SpvOpGroupAny = 222,
SpvOpGroupBroadcast = 223,
SpvOpGroupIAdd = 224,
SpvOpGroupFAdd = 225,
SpvOpGroupFMin = 226,
SpvOpGroupUMin = 227,
SpvOpGroupSMin = 228,
SpvOpGroupFMax = 229,
SpvOpGroupUMax = 230,
SpvOpGroupSMax = 231,
SpvOpGenericCastToPtrExplicit = 232,
SpvOpGenericPtrMemSemantics = 233,
SpvOpReadPipe = 234,
SpvOpWritePipe = 235,
SpvOpReservedReadPipe = 236,
SpvOpReservedWritePipe = 237,
SpvOpReserveReadPipePackets = 238,
SpvOpReserveWritePipePackets = 239,
SpvOpCommitReadPipe = 240,
SpvOpCommitWritePipe = 241,
SpvOpIsValidReserveId = 242,
SpvOpGetNumPipePackets = 243,
SpvOpGetMaxPipePackets = 244,
SpvOpGroupReserveReadPipePackets = 245,
SpvOpGroupReserveWritePipePackets = 246,
SpvOpGroupCommitReadPipe = 247,
SpvOpGroupCommitWritePipe = 248,
SpvOpEnqueueMarker = 249,
SpvOpEnqueueKernel = 250,
SpvOpGetKernelNDrangeSubGroupCount = 251,
SpvOpGetKernelNDrangeMaxSubGroupSize = 252,
SpvOpGetKernelWorkGroupSize = 253,
SpvOpGetKernelPreferredWorkGroupSizeMultiple = 254,
SpvOpRetainEvent = 255,
SpvOpReleaseEvent = 256,
SpvOpCreateUserEvent = 257,
SpvOpIsValidEvent = 258,
SpvOpSetUserEventStatus = 259,
SpvOpCaptureEventProfilingInfo = 260,
SpvOpGetDefaultQueue = 261,
SpvOpBuildNDRange = 262,
SpvOpSatConvertSToU = 263,
SpvOpSatConvertUToS = 264,
SpvOpAtomicIMin = 265,
SpvOpAtomicIMax = 266,
} SpvOp;
#endif // #ifndef __cplusplus
#endif // #ifndef spirv_H