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 ** 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 0x10000
54 #define SPV_REVISION 2
56 static const unsigned int SpvMagicNumber
= 0x07230203;
57 static const unsigned int SpvVersion
= 0x00010000;
58 static const unsigned int SpvRevision
= 2;
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,
70 typedef enum SpvExecutionModel_
{
71 SpvExecutionModelVertex
= 0,
72 SpvExecutionModelTessellationControl
= 1,
73 SpvExecutionModelTessellationEvaluation
= 2,
74 SpvExecutionModelGeometry
= 3,
75 SpvExecutionModelFragment
= 4,
76 SpvExecutionModelGLCompute
= 5,
77 SpvExecutionModelKernel
= 6,
80 typedef enum SpvAddressingModel_
{
81 SpvAddressingModelLogical
= 0,
82 SpvAddressingModelPhysical32
= 1,
83 SpvAddressingModelPhysical64
= 2,
86 typedef enum SpvMemoryModel_
{
87 SpvMemoryModelSimple
= 0,
88 SpvMemoryModelGLSL450
= 1,
89 SpvMemoryModelOpenCL
= 2,
92 typedef enum SpvExecutionMode_
{
93 SpvExecutionModeInvocations
= 0,
94 SpvExecutionModeSpacingEqual
= 1,
95 SpvExecutionModeSpacingFractionalEven
= 2,
96 SpvExecutionModeSpacingFractionalOdd
= 3,
97 SpvExecutionModeVertexOrderCw
= 4,
98 SpvExecutionModeVertexOrderCcw
= 5,
99 SpvExecutionModePixelCenterInteger
= 6,
100 SpvExecutionModeOriginUpperLeft
= 7,
101 SpvExecutionModeOriginLowerLeft
= 8,
102 SpvExecutionModeEarlyFragmentTests
= 9,
103 SpvExecutionModePointMode
= 10,
104 SpvExecutionModeXfb
= 11,
105 SpvExecutionModeDepthReplacing
= 12,
106 SpvExecutionModeDepthGreater
= 14,
107 SpvExecutionModeDepthLess
= 15,
108 SpvExecutionModeDepthUnchanged
= 16,
109 SpvExecutionModeLocalSize
= 17,
110 SpvExecutionModeLocalSizeHint
= 18,
111 SpvExecutionModeInputPoints
= 19,
112 SpvExecutionModeInputLines
= 20,
113 SpvExecutionModeInputLinesAdjacency
= 21,
114 SpvExecutionModeTriangles
= 22,
115 SpvExecutionModeInputTrianglesAdjacency
= 23,
116 SpvExecutionModeQuads
= 24,
117 SpvExecutionModeIsolines
= 25,
118 SpvExecutionModeOutputVertices
= 26,
119 SpvExecutionModeOutputPoints
= 27,
120 SpvExecutionModeOutputLineStrip
= 28,
121 SpvExecutionModeOutputTriangleStrip
= 29,
122 SpvExecutionModeVecTypeHint
= 30,
123 SpvExecutionModeContractionOff
= 31,
126 typedef enum SpvStorageClass_
{
127 SpvStorageClassUniformConstant
= 0,
128 SpvStorageClassInput
= 1,
129 SpvStorageClassUniform
= 2,
130 SpvStorageClassOutput
= 3,
131 SpvStorageClassWorkgroup
= 4,
132 SpvStorageClassCrossWorkgroup
= 5,
133 SpvStorageClassPrivate
= 6,
134 SpvStorageClassFunction
= 7,
135 SpvStorageClassGeneric
= 8,
136 SpvStorageClassPushConstant
= 9,
137 SpvStorageClassAtomicCounter
= 10,
138 SpvStorageClassImage
= 11,
141 typedef enum SpvDim_
{
148 SpvDimSubpassData
= 6,
151 typedef enum SpvSamplerAddressingMode_
{
152 SpvSamplerAddressingModeNone
= 0,
153 SpvSamplerAddressingModeClampToEdge
= 1,
154 SpvSamplerAddressingModeClamp
= 2,
155 SpvSamplerAddressingModeRepeat
= 3,
156 SpvSamplerAddressingModeRepeatMirrored
= 4,
157 } SpvSamplerAddressingMode
;
159 typedef enum SpvSamplerFilterMode_
{
160 SpvSamplerFilterModeNearest
= 0,
161 SpvSamplerFilterModeLinear
= 1,
162 } SpvSamplerFilterMode
;
164 typedef enum SpvImageFormat_
{
165 SpvImageFormatUnknown
= 0,
166 SpvImageFormatRgba32f
= 1,
167 SpvImageFormatRgba16f
= 2,
168 SpvImageFormatR32f
= 3,
169 SpvImageFormatRgba8
= 4,
170 SpvImageFormatRgba8Snorm
= 5,
171 SpvImageFormatRg32f
= 6,
172 SpvImageFormatRg16f
= 7,
173 SpvImageFormatR11fG11fB10f
= 8,
174 SpvImageFormatR16f
= 9,
175 SpvImageFormatRgba16
= 10,
176 SpvImageFormatRgb10A2
= 11,
177 SpvImageFormatRg16
= 12,
178 SpvImageFormatRg8
= 13,
179 SpvImageFormatR16
= 14,
180 SpvImageFormatR8
= 15,
181 SpvImageFormatRgba16Snorm
= 16,
182 SpvImageFormatRg16Snorm
= 17,
183 SpvImageFormatRg8Snorm
= 18,
184 SpvImageFormatR16Snorm
= 19,
185 SpvImageFormatR8Snorm
= 20,
186 SpvImageFormatRgba32i
= 21,
187 SpvImageFormatRgba16i
= 22,
188 SpvImageFormatRgba8i
= 23,
189 SpvImageFormatR32i
= 24,
190 SpvImageFormatRg32i
= 25,
191 SpvImageFormatRg16i
= 26,
192 SpvImageFormatRg8i
= 27,
193 SpvImageFormatR16i
= 28,
194 SpvImageFormatR8i
= 29,
195 SpvImageFormatRgba32ui
= 30,
196 SpvImageFormatRgba16ui
= 31,
197 SpvImageFormatRgba8ui
= 32,
198 SpvImageFormatR32ui
= 33,
199 SpvImageFormatRgb10a2ui
= 34,
200 SpvImageFormatRg32ui
= 35,
201 SpvImageFormatRg16ui
= 36,
202 SpvImageFormatRg8ui
= 37,
203 SpvImageFormatR16ui
= 38,
204 SpvImageFormatR8ui
= 39,
207 typedef enum SpvImageChannelOrder_
{
208 SpvImageChannelOrderR
= 0,
209 SpvImageChannelOrderA
= 1,
210 SpvImageChannelOrderRG
= 2,
211 SpvImageChannelOrderRA
= 3,
212 SpvImageChannelOrderRGB
= 4,
213 SpvImageChannelOrderRGBA
= 5,
214 SpvImageChannelOrderBGRA
= 6,
215 SpvImageChannelOrderARGB
= 7,
216 SpvImageChannelOrderIntensity
= 8,
217 SpvImageChannelOrderLuminance
= 9,
218 SpvImageChannelOrderRx
= 10,
219 SpvImageChannelOrderRGx
= 11,
220 SpvImageChannelOrderRGBx
= 12,
221 SpvImageChannelOrderDepth
= 13,
222 SpvImageChannelOrderDepthStencil
= 14,
223 SpvImageChannelOrdersRGB
= 15,
224 SpvImageChannelOrdersRGBx
= 16,
225 SpvImageChannelOrdersRGBA
= 17,
226 SpvImageChannelOrdersBGRA
= 18,
227 } SpvImageChannelOrder
;
229 typedef enum SpvImageChannelDataType_
{
230 SpvImageChannelDataTypeSnormInt8
= 0,
231 SpvImageChannelDataTypeSnormInt16
= 1,
232 SpvImageChannelDataTypeUnormInt8
= 2,
233 SpvImageChannelDataTypeUnormInt16
= 3,
234 SpvImageChannelDataTypeUnormShort565
= 4,
235 SpvImageChannelDataTypeUnormShort555
= 5,
236 SpvImageChannelDataTypeUnormInt101010
= 6,
237 SpvImageChannelDataTypeSignedInt8
= 7,
238 SpvImageChannelDataTypeSignedInt16
= 8,
239 SpvImageChannelDataTypeSignedInt32
= 9,
240 SpvImageChannelDataTypeUnsignedInt8
= 10,
241 SpvImageChannelDataTypeUnsignedInt16
= 11,
242 SpvImageChannelDataTypeUnsignedInt32
= 12,
243 SpvImageChannelDataTypeHalfFloat
= 13,
244 SpvImageChannelDataTypeFloat
= 14,
245 SpvImageChannelDataTypeUnormInt24
= 15,
246 SpvImageChannelDataTypeUnormInt101010_2
= 16,
247 } SpvImageChannelDataType
;
249 typedef enum SpvImageOperandsShift_
{
250 SpvImageOperandsBiasShift
= 0,
251 SpvImageOperandsLodShift
= 1,
252 SpvImageOperandsGradShift
= 2,
253 SpvImageOperandsConstOffsetShift
= 3,
254 SpvImageOperandsOffsetShift
= 4,
255 SpvImageOperandsConstOffsetsShift
= 5,
256 SpvImageOperandsSampleShift
= 6,
257 SpvImageOperandsMinLodShift
= 7,
258 } SpvImageOperandsShift
;
260 typedef enum SpvImageOperandsMask_
{
261 SpvImageOperandsMaskNone
= 0,
262 SpvImageOperandsBiasMask
= 0x00000001,
263 SpvImageOperandsLodMask
= 0x00000002,
264 SpvImageOperandsGradMask
= 0x00000004,
265 SpvImageOperandsConstOffsetMask
= 0x00000008,
266 SpvImageOperandsOffsetMask
= 0x00000010,
267 SpvImageOperandsConstOffsetsMask
= 0x00000020,
268 SpvImageOperandsSampleMask
= 0x00000040,
269 SpvImageOperandsMinLodMask
= 0x00000080,
270 } SpvImageOperandsMask
;
272 typedef enum SpvFPFastMathModeShift_
{
273 SpvFPFastMathModeNotNaNShift
= 0,
274 SpvFPFastMathModeNotInfShift
= 1,
275 SpvFPFastMathModeNSZShift
= 2,
276 SpvFPFastMathModeAllowRecipShift
= 3,
277 SpvFPFastMathModeFastShift
= 4,
278 } SpvFPFastMathModeShift
;
280 typedef enum SpvFPFastMathModeMask_
{
281 SpvFPFastMathModeMaskNone
= 0,
282 SpvFPFastMathModeNotNaNMask
= 0x00000001,
283 SpvFPFastMathModeNotInfMask
= 0x00000002,
284 SpvFPFastMathModeNSZMask
= 0x00000004,
285 SpvFPFastMathModeAllowRecipMask
= 0x00000008,
286 SpvFPFastMathModeFastMask
= 0x00000010,
287 } SpvFPFastMathModeMask
;
289 typedef enum SpvFPRoundingMode_
{
290 SpvFPRoundingModeRTE
= 0,
291 SpvFPRoundingModeRTZ
= 1,
292 SpvFPRoundingModeRTP
= 2,
293 SpvFPRoundingModeRTN
= 3,
296 typedef enum SpvLinkageType_
{
297 SpvLinkageTypeExport
= 0,
298 SpvLinkageTypeImport
= 1,
301 typedef enum SpvAccessQualifier_
{
302 SpvAccessQualifierReadOnly
= 0,
303 SpvAccessQualifierWriteOnly
= 1,
304 SpvAccessQualifierReadWrite
= 2,
305 } SpvAccessQualifier
;
307 typedef enum SpvFunctionParameterAttribute_
{
308 SpvFunctionParameterAttributeZext
= 0,
309 SpvFunctionParameterAttributeSext
= 1,
310 SpvFunctionParameterAttributeByVal
= 2,
311 SpvFunctionParameterAttributeSret
= 3,
312 SpvFunctionParameterAttributeNoAlias
= 4,
313 SpvFunctionParameterAttributeNoCapture
= 5,
314 SpvFunctionParameterAttributeNoWrite
= 6,
315 SpvFunctionParameterAttributeNoReadWrite
= 7,
316 } SpvFunctionParameterAttribute
;
318 typedef enum SpvDecoration_
{
319 SpvDecorationRelaxedPrecision
= 0,
320 SpvDecorationSpecId
= 1,
321 SpvDecorationBlock
= 2,
322 SpvDecorationBufferBlock
= 3,
323 SpvDecorationRowMajor
= 4,
324 SpvDecorationColMajor
= 5,
325 SpvDecorationArrayStride
= 6,
326 SpvDecorationMatrixStride
= 7,
327 SpvDecorationGLSLShared
= 8,
328 SpvDecorationGLSLPacked
= 9,
329 SpvDecorationCPacked
= 10,
330 SpvDecorationBuiltIn
= 11,
331 SpvDecorationNoPerspective
= 13,
332 SpvDecorationFlat
= 14,
333 SpvDecorationPatch
= 15,
334 SpvDecorationCentroid
= 16,
335 SpvDecorationSample
= 17,
336 SpvDecorationInvariant
= 18,
337 SpvDecorationRestrict
= 19,
338 SpvDecorationAliased
= 20,
339 SpvDecorationVolatile
= 21,
340 SpvDecorationConstant
= 22,
341 SpvDecorationCoherent
= 23,
342 SpvDecorationNonWritable
= 24,
343 SpvDecorationNonReadable
= 25,
344 SpvDecorationUniform
= 26,
345 SpvDecorationSaturatedConversion
= 28,
346 SpvDecorationStream
= 29,
347 SpvDecorationLocation
= 30,
348 SpvDecorationComponent
= 31,
349 SpvDecorationIndex
= 32,
350 SpvDecorationBinding
= 33,
351 SpvDecorationDescriptorSet
= 34,
352 SpvDecorationOffset
= 35,
353 SpvDecorationXfbBuffer
= 36,
354 SpvDecorationXfbStride
= 37,
355 SpvDecorationFuncParamAttr
= 38,
356 SpvDecorationFPRoundingMode
= 39,
357 SpvDecorationFPFastMathMode
= 40,
358 SpvDecorationLinkageAttributes
= 41,
359 SpvDecorationNoContraction
= 42,
360 SpvDecorationInputAttachmentIndex
= 43,
361 SpvDecorationAlignment
= 44,
364 typedef enum SpvBuiltIn_
{
365 SpvBuiltInPosition
= 0,
366 SpvBuiltInPointSize
= 1,
367 SpvBuiltInClipDistance
= 3,
368 SpvBuiltInCullDistance
= 4,
369 SpvBuiltInVertexId
= 5,
370 SpvBuiltInInstanceId
= 6,
371 SpvBuiltInPrimitiveId
= 7,
372 SpvBuiltInInvocationId
= 8,
374 SpvBuiltInViewportIndex
= 10,
375 SpvBuiltInTessLevelOuter
= 11,
376 SpvBuiltInTessLevelInner
= 12,
377 SpvBuiltInTessCoord
= 13,
378 SpvBuiltInPatchVertices
= 14,
379 SpvBuiltInFragCoord
= 15,
380 SpvBuiltInPointCoord
= 16,
381 SpvBuiltInFrontFacing
= 17,
382 SpvBuiltInSampleId
= 18,
383 SpvBuiltInSamplePosition
= 19,
384 SpvBuiltInSampleMask
= 20,
385 SpvBuiltInFragDepth
= 22,
386 SpvBuiltInHelperInvocation
= 23,
387 SpvBuiltInNumWorkgroups
= 24,
388 SpvBuiltInWorkgroupSize
= 25,
389 SpvBuiltInWorkgroupId
= 26,
390 SpvBuiltInLocalInvocationId
= 27,
391 SpvBuiltInGlobalInvocationId
= 28,
392 SpvBuiltInLocalInvocationIndex
= 29,
393 SpvBuiltInWorkDim
= 30,
394 SpvBuiltInGlobalSize
= 31,
395 SpvBuiltInEnqueuedWorkgroupSize
= 32,
396 SpvBuiltInGlobalOffset
= 33,
397 SpvBuiltInGlobalLinearId
= 34,
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 SpvMemorySemanticsWorkgroupMemoryShift
= 8,
453 SpvMemorySemanticsCrossWorkgroupMemoryShift
= 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 SpvMemorySemanticsWorkgroupMemoryMask
= 0x00000100,
467 SpvMemorySemanticsCrossWorkgroupMemoryMask
= 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 SpvCapabilityPipes
= 17,
532 SpvCapabilityGroups
= 18,
533 SpvCapabilityDeviceEnqueue
= 19,
534 SpvCapabilityLiteralSampler
= 20,
535 SpvCapabilityAtomicStorage
= 21,
536 SpvCapabilityInt16
= 22,
537 SpvCapabilityTessellationPointSize
= 23,
538 SpvCapabilityGeometryPointSize
= 24,
539 SpvCapabilityImageGatherExtended
= 25,
540 SpvCapabilityStorageImageMultisample
= 27,
541 SpvCapabilityUniformBufferArrayDynamicIndexing
= 28,
542 SpvCapabilitySampledImageArrayDynamicIndexing
= 29,
543 SpvCapabilityStorageBufferArrayDynamicIndexing
= 30,
544 SpvCapabilityStorageImageArrayDynamicIndexing
= 31,
545 SpvCapabilityClipDistance
= 32,
546 SpvCapabilityCullDistance
= 33,
547 SpvCapabilityImageCubeArray
= 34,
548 SpvCapabilitySampleRateShading
= 35,
549 SpvCapabilityImageRect
= 36,
550 SpvCapabilitySampledRect
= 37,
551 SpvCapabilityGenericPointer
= 38,
552 SpvCapabilityInt8
= 39,
553 SpvCapabilityInputAttachment
= 40,
554 SpvCapabilitySparseResidency
= 41,
555 SpvCapabilityMinLod
= 42,
556 SpvCapabilitySampled1D
= 43,
557 SpvCapabilityImage1D
= 44,
558 SpvCapabilitySampledCubeArray
= 45,
559 SpvCapabilitySampledBuffer
= 46,
560 SpvCapabilityImageBuffer
= 47,
561 SpvCapabilityImageMSArray
= 48,
562 SpvCapabilityStorageImageExtendedFormats
= 49,
563 SpvCapabilityImageQuery
= 50,
564 SpvCapabilityDerivativeControl
= 51,
565 SpvCapabilityInterpolationFunction
= 52,
566 SpvCapabilityTransformFeedback
= 53,
567 SpvCapabilityGeometryStreams
= 54,
568 SpvCapabilityStorageImageReadWithoutFormat
= 55,
569 SpvCapabilityStorageImageWriteWithoutFormat
= 56,
570 SpvCapabilityMultiViewport
= 57,
573 typedef enum SpvOp_
{
576 SpvOpSourceContinued
= 2,
578 SpvOpSourceExtension
= 4,
584 SpvOpExtInstImport
= 11,
586 SpvOpMemoryModel
= 14,
587 SpvOpEntryPoint
= 15,
588 SpvOpExecutionMode
= 16,
589 SpvOpCapability
= 17,
594 SpvOpTypeVector
= 23,
595 SpvOpTypeMatrix
= 24,
597 SpvOpTypeSampler
= 26,
598 SpvOpTypeSampledImage
= 27,
600 SpvOpTypeRuntimeArray
= 29,
601 SpvOpTypeStruct
= 30,
602 SpvOpTypeOpaque
= 31,
603 SpvOpTypePointer
= 32,
604 SpvOpTypeFunction
= 33,
606 SpvOpTypeDeviceEvent
= 35,
607 SpvOpTypeReserveId
= 36,
610 SpvOpTypeForwardPointer
= 39,
611 SpvOpConstantTrue
= 41,
612 SpvOpConstantFalse
= 42,
614 SpvOpConstantComposite
= 44,
615 SpvOpConstantSampler
= 45,
616 SpvOpConstantNull
= 46,
617 SpvOpSpecConstantTrue
= 48,
618 SpvOpSpecConstantFalse
= 49,
619 SpvOpSpecConstant
= 50,
620 SpvOpSpecConstantComposite
= 51,
621 SpvOpSpecConstantOp
= 52,
623 SpvOpFunctionParameter
= 55,
624 SpvOpFunctionEnd
= 56,
625 SpvOpFunctionCall
= 57,
627 SpvOpImageTexelPointer
= 60,
630 SpvOpCopyMemory
= 63,
631 SpvOpCopyMemorySized
= 64,
632 SpvOpAccessChain
= 65,
633 SpvOpInBoundsAccessChain
= 66,
634 SpvOpPtrAccessChain
= 67,
635 SpvOpArrayLength
= 68,
636 SpvOpGenericPtrMemSemantics
= 69,
637 SpvOpInBoundsPtrAccessChain
= 70,
639 SpvOpMemberDecorate
= 72,
640 SpvOpDecorationGroup
= 73,
641 SpvOpGroupDecorate
= 74,
642 SpvOpGroupMemberDecorate
= 75,
643 SpvOpVectorExtractDynamic
= 77,
644 SpvOpVectorInsertDynamic
= 78,
645 SpvOpVectorShuffle
= 79,
646 SpvOpCompositeConstruct
= 80,
647 SpvOpCompositeExtract
= 81,
648 SpvOpCompositeInsert
= 82,
649 SpvOpCopyObject
= 83,
651 SpvOpSampledImage
= 86,
652 SpvOpImageSampleImplicitLod
= 87,
653 SpvOpImageSampleExplicitLod
= 88,
654 SpvOpImageSampleDrefImplicitLod
= 89,
655 SpvOpImageSampleDrefExplicitLod
= 90,
656 SpvOpImageSampleProjImplicitLod
= 91,
657 SpvOpImageSampleProjExplicitLod
= 92,
658 SpvOpImageSampleProjDrefImplicitLod
= 93,
659 SpvOpImageSampleProjDrefExplicitLod
= 94,
660 SpvOpImageFetch
= 95,
661 SpvOpImageGather
= 96,
662 SpvOpImageDrefGather
= 97,
664 SpvOpImageWrite
= 99,
666 SpvOpImageQueryFormat
= 101,
667 SpvOpImageQueryOrder
= 102,
668 SpvOpImageQuerySizeLod
= 103,
669 SpvOpImageQuerySize
= 104,
670 SpvOpImageQueryLod
= 105,
671 SpvOpImageQueryLevels
= 106,
672 SpvOpImageQuerySamples
= 107,
673 SpvOpConvertFToU
= 109,
674 SpvOpConvertFToS
= 110,
675 SpvOpConvertSToF
= 111,
676 SpvOpConvertUToF
= 112,
680 SpvOpQuantizeToF16
= 116,
681 SpvOpConvertPtrToU
= 117,
682 SpvOpSatConvertSToU
= 118,
683 SpvOpSatConvertUToS
= 119,
684 SpvOpConvertUToPtr
= 120,
685 SpvOpPtrCastToGeneric
= 121,
686 SpvOpGenericCastToPtr
= 122,
687 SpvOpGenericCastToPtrExplicit
= 123,
705 SpvOpVectorTimesScalar
= 142,
706 SpvOpMatrixTimesScalar
= 143,
707 SpvOpVectorTimesMatrix
= 144,
708 SpvOpMatrixTimesVector
= 145,
709 SpvOpMatrixTimesMatrix
= 146,
710 SpvOpOuterProduct
= 147,
712 SpvOpIAddCarry
= 149,
713 SpvOpISubBorrow
= 150,
714 SpvOpUMulExtended
= 151,
715 SpvOpSMulExtended
= 152,
722 SpvOpSignBitSet
= 160,
723 SpvOpLessOrGreater
= 161,
725 SpvOpUnordered
= 163,
726 SpvOpLogicalEqual
= 164,
727 SpvOpLogicalNotEqual
= 165,
728 SpvOpLogicalOr
= 166,
729 SpvOpLogicalAnd
= 167,
730 SpvOpLogicalNot
= 168,
733 SpvOpINotEqual
= 171,
734 SpvOpUGreaterThan
= 172,
735 SpvOpSGreaterThan
= 173,
736 SpvOpUGreaterThanEqual
= 174,
737 SpvOpSGreaterThanEqual
= 175,
738 SpvOpULessThan
= 176,
739 SpvOpSLessThan
= 177,
740 SpvOpULessThanEqual
= 178,
741 SpvOpSLessThanEqual
= 179,
742 SpvOpFOrdEqual
= 180,
743 SpvOpFUnordEqual
= 181,
744 SpvOpFOrdNotEqual
= 182,
745 SpvOpFUnordNotEqual
= 183,
746 SpvOpFOrdLessThan
= 184,
747 SpvOpFUnordLessThan
= 185,
748 SpvOpFOrdGreaterThan
= 186,
749 SpvOpFUnordGreaterThan
= 187,
750 SpvOpFOrdLessThanEqual
= 188,
751 SpvOpFUnordLessThanEqual
= 189,
752 SpvOpFOrdGreaterThanEqual
= 190,
753 SpvOpFUnordGreaterThanEqual
= 191,
754 SpvOpShiftRightLogical
= 194,
755 SpvOpShiftRightArithmetic
= 195,
756 SpvOpShiftLeftLogical
= 196,
757 SpvOpBitwiseOr
= 197,
758 SpvOpBitwiseXor
= 198,
759 SpvOpBitwiseAnd
= 199,
761 SpvOpBitFieldInsert
= 201,
762 SpvOpBitFieldSExtract
= 202,
763 SpvOpBitFieldUExtract
= 203,
764 SpvOpBitReverse
= 204,
771 SpvOpFwidthFine
= 212,
772 SpvOpDPdxCoarse
= 213,
773 SpvOpDPdyCoarse
= 214,
774 SpvOpFwidthCoarse
= 215,
775 SpvOpEmitVertex
= 218,
776 SpvOpEndPrimitive
= 219,
777 SpvOpEmitStreamVertex
= 220,
778 SpvOpEndStreamPrimitive
= 221,
779 SpvOpControlBarrier
= 224,
780 SpvOpMemoryBarrier
= 225,
781 SpvOpAtomicLoad
= 227,
782 SpvOpAtomicStore
= 228,
783 SpvOpAtomicExchange
= 229,
784 SpvOpAtomicCompareExchange
= 230,
785 SpvOpAtomicCompareExchangeWeak
= 231,
786 SpvOpAtomicIIncrement
= 232,
787 SpvOpAtomicIDecrement
= 233,
788 SpvOpAtomicIAdd
= 234,
789 SpvOpAtomicISub
= 235,
790 SpvOpAtomicSMin
= 236,
791 SpvOpAtomicUMin
= 237,
792 SpvOpAtomicSMax
= 238,
793 SpvOpAtomicUMax
= 239,
794 SpvOpAtomicAnd
= 240,
796 SpvOpAtomicXor
= 242,
798 SpvOpLoopMerge
= 246,
799 SpvOpSelectionMerge
= 247,
802 SpvOpBranchConditional
= 250,
806 SpvOpReturnValue
= 254,
807 SpvOpUnreachable
= 255,
808 SpvOpLifetimeStart
= 256,
809 SpvOpLifetimeStop
= 257,
810 SpvOpGroupAsyncCopy
= 259,
811 SpvOpGroupWaitEvents
= 260,
814 SpvOpGroupBroadcast
= 263,
815 SpvOpGroupIAdd
= 264,
816 SpvOpGroupFAdd
= 265,
817 SpvOpGroupFMin
= 266,
818 SpvOpGroupUMin
= 267,
819 SpvOpGroupSMin
= 268,
820 SpvOpGroupFMax
= 269,
821 SpvOpGroupUMax
= 270,
822 SpvOpGroupSMax
= 271,
824 SpvOpWritePipe
= 275,
825 SpvOpReservedReadPipe
= 276,
826 SpvOpReservedWritePipe
= 277,
827 SpvOpReserveReadPipePackets
= 278,
828 SpvOpReserveWritePipePackets
= 279,
829 SpvOpCommitReadPipe
= 280,
830 SpvOpCommitWritePipe
= 281,
831 SpvOpIsValidReserveId
= 282,
832 SpvOpGetNumPipePackets
= 283,
833 SpvOpGetMaxPipePackets
= 284,
834 SpvOpGroupReserveReadPipePackets
= 285,
835 SpvOpGroupReserveWritePipePackets
= 286,
836 SpvOpGroupCommitReadPipe
= 287,
837 SpvOpGroupCommitWritePipe
= 288,
838 SpvOpEnqueueMarker
= 291,
839 SpvOpEnqueueKernel
= 292,
840 SpvOpGetKernelNDrangeSubGroupCount
= 293,
841 SpvOpGetKernelNDrangeMaxSubGroupSize
= 294,
842 SpvOpGetKernelWorkGroupSize
= 295,
843 SpvOpGetKernelPreferredWorkGroupSizeMultiple
= 296,
844 SpvOpRetainEvent
= 297,
845 SpvOpReleaseEvent
= 298,
846 SpvOpCreateUserEvent
= 299,
847 SpvOpIsValidEvent
= 300,
848 SpvOpSetUserEventStatus
= 301,
849 SpvOpCaptureEventProfilingInfo
= 302,
850 SpvOpGetDefaultQueue
= 303,
851 SpvOpBuildNDRange
= 304,
852 SpvOpImageSparseSampleImplicitLod
= 305,
853 SpvOpImageSparseSampleExplicitLod
= 306,
854 SpvOpImageSparseSampleDrefImplicitLod
= 307,
855 SpvOpImageSparseSampleDrefExplicitLod
= 308,
856 SpvOpImageSparseSampleProjImplicitLod
= 309,
857 SpvOpImageSparseSampleProjExplicitLod
= 310,
858 SpvOpImageSparseSampleProjDrefImplicitLod
= 311,
859 SpvOpImageSparseSampleProjDrefExplicitLod
= 312,
860 SpvOpImageSparseFetch
= 313,
861 SpvOpImageSparseGather
= 314,
862 SpvOpImageSparseDrefGather
= 315,
863 SpvOpImageSparseTexelsResident
= 316,
865 SpvOpAtomicFlagTestAndSet
= 318,
866 SpvOpAtomicFlagClear
= 319,
869 #endif // #ifndef spirv_H