2 ** Copyright (c) 2014-2018 The Khronos Group Inc.
4 ** Permission is hereby granted, free of charge, to any person obtaining a copy
5 ** of this software and/or associated documentation files (the "Materials"),
6 ** to deal in the Materials without restriction, including without limitation
7 ** the rights to use, copy, modify, merge, publish, distribute, sublicense,
8 ** and/or sell copies of the Materials, and to permit persons to whom the
9 ** Materials are furnished to do so, subject to the following conditions:
11 ** The above copyright notice and this permission notice shall be included in
12 ** all copies or substantial portions of the Materials.
14 ** MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS
15 ** STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND
16 ** HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/
18 ** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
19 ** OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20 ** FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
21 ** THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22 ** LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
23 ** FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS
28 ** This header is automatically generated by the same tool that creates
29 ** the Binary Section of the SPIR-V specification.
33 ** Enumeration tokens for SPIR-V, in various styles:
34 ** C, C++, C++11, JSON, Lua, Python
36 ** - C will have tokens with a "Spv" prefix, e.g.: SpvSourceLanguageGLSL
37 ** - C++ will have tokens in the "spv" name space, e.g.: spv::SourceLanguageGLSL
38 ** - C++11 will use enum classes in the spv namespace, e.g.: spv::SourceLanguage::GLSL
39 ** - Lua will use tables, e.g.: spv.SourceLanguage.GLSL
40 ** - Python will use dictionaries, e.g.: spv['SourceLanguage']['GLSL']
42 ** Some tokens act like mask values, which can be OR'd together,
43 ** while others are mutually exclusive. The mask-like ones have
44 ** "Mask" in their name, and a parallel enum that has the shift
45 ** amount (1 << x) for each corresponding enumerant.
51 typedef unsigned int SpvId
;
53 #define SPV_VERSION 0x10200
54 #define SPV_REVISION 3
56 static const unsigned int SpvMagicNumber
= 0x07230203;
57 static const unsigned int SpvVersion
= 0x00010200;
58 static const unsigned int SpvRevision
= 3;
59 static const unsigned int SpvOpCodeMask
= 0xffff;
60 static const unsigned int SpvWordCountShift
= 16;
62 typedef enum SpvSourceLanguage_
{
63 SpvSourceLanguageUnknown
= 0,
64 SpvSourceLanguageESSL
= 1,
65 SpvSourceLanguageGLSL
= 2,
66 SpvSourceLanguageOpenCL_C
= 3,
67 SpvSourceLanguageOpenCL_CPP
= 4,
68 SpvSourceLanguageHLSL
= 5,
69 SpvSourceLanguageMax
= 0x7fffffff,
72 typedef enum SpvExecutionModel_
{
73 SpvExecutionModelVertex
= 0,
74 SpvExecutionModelTessellationControl
= 1,
75 SpvExecutionModelTessellationEvaluation
= 2,
76 SpvExecutionModelGeometry
= 3,
77 SpvExecutionModelFragment
= 4,
78 SpvExecutionModelGLCompute
= 5,
79 SpvExecutionModelKernel
= 6,
80 SpvExecutionModelMax
= 0x7fffffff,
83 typedef enum SpvAddressingModel_
{
84 SpvAddressingModelLogical
= 0,
85 SpvAddressingModelPhysical32
= 1,
86 SpvAddressingModelPhysical64
= 2,
87 SpvAddressingModelMax
= 0x7fffffff,
90 typedef enum SpvMemoryModel_
{
91 SpvMemoryModelSimple
= 0,
92 SpvMemoryModelGLSL450
= 1,
93 SpvMemoryModelOpenCL
= 2,
94 SpvMemoryModelMax
= 0x7fffffff,
97 typedef enum SpvExecutionMode_
{
98 SpvExecutionModeInvocations
= 0,
99 SpvExecutionModeSpacingEqual
= 1,
100 SpvExecutionModeSpacingFractionalEven
= 2,
101 SpvExecutionModeSpacingFractionalOdd
= 3,
102 SpvExecutionModeVertexOrderCw
= 4,
103 SpvExecutionModeVertexOrderCcw
= 5,
104 SpvExecutionModePixelCenterInteger
= 6,
105 SpvExecutionModeOriginUpperLeft
= 7,
106 SpvExecutionModeOriginLowerLeft
= 8,
107 SpvExecutionModeEarlyFragmentTests
= 9,
108 SpvExecutionModePointMode
= 10,
109 SpvExecutionModeXfb
= 11,
110 SpvExecutionModeDepthReplacing
= 12,
111 SpvExecutionModeDepthGreater
= 14,
112 SpvExecutionModeDepthLess
= 15,
113 SpvExecutionModeDepthUnchanged
= 16,
114 SpvExecutionModeLocalSize
= 17,
115 SpvExecutionModeLocalSizeHint
= 18,
116 SpvExecutionModeInputPoints
= 19,
117 SpvExecutionModeInputLines
= 20,
118 SpvExecutionModeInputLinesAdjacency
= 21,
119 SpvExecutionModeTriangles
= 22,
120 SpvExecutionModeInputTrianglesAdjacency
= 23,
121 SpvExecutionModeQuads
= 24,
122 SpvExecutionModeIsolines
= 25,
123 SpvExecutionModeOutputVertices
= 26,
124 SpvExecutionModeOutputPoints
= 27,
125 SpvExecutionModeOutputLineStrip
= 28,
126 SpvExecutionModeOutputTriangleStrip
= 29,
127 SpvExecutionModeVecTypeHint
= 30,
128 SpvExecutionModeContractionOff
= 31,
129 SpvExecutionModeInitializer
= 33,
130 SpvExecutionModeFinalizer
= 34,
131 SpvExecutionModeSubgroupSize
= 35,
132 SpvExecutionModeSubgroupsPerWorkgroup
= 36,
133 SpvExecutionModeSubgroupsPerWorkgroupId
= 37,
134 SpvExecutionModeLocalSizeId
= 38,
135 SpvExecutionModeLocalSizeHintId
= 39,
136 SpvExecutionModePostDepthCoverage
= 4446,
137 SpvExecutionModeStencilRefReplacingEXT
= 5027,
138 SpvExecutionModeMax
= 0x7fffffff,
141 typedef enum SpvStorageClass_
{
142 SpvStorageClassUniformConstant
= 0,
143 SpvStorageClassInput
= 1,
144 SpvStorageClassUniform
= 2,
145 SpvStorageClassOutput
= 3,
146 SpvStorageClassWorkgroup
= 4,
147 SpvStorageClassCrossWorkgroup
= 5,
148 SpvStorageClassPrivate
= 6,
149 SpvStorageClassFunction
= 7,
150 SpvStorageClassGeneric
= 8,
151 SpvStorageClassPushConstant
= 9,
152 SpvStorageClassAtomicCounter
= 10,
153 SpvStorageClassImage
= 11,
154 SpvStorageClassStorageBuffer
= 12,
155 SpvStorageClassMax
= 0x7fffffff,
158 typedef enum SpvDim_
{
165 SpvDimSubpassData
= 6,
166 SpvDimMax
= 0x7fffffff,
169 typedef enum SpvSamplerAddressingMode_
{
170 SpvSamplerAddressingModeNone
= 0,
171 SpvSamplerAddressingModeClampToEdge
= 1,
172 SpvSamplerAddressingModeClamp
= 2,
173 SpvSamplerAddressingModeRepeat
= 3,
174 SpvSamplerAddressingModeRepeatMirrored
= 4,
175 SpvSamplerAddressingModeMax
= 0x7fffffff,
176 } SpvSamplerAddressingMode
;
178 typedef enum SpvSamplerFilterMode_
{
179 SpvSamplerFilterModeNearest
= 0,
180 SpvSamplerFilterModeLinear
= 1,
181 SpvSamplerFilterModeMax
= 0x7fffffff,
182 } SpvSamplerFilterMode
;
184 typedef enum SpvImageFormat_
{
185 SpvImageFormatUnknown
= 0,
186 SpvImageFormatRgba32f
= 1,
187 SpvImageFormatRgba16f
= 2,
188 SpvImageFormatR32f
= 3,
189 SpvImageFormatRgba8
= 4,
190 SpvImageFormatRgba8Snorm
= 5,
191 SpvImageFormatRg32f
= 6,
192 SpvImageFormatRg16f
= 7,
193 SpvImageFormatR11fG11fB10f
= 8,
194 SpvImageFormatR16f
= 9,
195 SpvImageFormatRgba16
= 10,
196 SpvImageFormatRgb10A2
= 11,
197 SpvImageFormatRg16
= 12,
198 SpvImageFormatRg8
= 13,
199 SpvImageFormatR16
= 14,
200 SpvImageFormatR8
= 15,
201 SpvImageFormatRgba16Snorm
= 16,
202 SpvImageFormatRg16Snorm
= 17,
203 SpvImageFormatRg8Snorm
= 18,
204 SpvImageFormatR16Snorm
= 19,
205 SpvImageFormatR8Snorm
= 20,
206 SpvImageFormatRgba32i
= 21,
207 SpvImageFormatRgba16i
= 22,
208 SpvImageFormatRgba8i
= 23,
209 SpvImageFormatR32i
= 24,
210 SpvImageFormatRg32i
= 25,
211 SpvImageFormatRg16i
= 26,
212 SpvImageFormatRg8i
= 27,
213 SpvImageFormatR16i
= 28,
214 SpvImageFormatR8i
= 29,
215 SpvImageFormatRgba32ui
= 30,
216 SpvImageFormatRgba16ui
= 31,
217 SpvImageFormatRgba8ui
= 32,
218 SpvImageFormatR32ui
= 33,
219 SpvImageFormatRgb10a2ui
= 34,
220 SpvImageFormatRg32ui
= 35,
221 SpvImageFormatRg16ui
= 36,
222 SpvImageFormatRg8ui
= 37,
223 SpvImageFormatR16ui
= 38,
224 SpvImageFormatR8ui
= 39,
225 SpvImageFormatMax
= 0x7fffffff,
228 typedef enum SpvImageChannelOrder_
{
229 SpvImageChannelOrderR
= 0,
230 SpvImageChannelOrderA
= 1,
231 SpvImageChannelOrderRG
= 2,
232 SpvImageChannelOrderRA
= 3,
233 SpvImageChannelOrderRGB
= 4,
234 SpvImageChannelOrderRGBA
= 5,
235 SpvImageChannelOrderBGRA
= 6,
236 SpvImageChannelOrderARGB
= 7,
237 SpvImageChannelOrderIntensity
= 8,
238 SpvImageChannelOrderLuminance
= 9,
239 SpvImageChannelOrderRx
= 10,
240 SpvImageChannelOrderRGx
= 11,
241 SpvImageChannelOrderRGBx
= 12,
242 SpvImageChannelOrderDepth
= 13,
243 SpvImageChannelOrderDepthStencil
= 14,
244 SpvImageChannelOrdersRGB
= 15,
245 SpvImageChannelOrdersRGBx
= 16,
246 SpvImageChannelOrdersRGBA
= 17,
247 SpvImageChannelOrdersBGRA
= 18,
248 SpvImageChannelOrderABGR
= 19,
249 SpvImageChannelOrderMax
= 0x7fffffff,
250 } SpvImageChannelOrder
;
252 typedef enum SpvImageChannelDataType_
{
253 SpvImageChannelDataTypeSnormInt8
= 0,
254 SpvImageChannelDataTypeSnormInt16
= 1,
255 SpvImageChannelDataTypeUnormInt8
= 2,
256 SpvImageChannelDataTypeUnormInt16
= 3,
257 SpvImageChannelDataTypeUnormShort565
= 4,
258 SpvImageChannelDataTypeUnormShort555
= 5,
259 SpvImageChannelDataTypeUnormInt101010
= 6,
260 SpvImageChannelDataTypeSignedInt8
= 7,
261 SpvImageChannelDataTypeSignedInt16
= 8,
262 SpvImageChannelDataTypeSignedInt32
= 9,
263 SpvImageChannelDataTypeUnsignedInt8
= 10,
264 SpvImageChannelDataTypeUnsignedInt16
= 11,
265 SpvImageChannelDataTypeUnsignedInt32
= 12,
266 SpvImageChannelDataTypeHalfFloat
= 13,
267 SpvImageChannelDataTypeFloat
= 14,
268 SpvImageChannelDataTypeUnormInt24
= 15,
269 SpvImageChannelDataTypeUnormInt101010_2
= 16,
270 SpvImageChannelDataTypeMax
= 0x7fffffff,
271 } SpvImageChannelDataType
;
273 typedef enum SpvImageOperandsShift_
{
274 SpvImageOperandsBiasShift
= 0,
275 SpvImageOperandsLodShift
= 1,
276 SpvImageOperandsGradShift
= 2,
277 SpvImageOperandsConstOffsetShift
= 3,
278 SpvImageOperandsOffsetShift
= 4,
279 SpvImageOperandsConstOffsetsShift
= 5,
280 SpvImageOperandsSampleShift
= 6,
281 SpvImageOperandsMinLodShift
= 7,
282 SpvImageOperandsMax
= 0x7fffffff,
283 } SpvImageOperandsShift
;
285 typedef enum SpvImageOperandsMask_
{
286 SpvImageOperandsMaskNone
= 0,
287 SpvImageOperandsBiasMask
= 0x00000001,
288 SpvImageOperandsLodMask
= 0x00000002,
289 SpvImageOperandsGradMask
= 0x00000004,
290 SpvImageOperandsConstOffsetMask
= 0x00000008,
291 SpvImageOperandsOffsetMask
= 0x00000010,
292 SpvImageOperandsConstOffsetsMask
= 0x00000020,
293 SpvImageOperandsSampleMask
= 0x00000040,
294 SpvImageOperandsMinLodMask
= 0x00000080,
295 } SpvImageOperandsMask
;
297 typedef enum SpvFPFastMathModeShift_
{
298 SpvFPFastMathModeNotNaNShift
= 0,
299 SpvFPFastMathModeNotInfShift
= 1,
300 SpvFPFastMathModeNSZShift
= 2,
301 SpvFPFastMathModeAllowRecipShift
= 3,
302 SpvFPFastMathModeFastShift
= 4,
303 SpvFPFastMathModeMax
= 0x7fffffff,
304 } SpvFPFastMathModeShift
;
306 typedef enum SpvFPFastMathModeMask_
{
307 SpvFPFastMathModeMaskNone
= 0,
308 SpvFPFastMathModeNotNaNMask
= 0x00000001,
309 SpvFPFastMathModeNotInfMask
= 0x00000002,
310 SpvFPFastMathModeNSZMask
= 0x00000004,
311 SpvFPFastMathModeAllowRecipMask
= 0x00000008,
312 SpvFPFastMathModeFastMask
= 0x00000010,
313 } SpvFPFastMathModeMask
;
315 typedef enum SpvFPRoundingMode_
{
316 SpvFPRoundingModeRTE
= 0,
317 SpvFPRoundingModeRTZ
= 1,
318 SpvFPRoundingModeRTP
= 2,
319 SpvFPRoundingModeRTN
= 3,
320 SpvFPRoundingModeMax
= 0x7fffffff,
323 typedef enum SpvLinkageType_
{
324 SpvLinkageTypeExport
= 0,
325 SpvLinkageTypeImport
= 1,
326 SpvLinkageTypeMax
= 0x7fffffff,
329 typedef enum SpvAccessQualifier_
{
330 SpvAccessQualifierReadOnly
= 0,
331 SpvAccessQualifierWriteOnly
= 1,
332 SpvAccessQualifierReadWrite
= 2,
333 SpvAccessQualifierMax
= 0x7fffffff,
334 } SpvAccessQualifier
;
336 typedef enum SpvFunctionParameterAttribute_
{
337 SpvFunctionParameterAttributeZext
= 0,
338 SpvFunctionParameterAttributeSext
= 1,
339 SpvFunctionParameterAttributeByVal
= 2,
340 SpvFunctionParameterAttributeSret
= 3,
341 SpvFunctionParameterAttributeNoAlias
= 4,
342 SpvFunctionParameterAttributeNoCapture
= 5,
343 SpvFunctionParameterAttributeNoWrite
= 6,
344 SpvFunctionParameterAttributeNoReadWrite
= 7,
345 SpvFunctionParameterAttributeMax
= 0x7fffffff,
346 } SpvFunctionParameterAttribute
;
348 typedef enum SpvDecoration_
{
349 SpvDecorationRelaxedPrecision
= 0,
350 SpvDecorationSpecId
= 1,
351 SpvDecorationBlock
= 2,
352 SpvDecorationBufferBlock
= 3,
353 SpvDecorationRowMajor
= 4,
354 SpvDecorationColMajor
= 5,
355 SpvDecorationArrayStride
= 6,
356 SpvDecorationMatrixStride
= 7,
357 SpvDecorationGLSLShared
= 8,
358 SpvDecorationGLSLPacked
= 9,
359 SpvDecorationCPacked
= 10,
360 SpvDecorationBuiltIn
= 11,
361 SpvDecorationNoPerspective
= 13,
362 SpvDecorationFlat
= 14,
363 SpvDecorationPatch
= 15,
364 SpvDecorationCentroid
= 16,
365 SpvDecorationSample
= 17,
366 SpvDecorationInvariant
= 18,
367 SpvDecorationRestrict
= 19,
368 SpvDecorationAliased
= 20,
369 SpvDecorationVolatile
= 21,
370 SpvDecorationConstant
= 22,
371 SpvDecorationCoherent
= 23,
372 SpvDecorationNonWritable
= 24,
373 SpvDecorationNonReadable
= 25,
374 SpvDecorationUniform
= 26,
375 SpvDecorationSaturatedConversion
= 28,
376 SpvDecorationStream
= 29,
377 SpvDecorationLocation
= 30,
378 SpvDecorationComponent
= 31,
379 SpvDecorationIndex
= 32,
380 SpvDecorationBinding
= 33,
381 SpvDecorationDescriptorSet
= 34,
382 SpvDecorationOffset
= 35,
383 SpvDecorationXfbBuffer
= 36,
384 SpvDecorationXfbStride
= 37,
385 SpvDecorationFuncParamAttr
= 38,
386 SpvDecorationFPRoundingMode
= 39,
387 SpvDecorationFPFastMathMode
= 40,
388 SpvDecorationLinkageAttributes
= 41,
389 SpvDecorationNoContraction
= 42,
390 SpvDecorationInputAttachmentIndex
= 43,
391 SpvDecorationAlignment
= 44,
392 SpvDecorationMaxByteOffset
= 45,
393 SpvDecorationAlignmentId
= 46,
394 SpvDecorationMaxByteOffsetId
= 47,
395 SpvDecorationExplicitInterpAMD
= 4999,
396 SpvDecorationOverrideCoverageNV
= 5248,
397 SpvDecorationPassthroughNV
= 5250,
398 SpvDecorationViewportRelativeNV
= 5252,
399 SpvDecorationSecondaryViewportRelativeNV
= 5256,
400 SpvDecorationMax
= 0x7fffffff,
403 typedef enum SpvBuiltIn_
{
404 SpvBuiltInPosition
= 0,
405 SpvBuiltInPointSize
= 1,
406 SpvBuiltInClipDistance
= 3,
407 SpvBuiltInCullDistance
= 4,
408 SpvBuiltInVertexId
= 5,
409 SpvBuiltInInstanceId
= 6,
410 SpvBuiltInPrimitiveId
= 7,
411 SpvBuiltInInvocationId
= 8,
413 SpvBuiltInViewportIndex
= 10,
414 SpvBuiltInTessLevelOuter
= 11,
415 SpvBuiltInTessLevelInner
= 12,
416 SpvBuiltInTessCoord
= 13,
417 SpvBuiltInPatchVertices
= 14,
418 SpvBuiltInFragCoord
= 15,
419 SpvBuiltInPointCoord
= 16,
420 SpvBuiltInFrontFacing
= 17,
421 SpvBuiltInSampleId
= 18,
422 SpvBuiltInSamplePosition
= 19,
423 SpvBuiltInSampleMask
= 20,
424 SpvBuiltInFragDepth
= 22,
425 SpvBuiltInHelperInvocation
= 23,
426 SpvBuiltInNumWorkgroups
= 24,
427 SpvBuiltInWorkgroupSize
= 25,
428 SpvBuiltInWorkgroupId
= 26,
429 SpvBuiltInLocalInvocationId
= 27,
430 SpvBuiltInGlobalInvocationId
= 28,
431 SpvBuiltInLocalInvocationIndex
= 29,
432 SpvBuiltInWorkDim
= 30,
433 SpvBuiltInGlobalSize
= 31,
434 SpvBuiltInEnqueuedWorkgroupSize
= 32,
435 SpvBuiltInGlobalOffset
= 33,
436 SpvBuiltInGlobalLinearId
= 34,
437 SpvBuiltInSubgroupSize
= 36,
438 SpvBuiltInSubgroupMaxSize
= 37,
439 SpvBuiltInNumSubgroups
= 38,
440 SpvBuiltInNumEnqueuedSubgroups
= 39,
441 SpvBuiltInSubgroupId
= 40,
442 SpvBuiltInSubgroupLocalInvocationId
= 41,
443 SpvBuiltInVertexIndex
= 42,
444 SpvBuiltInInstanceIndex
= 43,
445 SpvBuiltInSubgroupEqMaskKHR
= 4416,
446 SpvBuiltInSubgroupGeMaskKHR
= 4417,
447 SpvBuiltInSubgroupGtMaskKHR
= 4418,
448 SpvBuiltInSubgroupLeMaskKHR
= 4419,
449 SpvBuiltInSubgroupLtMaskKHR
= 4420,
450 SpvBuiltInBaseVertex
= 4424,
451 SpvBuiltInBaseInstance
= 4425,
452 SpvBuiltInDrawIndex
= 4426,
453 SpvBuiltInDeviceIndex
= 4438,
454 SpvBuiltInViewIndex
= 4440,
455 SpvBuiltInBaryCoordNoPerspAMD
= 4992,
456 SpvBuiltInBaryCoordNoPerspCentroidAMD
= 4993,
457 SpvBuiltInBaryCoordNoPerspSampleAMD
= 4994,
458 SpvBuiltInBaryCoordSmoothAMD
= 4995,
459 SpvBuiltInBaryCoordSmoothCentroidAMD
= 4996,
460 SpvBuiltInBaryCoordSmoothSampleAMD
= 4997,
461 SpvBuiltInBaryCoordPullModelAMD
= 4998,
462 SpvBuiltInFragStencilRefEXT
= 5014,
463 SpvBuiltInViewportMaskNV
= 5253,
464 SpvBuiltInSecondaryPositionNV
= 5257,
465 SpvBuiltInSecondaryViewportMaskNV
= 5258,
466 SpvBuiltInPositionPerViewNV
= 5261,
467 SpvBuiltInViewportMaskPerViewNV
= 5262,
468 SpvBuiltInFullyCoveredEXT
= 5264,
469 SpvBuiltInMax
= 0x7fffffff,
472 typedef enum SpvSelectionControlShift_
{
473 SpvSelectionControlFlattenShift
= 0,
474 SpvSelectionControlDontFlattenShift
= 1,
475 SpvSelectionControlMax
= 0x7fffffff,
476 } SpvSelectionControlShift
;
478 typedef enum SpvSelectionControlMask_
{
479 SpvSelectionControlMaskNone
= 0,
480 SpvSelectionControlFlattenMask
= 0x00000001,
481 SpvSelectionControlDontFlattenMask
= 0x00000002,
482 } SpvSelectionControlMask
;
484 typedef enum SpvLoopControlShift_
{
485 SpvLoopControlUnrollShift
= 0,
486 SpvLoopControlDontUnrollShift
= 1,
487 SpvLoopControlDependencyInfiniteShift
= 2,
488 SpvLoopControlDependencyLengthShift
= 3,
489 SpvLoopControlMax
= 0x7fffffff,
490 } SpvLoopControlShift
;
492 typedef enum SpvLoopControlMask_
{
493 SpvLoopControlMaskNone
= 0,
494 SpvLoopControlUnrollMask
= 0x00000001,
495 SpvLoopControlDontUnrollMask
= 0x00000002,
496 SpvLoopControlDependencyInfiniteMask
= 0x00000004,
497 SpvLoopControlDependencyLengthMask
= 0x00000008,
498 } SpvLoopControlMask
;
500 typedef enum SpvFunctionControlShift_
{
501 SpvFunctionControlInlineShift
= 0,
502 SpvFunctionControlDontInlineShift
= 1,
503 SpvFunctionControlPureShift
= 2,
504 SpvFunctionControlConstShift
= 3,
505 SpvFunctionControlMax
= 0x7fffffff,
506 } SpvFunctionControlShift
;
508 typedef enum SpvFunctionControlMask_
{
509 SpvFunctionControlMaskNone
= 0,
510 SpvFunctionControlInlineMask
= 0x00000001,
511 SpvFunctionControlDontInlineMask
= 0x00000002,
512 SpvFunctionControlPureMask
= 0x00000004,
513 SpvFunctionControlConstMask
= 0x00000008,
514 } SpvFunctionControlMask
;
516 typedef enum SpvMemorySemanticsShift_
{
517 SpvMemorySemanticsAcquireShift
= 1,
518 SpvMemorySemanticsReleaseShift
= 2,
519 SpvMemorySemanticsAcquireReleaseShift
= 3,
520 SpvMemorySemanticsSequentiallyConsistentShift
= 4,
521 SpvMemorySemanticsUniformMemoryShift
= 6,
522 SpvMemorySemanticsSubgroupMemoryShift
= 7,
523 SpvMemorySemanticsWorkgroupMemoryShift
= 8,
524 SpvMemorySemanticsCrossWorkgroupMemoryShift
= 9,
525 SpvMemorySemanticsAtomicCounterMemoryShift
= 10,
526 SpvMemorySemanticsImageMemoryShift
= 11,
527 SpvMemorySemanticsMax
= 0x7fffffff,
528 } SpvMemorySemanticsShift
;
530 typedef enum SpvMemorySemanticsMask_
{
531 SpvMemorySemanticsMaskNone
= 0,
532 SpvMemorySemanticsAcquireMask
= 0x00000002,
533 SpvMemorySemanticsReleaseMask
= 0x00000004,
534 SpvMemorySemanticsAcquireReleaseMask
= 0x00000008,
535 SpvMemorySemanticsSequentiallyConsistentMask
= 0x00000010,
536 SpvMemorySemanticsUniformMemoryMask
= 0x00000040,
537 SpvMemorySemanticsSubgroupMemoryMask
= 0x00000080,
538 SpvMemorySemanticsWorkgroupMemoryMask
= 0x00000100,
539 SpvMemorySemanticsCrossWorkgroupMemoryMask
= 0x00000200,
540 SpvMemorySemanticsAtomicCounterMemoryMask
= 0x00000400,
541 SpvMemorySemanticsImageMemoryMask
= 0x00000800,
542 } SpvMemorySemanticsMask
;
544 typedef enum SpvMemoryAccessShift_
{
545 SpvMemoryAccessVolatileShift
= 0,
546 SpvMemoryAccessAlignedShift
= 1,
547 SpvMemoryAccessNontemporalShift
= 2,
548 SpvMemoryAccessMax
= 0x7fffffff,
549 } SpvMemoryAccessShift
;
551 typedef enum SpvMemoryAccessMask_
{
552 SpvMemoryAccessMaskNone
= 0,
553 SpvMemoryAccessVolatileMask
= 0x00000001,
554 SpvMemoryAccessAlignedMask
= 0x00000002,
555 SpvMemoryAccessNontemporalMask
= 0x00000004,
556 } SpvMemoryAccessMask
;
558 typedef enum SpvScope_
{
559 SpvScopeCrossDevice
= 0,
561 SpvScopeWorkgroup
= 2,
562 SpvScopeSubgroup
= 3,
563 SpvScopeInvocation
= 4,
564 SpvScopeMax
= 0x7fffffff,
567 typedef enum SpvGroupOperation_
{
568 SpvGroupOperationReduce
= 0,
569 SpvGroupOperationInclusiveScan
= 1,
570 SpvGroupOperationExclusiveScan
= 2,
571 SpvGroupOperationMax
= 0x7fffffff,
574 typedef enum SpvKernelEnqueueFlags_
{
575 SpvKernelEnqueueFlagsNoWait
= 0,
576 SpvKernelEnqueueFlagsWaitKernel
= 1,
577 SpvKernelEnqueueFlagsWaitWorkGroup
= 2,
578 SpvKernelEnqueueFlagsMax
= 0x7fffffff,
579 } SpvKernelEnqueueFlags
;
581 typedef enum SpvKernelProfilingInfoShift_
{
582 SpvKernelProfilingInfoCmdExecTimeShift
= 0,
583 SpvKernelProfilingInfoMax
= 0x7fffffff,
584 } SpvKernelProfilingInfoShift
;
586 typedef enum SpvKernelProfilingInfoMask_
{
587 SpvKernelProfilingInfoMaskNone
= 0,
588 SpvKernelProfilingInfoCmdExecTimeMask
= 0x00000001,
589 } SpvKernelProfilingInfoMask
;
591 typedef enum SpvCapability_
{
592 SpvCapabilityMatrix
= 0,
593 SpvCapabilityShader
= 1,
594 SpvCapabilityGeometry
= 2,
595 SpvCapabilityTessellation
= 3,
596 SpvCapabilityAddresses
= 4,
597 SpvCapabilityLinkage
= 5,
598 SpvCapabilityKernel
= 6,
599 SpvCapabilityVector16
= 7,
600 SpvCapabilityFloat16Buffer
= 8,
601 SpvCapabilityFloat16
= 9,
602 SpvCapabilityFloat64
= 10,
603 SpvCapabilityInt64
= 11,
604 SpvCapabilityInt64Atomics
= 12,
605 SpvCapabilityImageBasic
= 13,
606 SpvCapabilityImageReadWrite
= 14,
607 SpvCapabilityImageMipmap
= 15,
608 SpvCapabilityPipes
= 17,
609 SpvCapabilityGroups
= 18,
610 SpvCapabilityDeviceEnqueue
= 19,
611 SpvCapabilityLiteralSampler
= 20,
612 SpvCapabilityAtomicStorage
= 21,
613 SpvCapabilityInt16
= 22,
614 SpvCapabilityTessellationPointSize
= 23,
615 SpvCapabilityGeometryPointSize
= 24,
616 SpvCapabilityImageGatherExtended
= 25,
617 SpvCapabilityStorageImageMultisample
= 27,
618 SpvCapabilityUniformBufferArrayDynamicIndexing
= 28,
619 SpvCapabilitySampledImageArrayDynamicIndexing
= 29,
620 SpvCapabilityStorageBufferArrayDynamicIndexing
= 30,
621 SpvCapabilityStorageImageArrayDynamicIndexing
= 31,
622 SpvCapabilityClipDistance
= 32,
623 SpvCapabilityCullDistance
= 33,
624 SpvCapabilityImageCubeArray
= 34,
625 SpvCapabilitySampleRateShading
= 35,
626 SpvCapabilityImageRect
= 36,
627 SpvCapabilitySampledRect
= 37,
628 SpvCapabilityGenericPointer
= 38,
629 SpvCapabilityInt8
= 39,
630 SpvCapabilityInputAttachment
= 40,
631 SpvCapabilitySparseResidency
= 41,
632 SpvCapabilityMinLod
= 42,
633 SpvCapabilitySampled1D
= 43,
634 SpvCapabilityImage1D
= 44,
635 SpvCapabilitySampledCubeArray
= 45,
636 SpvCapabilitySampledBuffer
= 46,
637 SpvCapabilityImageBuffer
= 47,
638 SpvCapabilityImageMSArray
= 48,
639 SpvCapabilityStorageImageExtendedFormats
= 49,
640 SpvCapabilityImageQuery
= 50,
641 SpvCapabilityDerivativeControl
= 51,
642 SpvCapabilityInterpolationFunction
= 52,
643 SpvCapabilityTransformFeedback
= 53,
644 SpvCapabilityGeometryStreams
= 54,
645 SpvCapabilityStorageImageReadWithoutFormat
= 55,
646 SpvCapabilityStorageImageWriteWithoutFormat
= 56,
647 SpvCapabilityMultiViewport
= 57,
648 SpvCapabilitySubgroupDispatch
= 58,
649 SpvCapabilityNamedBarrier
= 59,
650 SpvCapabilityPipeStorage
= 60,
651 SpvCapabilitySubgroupBallotKHR
= 4423,
652 SpvCapabilityDrawParameters
= 4427,
653 SpvCapabilitySubgroupVoteKHR
= 4431,
654 SpvCapabilityStorageBuffer16BitAccess
= 4433,
655 SpvCapabilityStorageUniformBufferBlock16
= 4433,
656 SpvCapabilityStorageUniform16
= 4434,
657 SpvCapabilityUniformAndStorageBuffer16BitAccess
= 4434,
658 SpvCapabilityStoragePushConstant16
= 4435,
659 SpvCapabilityStorageInputOutput16
= 4436,
660 SpvCapabilityDeviceGroup
= 4437,
661 SpvCapabilityMultiView
= 4439,
662 SpvCapabilityVariablePointersStorageBuffer
= 4441,
663 SpvCapabilityVariablePointers
= 4442,
664 SpvCapabilityAtomicStorageOps
= 4445,
665 SpvCapabilitySampleMaskPostDepthCoverage
= 4447,
666 SpvCapabilityImageGatherBiasLodAMD
= 5009,
667 SpvCapabilityFragmentMaskAMD
= 5010,
668 SpvCapabilityStencilExportEXT
= 5013,
669 SpvCapabilityImageReadWriteLodAMD
= 5015,
670 SpvCapabilitySampleMaskOverrideCoverageNV
= 5249,
671 SpvCapabilityGeometryShaderPassthroughNV
= 5251,
672 SpvCapabilityShaderViewportIndexLayerEXT
= 5254,
673 SpvCapabilityShaderViewportIndexLayerNV
= 5254,
674 SpvCapabilityShaderViewportMaskNV
= 5255,
675 SpvCapabilityShaderStereoViewNV
= 5259,
676 SpvCapabilityPerViewAttributesNV
= 5260,
677 SpvCapabilityFragmentFullyCoveredEXT
= 5265,
678 SpvCapabilitySubgroupShuffleINTEL
= 5568,
679 SpvCapabilitySubgroupBufferBlockIOINTEL
= 5569,
680 SpvCapabilitySubgroupImageBlockIOINTEL
= 5570,
681 SpvCapabilityMax
= 0x7fffffff,
684 typedef enum SpvOp_
{
687 SpvOpSourceContinued
= 2,
689 SpvOpSourceExtension
= 4,
695 SpvOpExtInstImport
= 11,
697 SpvOpMemoryModel
= 14,
698 SpvOpEntryPoint
= 15,
699 SpvOpExecutionMode
= 16,
700 SpvOpCapability
= 17,
705 SpvOpTypeVector
= 23,
706 SpvOpTypeMatrix
= 24,
708 SpvOpTypeSampler
= 26,
709 SpvOpTypeSampledImage
= 27,
711 SpvOpTypeRuntimeArray
= 29,
712 SpvOpTypeStruct
= 30,
713 SpvOpTypeOpaque
= 31,
714 SpvOpTypePointer
= 32,
715 SpvOpTypeFunction
= 33,
717 SpvOpTypeDeviceEvent
= 35,
718 SpvOpTypeReserveId
= 36,
721 SpvOpTypeForwardPointer
= 39,
722 SpvOpConstantTrue
= 41,
723 SpvOpConstantFalse
= 42,
725 SpvOpConstantComposite
= 44,
726 SpvOpConstantSampler
= 45,
727 SpvOpConstantNull
= 46,
728 SpvOpSpecConstantTrue
= 48,
729 SpvOpSpecConstantFalse
= 49,
730 SpvOpSpecConstant
= 50,
731 SpvOpSpecConstantComposite
= 51,
732 SpvOpSpecConstantOp
= 52,
734 SpvOpFunctionParameter
= 55,
735 SpvOpFunctionEnd
= 56,
736 SpvOpFunctionCall
= 57,
738 SpvOpImageTexelPointer
= 60,
741 SpvOpCopyMemory
= 63,
742 SpvOpCopyMemorySized
= 64,
743 SpvOpAccessChain
= 65,
744 SpvOpInBoundsAccessChain
= 66,
745 SpvOpPtrAccessChain
= 67,
746 SpvOpArrayLength
= 68,
747 SpvOpGenericPtrMemSemantics
= 69,
748 SpvOpInBoundsPtrAccessChain
= 70,
750 SpvOpMemberDecorate
= 72,
751 SpvOpDecorationGroup
= 73,
752 SpvOpGroupDecorate
= 74,
753 SpvOpGroupMemberDecorate
= 75,
754 SpvOpVectorExtractDynamic
= 77,
755 SpvOpVectorInsertDynamic
= 78,
756 SpvOpVectorShuffle
= 79,
757 SpvOpCompositeConstruct
= 80,
758 SpvOpCompositeExtract
= 81,
759 SpvOpCompositeInsert
= 82,
760 SpvOpCopyObject
= 83,
762 SpvOpSampledImage
= 86,
763 SpvOpImageSampleImplicitLod
= 87,
764 SpvOpImageSampleExplicitLod
= 88,
765 SpvOpImageSampleDrefImplicitLod
= 89,
766 SpvOpImageSampleDrefExplicitLod
= 90,
767 SpvOpImageSampleProjImplicitLod
= 91,
768 SpvOpImageSampleProjExplicitLod
= 92,
769 SpvOpImageSampleProjDrefImplicitLod
= 93,
770 SpvOpImageSampleProjDrefExplicitLod
= 94,
771 SpvOpImageFetch
= 95,
772 SpvOpImageGather
= 96,
773 SpvOpImageDrefGather
= 97,
775 SpvOpImageWrite
= 99,
777 SpvOpImageQueryFormat
= 101,
778 SpvOpImageQueryOrder
= 102,
779 SpvOpImageQuerySizeLod
= 103,
780 SpvOpImageQuerySize
= 104,
781 SpvOpImageQueryLod
= 105,
782 SpvOpImageQueryLevels
= 106,
783 SpvOpImageQuerySamples
= 107,
784 SpvOpConvertFToU
= 109,
785 SpvOpConvertFToS
= 110,
786 SpvOpConvertSToF
= 111,
787 SpvOpConvertUToF
= 112,
791 SpvOpQuantizeToF16
= 116,
792 SpvOpConvertPtrToU
= 117,
793 SpvOpSatConvertSToU
= 118,
794 SpvOpSatConvertUToS
= 119,
795 SpvOpConvertUToPtr
= 120,
796 SpvOpPtrCastToGeneric
= 121,
797 SpvOpGenericCastToPtr
= 122,
798 SpvOpGenericCastToPtrExplicit
= 123,
816 SpvOpVectorTimesScalar
= 142,
817 SpvOpMatrixTimesScalar
= 143,
818 SpvOpVectorTimesMatrix
= 144,
819 SpvOpMatrixTimesVector
= 145,
820 SpvOpMatrixTimesMatrix
= 146,
821 SpvOpOuterProduct
= 147,
823 SpvOpIAddCarry
= 149,
824 SpvOpISubBorrow
= 150,
825 SpvOpUMulExtended
= 151,
826 SpvOpSMulExtended
= 152,
833 SpvOpSignBitSet
= 160,
834 SpvOpLessOrGreater
= 161,
836 SpvOpUnordered
= 163,
837 SpvOpLogicalEqual
= 164,
838 SpvOpLogicalNotEqual
= 165,
839 SpvOpLogicalOr
= 166,
840 SpvOpLogicalAnd
= 167,
841 SpvOpLogicalNot
= 168,
844 SpvOpINotEqual
= 171,
845 SpvOpUGreaterThan
= 172,
846 SpvOpSGreaterThan
= 173,
847 SpvOpUGreaterThanEqual
= 174,
848 SpvOpSGreaterThanEqual
= 175,
849 SpvOpULessThan
= 176,
850 SpvOpSLessThan
= 177,
851 SpvOpULessThanEqual
= 178,
852 SpvOpSLessThanEqual
= 179,
853 SpvOpFOrdEqual
= 180,
854 SpvOpFUnordEqual
= 181,
855 SpvOpFOrdNotEqual
= 182,
856 SpvOpFUnordNotEqual
= 183,
857 SpvOpFOrdLessThan
= 184,
858 SpvOpFUnordLessThan
= 185,
859 SpvOpFOrdGreaterThan
= 186,
860 SpvOpFUnordGreaterThan
= 187,
861 SpvOpFOrdLessThanEqual
= 188,
862 SpvOpFUnordLessThanEqual
= 189,
863 SpvOpFOrdGreaterThanEqual
= 190,
864 SpvOpFUnordGreaterThanEqual
= 191,
865 SpvOpShiftRightLogical
= 194,
866 SpvOpShiftRightArithmetic
= 195,
867 SpvOpShiftLeftLogical
= 196,
868 SpvOpBitwiseOr
= 197,
869 SpvOpBitwiseXor
= 198,
870 SpvOpBitwiseAnd
= 199,
872 SpvOpBitFieldInsert
= 201,
873 SpvOpBitFieldSExtract
= 202,
874 SpvOpBitFieldUExtract
= 203,
875 SpvOpBitReverse
= 204,
882 SpvOpFwidthFine
= 212,
883 SpvOpDPdxCoarse
= 213,
884 SpvOpDPdyCoarse
= 214,
885 SpvOpFwidthCoarse
= 215,
886 SpvOpEmitVertex
= 218,
887 SpvOpEndPrimitive
= 219,
888 SpvOpEmitStreamVertex
= 220,
889 SpvOpEndStreamPrimitive
= 221,
890 SpvOpControlBarrier
= 224,
891 SpvOpMemoryBarrier
= 225,
892 SpvOpAtomicLoad
= 227,
893 SpvOpAtomicStore
= 228,
894 SpvOpAtomicExchange
= 229,
895 SpvOpAtomicCompareExchange
= 230,
896 SpvOpAtomicCompareExchangeWeak
= 231,
897 SpvOpAtomicIIncrement
= 232,
898 SpvOpAtomicIDecrement
= 233,
899 SpvOpAtomicIAdd
= 234,
900 SpvOpAtomicISub
= 235,
901 SpvOpAtomicSMin
= 236,
902 SpvOpAtomicUMin
= 237,
903 SpvOpAtomicSMax
= 238,
904 SpvOpAtomicUMax
= 239,
905 SpvOpAtomicAnd
= 240,
907 SpvOpAtomicXor
= 242,
909 SpvOpLoopMerge
= 246,
910 SpvOpSelectionMerge
= 247,
913 SpvOpBranchConditional
= 250,
917 SpvOpReturnValue
= 254,
918 SpvOpUnreachable
= 255,
919 SpvOpLifetimeStart
= 256,
920 SpvOpLifetimeStop
= 257,
921 SpvOpGroupAsyncCopy
= 259,
922 SpvOpGroupWaitEvents
= 260,
925 SpvOpGroupBroadcast
= 263,
926 SpvOpGroupIAdd
= 264,
927 SpvOpGroupFAdd
= 265,
928 SpvOpGroupFMin
= 266,
929 SpvOpGroupUMin
= 267,
930 SpvOpGroupSMin
= 268,
931 SpvOpGroupFMax
= 269,
932 SpvOpGroupUMax
= 270,
933 SpvOpGroupSMax
= 271,
935 SpvOpWritePipe
= 275,
936 SpvOpReservedReadPipe
= 276,
937 SpvOpReservedWritePipe
= 277,
938 SpvOpReserveReadPipePackets
= 278,
939 SpvOpReserveWritePipePackets
= 279,
940 SpvOpCommitReadPipe
= 280,
941 SpvOpCommitWritePipe
= 281,
942 SpvOpIsValidReserveId
= 282,
943 SpvOpGetNumPipePackets
= 283,
944 SpvOpGetMaxPipePackets
= 284,
945 SpvOpGroupReserveReadPipePackets
= 285,
946 SpvOpGroupReserveWritePipePackets
= 286,
947 SpvOpGroupCommitReadPipe
= 287,
948 SpvOpGroupCommitWritePipe
= 288,
949 SpvOpEnqueueMarker
= 291,
950 SpvOpEnqueueKernel
= 292,
951 SpvOpGetKernelNDrangeSubGroupCount
= 293,
952 SpvOpGetKernelNDrangeMaxSubGroupSize
= 294,
953 SpvOpGetKernelWorkGroupSize
= 295,
954 SpvOpGetKernelPreferredWorkGroupSizeMultiple
= 296,
955 SpvOpRetainEvent
= 297,
956 SpvOpReleaseEvent
= 298,
957 SpvOpCreateUserEvent
= 299,
958 SpvOpIsValidEvent
= 300,
959 SpvOpSetUserEventStatus
= 301,
960 SpvOpCaptureEventProfilingInfo
= 302,
961 SpvOpGetDefaultQueue
= 303,
962 SpvOpBuildNDRange
= 304,
963 SpvOpImageSparseSampleImplicitLod
= 305,
964 SpvOpImageSparseSampleExplicitLod
= 306,
965 SpvOpImageSparseSampleDrefImplicitLod
= 307,
966 SpvOpImageSparseSampleDrefExplicitLod
= 308,
967 SpvOpImageSparseSampleProjImplicitLod
= 309,
968 SpvOpImageSparseSampleProjExplicitLod
= 310,
969 SpvOpImageSparseSampleProjDrefImplicitLod
= 311,
970 SpvOpImageSparseSampleProjDrefExplicitLod
= 312,
971 SpvOpImageSparseFetch
= 313,
972 SpvOpImageSparseGather
= 314,
973 SpvOpImageSparseDrefGather
= 315,
974 SpvOpImageSparseTexelsResident
= 316,
976 SpvOpAtomicFlagTestAndSet
= 318,
977 SpvOpAtomicFlagClear
= 319,
978 SpvOpImageSparseRead
= 320,
980 SpvOpTypePipeStorage
= 322,
981 SpvOpConstantPipeStorage
= 323,
982 SpvOpCreatePipeFromPipeStorage
= 324,
983 SpvOpGetKernelLocalSizeForSubgroupCount
= 325,
984 SpvOpGetKernelMaxNumSubgroups
= 326,
985 SpvOpTypeNamedBarrier
= 327,
986 SpvOpNamedBarrierInitialize
= 328,
987 SpvOpMemoryNamedBarrier
= 329,
988 SpvOpModuleProcessed
= 330,
989 SpvOpExecutionModeId
= 331,
990 SpvOpDecorateId
= 332,
991 SpvOpSubgroupBallotKHR
= 4421,
992 SpvOpSubgroupFirstInvocationKHR
= 4422,
993 SpvOpSubgroupAllKHR
= 4428,
994 SpvOpSubgroupAnyKHR
= 4429,
995 SpvOpSubgroupAllEqualKHR
= 4430,
996 SpvOpSubgroupReadInvocationKHR
= 4432,
997 SpvOpGroupIAddNonUniformAMD
= 5000,
998 SpvOpGroupFAddNonUniformAMD
= 5001,
999 SpvOpGroupFMinNonUniformAMD
= 5002,
1000 SpvOpGroupUMinNonUniformAMD
= 5003,
1001 SpvOpGroupSMinNonUniformAMD
= 5004,
1002 SpvOpGroupFMaxNonUniformAMD
= 5005,
1003 SpvOpGroupUMaxNonUniformAMD
= 5006,
1004 SpvOpGroupSMaxNonUniformAMD
= 5007,
1005 SpvOpFragmentMaskFetchAMD
= 5011,
1006 SpvOpFragmentFetchAMD
= 5012,
1007 SpvOpSubgroupShuffleINTEL
= 5571,
1008 SpvOpSubgroupShuffleDownINTEL
= 5572,
1009 SpvOpSubgroupShuffleUpINTEL
= 5573,
1010 SpvOpSubgroupShuffleXorINTEL
= 5574,
1011 SpvOpSubgroupBlockReadINTEL
= 5575,
1012 SpvOpSubgroupBlockWriteINTEL
= 5576,
1013 SpvOpSubgroupImageBlockReadINTEL
= 5577,
1014 SpvOpSubgroupImageBlockWriteINTEL
= 5578,
1015 SpvOpMax
= 0x7fffffff,
1018 #endif // #ifndef spirv_H