2 ** Copyright (c) 2014-2015 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 ** Specification revision 33.
34 ** Enumeration tokens for SPIR-V, in various styles:
35 ** C, C++, C++11, JSON, Lua, Python
37 ** - C will have tokens with a "Spv" prefix, e.g.: SpvSourceLanguageGLSL
38 ** - C++ will have tokens in the "spv" name space, e.g.: spv::SourceLanguageGLSL
39 ** - C++11 will use enum classes in the spv namespace, e.g.: spv::SourceLanguage::GLSL
40 ** - Lua will use tables, e.g.: spv.SourceLanguage.GLSL
41 ** - Python will use dictionaries, e.g.: spv['SourceLanguage']['GLSL']
43 ** Some tokens act like mask values, which can be OR'd together,
44 ** while others are mutually exclusive. The mask-like ones have
45 ** "Mask" in their name, and a parallel enum that has the shift
46 ** amount (1 << x) for each corresponding enumerant.
52 typedef unsigned int SpvId
;
54 static const unsigned int SpvMagicNumber
= 0x07230203;
55 static const unsigned int SpvVersion
= 99;
56 static const unsigned int SpvRevision
= 33;
57 static const unsigned int SpvOpCodeMask
= 0xffff;
58 static const unsigned int SpvWordCountShift
= 16;
60 typedef enum SpvSourceLanguage_
{
61 SpvSourceLanguageUnknown
= 0,
62 SpvSourceLanguageESSL
= 1,
63 SpvSourceLanguageGLSL
= 2,
64 SpvSourceLanguageOpenCL
= 3,
67 typedef enum SpvExecutionModel_
{
68 SpvExecutionModelVertex
= 0,
69 SpvExecutionModelTessellationControl
= 1,
70 SpvExecutionModelTessellationEvaluation
= 2,
71 SpvExecutionModelGeometry
= 3,
72 SpvExecutionModelFragment
= 4,
73 SpvExecutionModelGLCompute
= 5,
74 SpvExecutionModelKernel
= 6,
77 typedef enum SpvAddressingModel_
{
78 SpvAddressingModelLogical
= 0,
79 SpvAddressingModelPhysical32
= 1,
80 SpvAddressingModelPhysical64
= 2,
83 typedef enum SpvMemoryModel_
{
84 SpvMemoryModelSimple
= 0,
85 SpvMemoryModelGLSL450
= 1,
86 SpvMemoryModelOpenCL
= 2,
89 typedef enum SpvExecutionMode_
{
90 SpvExecutionModeInvocations
= 0,
91 SpvExecutionModeSpacingEqual
= 1,
92 SpvExecutionModeSpacingFractionalEven
= 2,
93 SpvExecutionModeSpacingFractionalOdd
= 3,
94 SpvExecutionModeVertexOrderCw
= 4,
95 SpvExecutionModeVertexOrderCcw
= 5,
96 SpvExecutionModePixelCenterInteger
= 6,
97 SpvExecutionModeOriginUpperLeft
= 7,
98 SpvExecutionModeOriginLowerLeft
= 8,
99 SpvExecutionModeEarlyFragmentTests
= 9,
100 SpvExecutionModePointMode
= 10,
101 SpvExecutionModeXfb
= 11,
102 SpvExecutionModeDepthReplacing
= 12,
103 SpvExecutionModeDepthGreater
= 14,
104 SpvExecutionModeDepthLess
= 15,
105 SpvExecutionModeDepthUnchanged
= 16,
106 SpvExecutionModeLocalSize
= 17,
107 SpvExecutionModeLocalSizeHint
= 18,
108 SpvExecutionModeInputPoints
= 19,
109 SpvExecutionModeInputLines
= 20,
110 SpvExecutionModeInputLinesAdjacency
= 21,
111 SpvExecutionModeInputTriangles
= 22,
112 SpvExecutionModeInputTrianglesAdjacency
= 23,
113 SpvExecutionModeInputQuads
= 24,
114 SpvExecutionModeInputIsolines
= 25,
115 SpvExecutionModeOutputVertices
= 26,
116 SpvExecutionModeOutputPoints
= 27,
117 SpvExecutionModeOutputLineStrip
= 28,
118 SpvExecutionModeOutputTriangleStrip
= 29,
119 SpvExecutionModeVecTypeHint
= 30,
120 SpvExecutionModeContractionOff
= 31,
121 SpvExecutionModeIndependentForwardProgress
= 32,
124 typedef enum SpvStorageClass_
{
125 SpvStorageClassUniformConstant
= 0,
126 SpvStorageClassInput
= 1,
127 SpvStorageClassUniform
= 2,
128 SpvStorageClassOutput
= 3,
129 SpvStorageClassWorkgroupLocal
= 4,
130 SpvStorageClassWorkgroupGlobal
= 5,
131 SpvStorageClassPrivateGlobal
= 6,
132 SpvStorageClassFunction
= 7,
133 SpvStorageClassGeneric
= 8,
134 SpvStorageClassPushConstant
= 9,
135 SpvStorageClassAtomicCounter
= 10,
136 SpvStorageClassImage
= 11,
139 typedef enum SpvDim_
{
146 SpvDimInputTarget
= 6,
149 typedef enum SpvSamplerAddressingMode_
{
150 SpvSamplerAddressingModeNone
= 0,
151 SpvSamplerAddressingModeClampToEdge
= 1,
152 SpvSamplerAddressingModeClamp
= 2,
153 SpvSamplerAddressingModeRepeat
= 3,
154 SpvSamplerAddressingModeRepeatMirrored
= 4,
155 } SpvSamplerAddressingMode
;
157 typedef enum SpvSamplerFilterMode_
{
158 SpvSamplerFilterModeNearest
= 0,
159 SpvSamplerFilterModeLinear
= 1,
160 } SpvSamplerFilterMode
;
162 typedef enum SpvImageFormat_
{
163 SpvImageFormatUnknown
= 0,
164 SpvImageFormatRgba32f
= 1,
165 SpvImageFormatRgba16f
= 2,
166 SpvImageFormatR32f
= 3,
167 SpvImageFormatRgba8
= 4,
168 SpvImageFormatRgba8Snorm
= 5,
169 SpvImageFormatRg32f
= 6,
170 SpvImageFormatRg16f
= 7,
171 SpvImageFormatR11fG11fB10f
= 8,
172 SpvImageFormatR16f
= 9,
173 SpvImageFormatRgba16
= 10,
174 SpvImageFormatRgb10A2
= 11,
175 SpvImageFormatRg16
= 12,
176 SpvImageFormatRg8
= 13,
177 SpvImageFormatR16
= 14,
178 SpvImageFormatR8
= 15,
179 SpvImageFormatRgba16Snorm
= 16,
180 SpvImageFormatRg16Snorm
= 17,
181 SpvImageFormatRg8Snorm
= 18,
182 SpvImageFormatR16Snorm
= 19,
183 SpvImageFormatR8Snorm
= 20,
184 SpvImageFormatRgba32i
= 21,
185 SpvImageFormatRgba16i
= 22,
186 SpvImageFormatRgba8i
= 23,
187 SpvImageFormatR32i
= 24,
188 SpvImageFormatRg32i
= 25,
189 SpvImageFormatRg16i
= 26,
190 SpvImageFormatRg8i
= 27,
191 SpvImageFormatR16i
= 28,
192 SpvImageFormatR8i
= 29,
193 SpvImageFormatRgba32ui
= 30,
194 SpvImageFormatRgba16ui
= 31,
195 SpvImageFormatRgba8ui
= 32,
196 SpvImageFormatR32ui
= 33,
197 SpvImageFormatRgb10a2ui
= 34,
198 SpvImageFormatRg32ui
= 35,
199 SpvImageFormatRg16ui
= 36,
200 SpvImageFormatRg8ui
= 37,
201 SpvImageFormatR16ui
= 38,
202 SpvImageFormatR8ui
= 39,
205 typedef enum SpvImageChannelOrder_
{
206 SpvImageChannelOrderR
= 0,
207 SpvImageChannelOrderA
= 1,
208 SpvImageChannelOrderRG
= 2,
209 SpvImageChannelOrderRA
= 3,
210 SpvImageChannelOrderRGB
= 4,
211 SpvImageChannelOrderRGBA
= 5,
212 SpvImageChannelOrderBGRA
= 6,
213 SpvImageChannelOrderARGB
= 7,
214 SpvImageChannelOrderIntensity
= 8,
215 SpvImageChannelOrderLuminance
= 9,
216 SpvImageChannelOrderRx
= 10,
217 SpvImageChannelOrderRGx
= 11,
218 SpvImageChannelOrderRGBx
= 12,
219 SpvImageChannelOrderDepth
= 13,
220 SpvImageChannelOrderDepthStencil
= 14,
221 SpvImageChannelOrdersRGB
= 15,
222 SpvImageChannelOrdersRGBx
= 16,
223 SpvImageChannelOrdersRGBA
= 17,
224 SpvImageChannelOrdersBGRA
= 18,
225 } SpvImageChannelOrder
;
227 typedef enum SpvImageChannelDataType_
{
228 SpvImageChannelDataTypeSnormInt8
= 0,
229 SpvImageChannelDataTypeSnormInt16
= 1,
230 SpvImageChannelDataTypeUnormInt8
= 2,
231 SpvImageChannelDataTypeUnormInt16
= 3,
232 SpvImageChannelDataTypeUnormShort565
= 4,
233 SpvImageChannelDataTypeUnormShort555
= 5,
234 SpvImageChannelDataTypeUnormInt101010
= 6,
235 SpvImageChannelDataTypeSignedInt8
= 7,
236 SpvImageChannelDataTypeSignedInt16
= 8,
237 SpvImageChannelDataTypeSignedInt32
= 9,
238 SpvImageChannelDataTypeUnsignedInt8
= 10,
239 SpvImageChannelDataTypeUnsignedInt16
= 11,
240 SpvImageChannelDataTypeUnsignedInt32
= 12,
241 SpvImageChannelDataTypeHalfFloat
= 13,
242 SpvImageChannelDataTypeFloat
= 14,
243 SpvImageChannelDataTypeUnormInt24
= 15,
244 } SpvImageChannelDataType
;
246 typedef enum SpvImageOperandsShift_
{
247 SpvImageOperandsBiasShift
= 0,
248 SpvImageOperandsLodShift
= 1,
249 SpvImageOperandsGradShift
= 2,
250 SpvImageOperandsConstOffsetShift
= 3,
251 SpvImageOperandsOffsetShift
= 4,
252 SpvImageOperandsConstOffsetsShift
= 5,
253 SpvImageOperandsSampleShift
= 6,
254 SpvImageOperandsMinLodShift
= 7,
255 } SpvImageOperandsShift
;
257 typedef enum SpvImageOperandsMask_
{
258 SpvImageOperandsMaskNone
= 0,
259 SpvImageOperandsBiasMask
= 0x00000001,
260 SpvImageOperandsLodMask
= 0x00000002,
261 SpvImageOperandsGradMask
= 0x00000004,
262 SpvImageOperandsConstOffsetMask
= 0x00000008,
263 SpvImageOperandsOffsetMask
= 0x00000010,
264 SpvImageOperandsConstOffsetsMask
= 0x00000020,
265 SpvImageOperandsSampleMask
= 0x00000040,
266 SpvImageOperandsMinLodMask
= 0x00000080,
267 } SpvImageOperandsMask
;
269 typedef enum SpvFPFastMathModeShift_
{
270 SpvFPFastMathModeNotNaNShift
= 0,
271 SpvFPFastMathModeNotInfShift
= 1,
272 SpvFPFastMathModeNSZShift
= 2,
273 SpvFPFastMathModeAllowRecipShift
= 3,
274 SpvFPFastMathModeFastShift
= 4,
275 } SpvFPFastMathModeShift
;
277 typedef enum SpvFPFastMathModeMask_
{
278 SpvFPFastMathModeMaskNone
= 0,
279 SpvFPFastMathModeNotNaNMask
= 0x00000001,
280 SpvFPFastMathModeNotInfMask
= 0x00000002,
281 SpvFPFastMathModeNSZMask
= 0x00000004,
282 SpvFPFastMathModeAllowRecipMask
= 0x00000008,
283 SpvFPFastMathModeFastMask
= 0x00000010,
284 } SpvFPFastMathModeMask
;
286 typedef enum SpvFPRoundingMode_
{
287 SpvFPRoundingModeRTE
= 0,
288 SpvFPRoundingModeRTZ
= 1,
289 SpvFPRoundingModeRTP
= 2,
290 SpvFPRoundingModeRTN
= 3,
293 typedef enum SpvLinkageType_
{
294 SpvLinkageTypeExport
= 0,
295 SpvLinkageTypeImport
= 1,
298 typedef enum SpvAccessQualifier_
{
299 SpvAccessQualifierReadOnly
= 0,
300 SpvAccessQualifierWriteOnly
= 1,
301 SpvAccessQualifierReadWrite
= 2,
302 } SpvAccessQualifier
;
304 typedef enum SpvFunctionParameterAttribute_
{
305 SpvFunctionParameterAttributeZext
= 0,
306 SpvFunctionParameterAttributeSext
= 1,
307 SpvFunctionParameterAttributeByVal
= 2,
308 SpvFunctionParameterAttributeSret
= 3,
309 SpvFunctionParameterAttributeNoAlias
= 4,
310 SpvFunctionParameterAttributeNoCapture
= 5,
311 SpvFunctionParameterAttributeNoWrite
= 6,
312 SpvFunctionParameterAttributeNoReadWrite
= 7,
313 } SpvFunctionParameterAttribute
;
315 typedef enum SpvDecoration_
{
316 SpvDecorationRelaxedPrecision
= 0,
317 SpvDecorationSpecId
= 1,
318 SpvDecorationBlock
= 2,
319 SpvDecorationBufferBlock
= 3,
320 SpvDecorationRowMajor
= 4,
321 SpvDecorationColMajor
= 5,
322 SpvDecorationArrayStride
= 6,
323 SpvDecorationMatrixStride
= 7,
324 SpvDecorationGLSLShared
= 8,
325 SpvDecorationGLSLPacked
= 9,
326 SpvDecorationCPacked
= 10,
327 SpvDecorationBuiltIn
= 11,
328 SpvDecorationSmooth
= 12,
329 SpvDecorationNoPerspective
= 13,
330 SpvDecorationFlat
= 14,
331 SpvDecorationPatch
= 15,
332 SpvDecorationCentroid
= 16,
333 SpvDecorationSample
= 17,
334 SpvDecorationInvariant
= 18,
335 SpvDecorationRestrict
= 19,
336 SpvDecorationAliased
= 20,
337 SpvDecorationVolatile
= 21,
338 SpvDecorationConstant
= 22,
339 SpvDecorationCoherent
= 23,
340 SpvDecorationNonWritable
= 24,
341 SpvDecorationNonReadable
= 25,
342 SpvDecorationUniform
= 26,
343 SpvDecorationSaturatedConversion
= 28,
344 SpvDecorationStream
= 29,
345 SpvDecorationLocation
= 30,
346 SpvDecorationComponent
= 31,
347 SpvDecorationIndex
= 32,
348 SpvDecorationBinding
= 33,
349 SpvDecorationDescriptorSet
= 34,
350 SpvDecorationOffset
= 35,
351 SpvDecorationXfbBuffer
= 36,
352 SpvDecorationXfbStride
= 37,
353 SpvDecorationFuncParamAttr
= 38,
354 SpvDecorationFPRoundingMode
= 39,
355 SpvDecorationFPFastMathMode
= 40,
356 SpvDecorationLinkageAttributes
= 41,
357 SpvDecorationNoContraction
= 42,
358 SpvDecorationInputTargetIndex
= 43,
359 SpvDecorationAlignment
= 44,
362 typedef enum SpvBuiltIn_
{
363 SpvBuiltInPosition
= 0,
364 SpvBuiltInPointSize
= 1,
365 SpvBuiltInClipDistance
= 3,
366 SpvBuiltInCullDistance
= 4,
367 SpvBuiltInVertexId
= 5,
368 SpvBuiltInInstanceId
= 6,
369 SpvBuiltInPrimitiveId
= 7,
370 SpvBuiltInInvocationId
= 8,
372 SpvBuiltInViewportIndex
= 10,
373 SpvBuiltInTessLevelOuter
= 11,
374 SpvBuiltInTessLevelInner
= 12,
375 SpvBuiltInTessCoord
= 13,
376 SpvBuiltInPatchVertices
= 14,
377 SpvBuiltInFragCoord
= 15,
378 SpvBuiltInPointCoord
= 16,
379 SpvBuiltInFrontFacing
= 17,
380 SpvBuiltInSampleId
= 18,
381 SpvBuiltInSamplePosition
= 19,
382 SpvBuiltInSampleMask
= 20,
383 SpvBuiltInFragColor
= 21,
384 SpvBuiltInFragDepth
= 22,
385 SpvBuiltInHelperInvocation
= 23,
386 SpvBuiltInNumWorkgroups
= 24,
387 SpvBuiltInWorkgroupSize
= 25,
388 SpvBuiltInWorkgroupId
= 26,
389 SpvBuiltInLocalInvocationId
= 27,
390 SpvBuiltInGlobalInvocationId
= 28,
391 SpvBuiltInLocalInvocationIndex
= 29,
392 SpvBuiltInWorkDim
= 30,
393 SpvBuiltInGlobalSize
= 31,
394 SpvBuiltInEnqueuedWorkgroupSize
= 32,
395 SpvBuiltInGlobalOffset
= 33,
396 SpvBuiltInGlobalLinearId
= 34,
397 SpvBuiltInWorkgroupLinearId
= 35,
398 SpvBuiltInSubgroupSize
= 36,
399 SpvBuiltInSubgroupMaxSize
= 37,
400 SpvBuiltInNumSubgroups
= 38,
401 SpvBuiltInNumEnqueuedSubgroups
= 39,
402 SpvBuiltInSubgroupId
= 40,
403 SpvBuiltInSubgroupLocalInvocationId
= 41,
404 SpvBuiltInVertexIndex
= 42,
405 SpvBuiltInInstanceIndex
= 43,
408 typedef enum SpvSelectionControlShift_
{
409 SpvSelectionControlFlattenShift
= 0,
410 SpvSelectionControlDontFlattenShift
= 1,
411 } SpvSelectionControlShift
;
413 typedef enum SpvSelectionControlMask_
{
414 SpvSelectionControlMaskNone
= 0,
415 SpvSelectionControlFlattenMask
= 0x00000001,
416 SpvSelectionControlDontFlattenMask
= 0x00000002,
417 } SpvSelectionControlMask
;
419 typedef enum SpvLoopControlShift_
{
420 SpvLoopControlUnrollShift
= 0,
421 SpvLoopControlDontUnrollShift
= 1,
422 } SpvLoopControlShift
;
424 typedef enum SpvLoopControlMask_
{
425 SpvLoopControlMaskNone
= 0,
426 SpvLoopControlUnrollMask
= 0x00000001,
427 SpvLoopControlDontUnrollMask
= 0x00000002,
428 } SpvLoopControlMask
;
430 typedef enum SpvFunctionControlShift_
{
431 SpvFunctionControlInlineShift
= 0,
432 SpvFunctionControlDontInlineShift
= 1,
433 SpvFunctionControlPureShift
= 2,
434 SpvFunctionControlConstShift
= 3,
435 } SpvFunctionControlShift
;
437 typedef enum SpvFunctionControlMask_
{
438 SpvFunctionControlMaskNone
= 0,
439 SpvFunctionControlInlineMask
= 0x00000001,
440 SpvFunctionControlDontInlineMask
= 0x00000002,
441 SpvFunctionControlPureMask
= 0x00000004,
442 SpvFunctionControlConstMask
= 0x00000008,
443 } SpvFunctionControlMask
;
445 typedef enum SpvMemorySemanticsShift_
{
446 SpvMemorySemanticsAcquireShift
= 1,
447 SpvMemorySemanticsReleaseShift
= 2,
448 SpvMemorySemanticsAcquireReleaseShift
= 3,
449 SpvMemorySemanticsSequentiallyConsistentShift
= 4,
450 SpvMemorySemanticsUniformMemoryShift
= 6,
451 SpvMemorySemanticsSubgroupMemoryShift
= 7,
452 SpvMemorySemanticsWorkgroupLocalMemoryShift
= 8,
453 SpvMemorySemanticsWorkgroupGlobalMemoryShift
= 9,
454 SpvMemorySemanticsAtomicCounterMemoryShift
= 10,
455 SpvMemorySemanticsImageMemoryShift
= 11,
456 } SpvMemorySemanticsShift
;
458 typedef enum SpvMemorySemanticsMask_
{
459 SpvMemorySemanticsMaskNone
= 0,
460 SpvMemorySemanticsAcquireMask
= 0x00000002,
461 SpvMemorySemanticsReleaseMask
= 0x00000004,
462 SpvMemorySemanticsAcquireReleaseMask
= 0x00000008,
463 SpvMemorySemanticsSequentiallyConsistentMask
= 0x00000010,
464 SpvMemorySemanticsUniformMemoryMask
= 0x00000040,
465 SpvMemorySemanticsSubgroupMemoryMask
= 0x00000080,
466 SpvMemorySemanticsWorkgroupLocalMemoryMask
= 0x00000100,
467 SpvMemorySemanticsWorkgroupGlobalMemoryMask
= 0x00000200,
468 SpvMemorySemanticsAtomicCounterMemoryMask
= 0x00000400,
469 SpvMemorySemanticsImageMemoryMask
= 0x00000800,
470 } SpvMemorySemanticsMask
;
472 typedef enum SpvMemoryAccessShift_
{
473 SpvMemoryAccessVolatileShift
= 0,
474 SpvMemoryAccessAlignedShift
= 1,
475 SpvMemoryAccessNontemporalShift
= 2,
476 } SpvMemoryAccessShift
;
478 typedef enum SpvMemoryAccessMask_
{
479 SpvMemoryAccessMaskNone
= 0,
480 SpvMemoryAccessVolatileMask
= 0x00000001,
481 SpvMemoryAccessAlignedMask
= 0x00000002,
482 SpvMemoryAccessNontemporalMask
= 0x00000004,
483 } SpvMemoryAccessMask
;
485 typedef enum SpvScope_
{
486 SpvScopeCrossDevice
= 0,
488 SpvScopeWorkgroup
= 2,
489 SpvScopeSubgroup
= 3,
490 SpvScopeInvocation
= 4,
493 typedef enum SpvGroupOperation_
{
494 SpvGroupOperationReduce
= 0,
495 SpvGroupOperationInclusiveScan
= 1,
496 SpvGroupOperationExclusiveScan
= 2,
499 typedef enum SpvKernelEnqueueFlags_
{
500 SpvKernelEnqueueFlagsNoWait
= 0,
501 SpvKernelEnqueueFlagsWaitKernel
= 1,
502 SpvKernelEnqueueFlagsWaitWorkGroup
= 2,
503 } SpvKernelEnqueueFlags
;
505 typedef enum SpvKernelProfilingInfoShift_
{
506 SpvKernelProfilingInfoCmdExecTimeShift
= 0,
507 } SpvKernelProfilingInfoShift
;
509 typedef enum SpvKernelProfilingInfoMask_
{
510 SpvKernelProfilingInfoMaskNone
= 0,
511 SpvKernelProfilingInfoCmdExecTimeMask
= 0x00000001,
512 } SpvKernelProfilingInfoMask
;
514 typedef enum SpvCapability_
{
515 SpvCapabilityMatrix
= 0,
516 SpvCapabilityShader
= 1,
517 SpvCapabilityGeometry
= 2,
518 SpvCapabilityTessellation
= 3,
519 SpvCapabilityAddresses
= 4,
520 SpvCapabilityLinkage
= 5,
521 SpvCapabilityKernel
= 6,
522 SpvCapabilityVector16
= 7,
523 SpvCapabilityFloat16Buffer
= 8,
524 SpvCapabilityFloat16
= 9,
525 SpvCapabilityFloat64
= 10,
526 SpvCapabilityInt64
= 11,
527 SpvCapabilityInt64Atomics
= 12,
528 SpvCapabilityImageBasic
= 13,
529 SpvCapabilityImageReadWrite
= 14,
530 SpvCapabilityImageMipmap
= 15,
531 SpvCapabilityImageSRGBWrite
= 16,
532 SpvCapabilityPipes
= 17,
533 SpvCapabilityGroups
= 18,
534 SpvCapabilityDeviceEnqueue
= 19,
535 SpvCapabilityLiteralSampler
= 20,
536 SpvCapabilityAtomicStorage
= 21,
537 SpvCapabilityInt16
= 22,
538 SpvCapabilityTessellationPointSize
= 23,
539 SpvCapabilityGeometryPointSize
= 24,
540 SpvCapabilityImageGatherExtended
= 25,
541 SpvCapabilityStorageImageExtendedFormats
= 26,
542 SpvCapabilityStorageImageMultisample
= 27,
543 SpvCapabilityUniformBufferArrayDynamicIndexing
= 28,
544 SpvCapabilitySampledImageArrayDynamicIndexing
= 29,
545 SpvCapabilityStorageBufferArrayDynamicIndexing
= 30,
546 SpvCapabilityStorageImageArrayDynamicIndexing
= 31,
547 SpvCapabilityClipDistance
= 32,
548 SpvCapabilityCullDistance
= 33,
549 SpvCapabilityImageCubeArray
= 34,
550 SpvCapabilitySampleRateShading
= 35,
551 SpvCapabilityImageRect
= 36,
552 SpvCapabilitySampledRect
= 37,
553 SpvCapabilityGenericPointer
= 38,
554 SpvCapabilityInt8
= 39,
555 SpvCapabilityInputTarget
= 40,
556 SpvCapabilitySparseResidency
= 41,
557 SpvCapabilityMinLod
= 42,
558 SpvCapabilitySampled1D
= 43,
559 SpvCapabilityImage1D
= 44,
560 SpvCapabilitySampledCubeArray
= 45,
561 SpvCapabilitySampledBuffer
= 46,
562 SpvCapabilityImageBuffer
= 47,
563 SpvCapabilityImageMSArray
= 48,
564 SpvCapabilityAdvancedFormats
= 49,
565 SpvCapabilityImageQuery
= 50,
566 SpvCapabilityDerivativeControl
= 51,
567 SpvCapabilityInterpolationFunction
= 52,
568 SpvCapabilityTransformFeedback
= 53,
571 typedef enum SpvOp_
{
574 SpvOpSourceContinued
= 2,
576 SpvOpSourceExtension
= 4,
582 SpvOpExtInstImport
= 11,
584 SpvOpMemoryModel
= 14,
585 SpvOpEntryPoint
= 15,
586 SpvOpExecutionMode
= 16,
587 SpvOpCapability
= 17,
592 SpvOpTypeVector
= 23,
593 SpvOpTypeMatrix
= 24,
595 SpvOpTypeSampler
= 26,
596 SpvOpTypeSampledImage
= 27,
598 SpvOpTypeRuntimeArray
= 29,
599 SpvOpTypeStruct
= 30,
600 SpvOpTypeOpaque
= 31,
601 SpvOpTypePointer
= 32,
602 SpvOpTypeFunction
= 33,
604 SpvOpTypeDeviceEvent
= 35,
605 SpvOpTypeReserveId
= 36,
608 SpvOpTypeForwardPointer
= 39,
609 SpvOpConstantTrue
= 41,
610 SpvOpConstantFalse
= 42,
612 SpvOpConstantComposite
= 44,
613 SpvOpConstantSampler
= 45,
614 SpvOpConstantNull
= 46,
615 SpvOpSpecConstantTrue
= 48,
616 SpvOpSpecConstantFalse
= 49,
617 SpvOpSpecConstant
= 50,
618 SpvOpSpecConstantComposite
= 51,
619 SpvOpSpecConstantOp
= 52,
621 SpvOpFunctionParameter
= 55,
622 SpvOpFunctionEnd
= 56,
623 SpvOpFunctionCall
= 57,
625 SpvOpImageTexelPointer
= 60,
628 SpvOpCopyMemory
= 63,
629 SpvOpCopyMemorySized
= 64,
630 SpvOpAccessChain
= 65,
631 SpvOpInBoundsAccessChain
= 66,
632 SpvOpPtrAccessChain
= 67,
633 SpvOpArrayLength
= 68,
634 SpvOpGenericPtrMemSemantics
= 69,
635 SpvOpInBoundsPtrAccessChain
= 70,
637 SpvOpMemberDecorate
= 72,
638 SpvOpDecorationGroup
= 73,
639 SpvOpGroupDecorate
= 74,
640 SpvOpGroupMemberDecorate
= 75,
641 SpvOpVectorExtractDynamic
= 77,
642 SpvOpVectorInsertDynamic
= 78,
643 SpvOpVectorShuffle
= 79,
644 SpvOpCompositeConstruct
= 80,
645 SpvOpCompositeExtract
= 81,
646 SpvOpCompositeInsert
= 82,
647 SpvOpCopyObject
= 83,
649 SpvOpSampledImage
= 86,
650 SpvOpImageSampleImplicitLod
= 87,
651 SpvOpImageSampleExplicitLod
= 88,
652 SpvOpImageSampleDrefImplicitLod
= 89,
653 SpvOpImageSampleDrefExplicitLod
= 90,
654 SpvOpImageSampleProjImplicitLod
= 91,
655 SpvOpImageSampleProjExplicitLod
= 92,
656 SpvOpImageSampleProjDrefImplicitLod
= 93,
657 SpvOpImageSampleProjDrefExplicitLod
= 94,
658 SpvOpImageFetch
= 95,
659 SpvOpImageGather
= 96,
660 SpvOpImageDrefGather
= 97,
662 SpvOpImageWrite
= 99,
663 SpvOpImageQueryFormat
= 101,
664 SpvOpImageQueryOrder
= 102,
665 SpvOpImageQuerySizeLod
= 103,
666 SpvOpImageQuerySize
= 104,
667 SpvOpImageQueryLod
= 105,
668 SpvOpImageQueryLevels
= 106,
669 SpvOpImageQuerySamples
= 107,
670 SpvOpConvertFToU
= 109,
671 SpvOpConvertFToS
= 110,
672 SpvOpConvertSToF
= 111,
673 SpvOpConvertUToF
= 112,
677 SpvOpQuantizeToF16
= 116,
678 SpvOpConvertPtrToU
= 117,
679 SpvOpSatConvertSToU
= 118,
680 SpvOpSatConvertUToS
= 119,
681 SpvOpConvertUToPtr
= 120,
682 SpvOpPtrCastToGeneric
= 121,
683 SpvOpGenericCastToPtr
= 122,
684 SpvOpGenericCastToPtrExplicit
= 123,
702 SpvOpVectorTimesScalar
= 142,
703 SpvOpMatrixTimesScalar
= 143,
704 SpvOpVectorTimesMatrix
= 144,
705 SpvOpMatrixTimesVector
= 145,
706 SpvOpMatrixTimesMatrix
= 146,
707 SpvOpOuterProduct
= 147,
709 SpvOpIAddCarry
= 149,
710 SpvOpISubBorrow
= 150,
711 SpvOpUMulExtended
= 151,
712 SpvOpSMulExtended
= 152,
719 SpvOpSignBitSet
= 160,
720 SpvOpLessOrGreater
= 161,
722 SpvOpUnordered
= 163,
723 SpvOpLogicalEqual
= 164,
724 SpvOpLogicalNotEqual
= 165,
725 SpvOpLogicalOr
= 166,
726 SpvOpLogicalAnd
= 167,
727 SpvOpLogicalNot
= 168,
730 SpvOpINotEqual
= 171,
731 SpvOpUGreaterThan
= 172,
732 SpvOpSGreaterThan
= 173,
733 SpvOpUGreaterThanEqual
= 174,
734 SpvOpSGreaterThanEqual
= 175,
735 SpvOpULessThan
= 176,
736 SpvOpSLessThan
= 177,
737 SpvOpULessThanEqual
= 178,
738 SpvOpSLessThanEqual
= 179,
739 SpvOpFOrdEqual
= 180,
740 SpvOpFUnordEqual
= 181,
741 SpvOpFOrdNotEqual
= 182,
742 SpvOpFUnordNotEqual
= 183,
743 SpvOpFOrdLessThan
= 184,
744 SpvOpFUnordLessThan
= 185,
745 SpvOpFOrdGreaterThan
= 186,
746 SpvOpFUnordGreaterThan
= 187,
747 SpvOpFOrdLessThanEqual
= 188,
748 SpvOpFUnordLessThanEqual
= 189,
749 SpvOpFOrdGreaterThanEqual
= 190,
750 SpvOpFUnordGreaterThanEqual
= 191,
751 SpvOpShiftRightLogical
= 194,
752 SpvOpShiftRightArithmetic
= 195,
753 SpvOpShiftLeftLogical
= 196,
754 SpvOpBitwiseOr
= 197,
755 SpvOpBitwiseXor
= 198,
756 SpvOpBitwiseAnd
= 199,
758 SpvOpBitFieldInsert
= 201,
759 SpvOpBitFieldSExtract
= 202,
760 SpvOpBitFieldUExtract
= 203,
761 SpvOpBitReverse
= 204,
768 SpvOpFwidthFine
= 212,
769 SpvOpDPdxCoarse
= 213,
770 SpvOpDPdyCoarse
= 214,
771 SpvOpFwidthCoarse
= 215,
772 SpvOpEmitVertex
= 218,
773 SpvOpEndPrimitive
= 219,
774 SpvOpEmitStreamVertex
= 220,
775 SpvOpEndStreamPrimitive
= 221,
776 SpvOpControlBarrier
= 224,
777 SpvOpMemoryBarrier
= 225,
778 SpvOpAtomicLoad
= 227,
779 SpvOpAtomicStore
= 228,
780 SpvOpAtomicExchange
= 229,
781 SpvOpAtomicCompareExchange
= 230,
782 SpvOpAtomicCompareExchangeWeak
= 231,
783 SpvOpAtomicIIncrement
= 232,
784 SpvOpAtomicIDecrement
= 233,
785 SpvOpAtomicIAdd
= 234,
786 SpvOpAtomicISub
= 235,
787 SpvOpAtomicSMin
= 236,
788 SpvOpAtomicUMin
= 237,
789 SpvOpAtomicSMax
= 238,
790 SpvOpAtomicUMax
= 239,
791 SpvOpAtomicAnd
= 240,
793 SpvOpAtomicXor
= 242,
795 SpvOpLoopMerge
= 246,
796 SpvOpSelectionMerge
= 247,
799 SpvOpBranchConditional
= 250,
803 SpvOpReturnValue
= 254,
804 SpvOpUnreachable
= 255,
805 SpvOpLifetimeStart
= 256,
806 SpvOpLifetimeStop
= 257,
807 SpvOpAsyncGroupCopy
= 259,
808 SpvOpWaitGroupEvents
= 260,
811 SpvOpGroupBroadcast
= 263,
812 SpvOpGroupIAdd
= 264,
813 SpvOpGroupFAdd
= 265,
814 SpvOpGroupFMin
= 266,
815 SpvOpGroupUMin
= 267,
816 SpvOpGroupSMin
= 268,
817 SpvOpGroupFMax
= 269,
818 SpvOpGroupUMax
= 270,
819 SpvOpGroupSMax
= 271,
821 SpvOpWritePipe
= 275,
822 SpvOpReservedReadPipe
= 276,
823 SpvOpReservedWritePipe
= 277,
824 SpvOpReserveReadPipePackets
= 278,
825 SpvOpReserveWritePipePackets
= 279,
826 SpvOpCommitReadPipe
= 280,
827 SpvOpCommitWritePipe
= 281,
828 SpvOpIsValidReserveId
= 282,
829 SpvOpGetNumPipePackets
= 283,
830 SpvOpGetMaxPipePackets
= 284,
831 SpvOpGroupReserveReadPipePackets
= 285,
832 SpvOpGroupReserveWritePipePackets
= 286,
833 SpvOpGroupCommitReadPipe
= 287,
834 SpvOpGroupCommitWritePipe
= 288,
835 SpvOpEnqueueMarker
= 291,
836 SpvOpEnqueueKernel
= 292,
837 SpvOpGetKernelNDrangeSubGroupCount
= 293,
838 SpvOpGetKernelNDrangeMaxSubGroupSize
= 294,
839 SpvOpGetKernelWorkGroupSize
= 295,
840 SpvOpGetKernelPreferredWorkGroupSizeMultiple
= 296,
841 SpvOpRetainEvent
= 297,
842 SpvOpReleaseEvent
= 298,
843 SpvOpCreateUserEvent
= 299,
844 SpvOpIsValidEvent
= 300,
845 SpvOpSetUserEventStatus
= 301,
846 SpvOpCaptureEventProfilingInfo
= 302,
847 SpvOpGetDefaultQueue
= 303,
848 SpvOpBuildNDRange
= 304,
849 SpvOpImageSparseSampleImplicitLod
= 305,
850 SpvOpImageSparseSampleExplicitLod
= 306,
851 SpvOpImageSparseSampleDrefImplicitLod
= 307,
852 SpvOpImageSparseSampleDrefExplicitLod
= 308,
853 SpvOpImageSparseSampleProjImplicitLod
= 309,
854 SpvOpImageSparseSampleProjExplicitLod
= 310,
855 SpvOpImageSparseSampleProjDrefImplicitLod
= 311,
856 SpvOpImageSparseSampleProjDrefExplicitLod
= 312,
857 SpvOpImageSparseFetch
= 313,
858 SpvOpImageSparseGather
= 314,
859 SpvOpImageSparseDrefGather
= 315,
860 SpvOpImageSparseTexelsResident
= 316,
862 SpvOpAtomicFlagTestAndSet
= 318,
863 SpvOpAtomicFlagClear
= 319,
866 #endif // #ifndef spirv_H