Commit 4016e38b by John Kessenich

Build: Switch to Rev. 6 of headers, removing "BadValue" enum stuff.

Note: Technically, this is glslang's modified private copy of official headers. Official headers will appear in other places, like https://github.com/KhronosGroup/SPIRV-Headers.
parent efb89a3d
...@@ -301,7 +301,7 @@ spv::Decoration TranslateBlockDecoration(const glslang::TType& type) ...@@ -301,7 +301,7 @@ spv::Decoration TranslateBlockDecoration(const glslang::TType& type)
} }
} }
return (spv::Decoration)spv::BadValue; return spv::DecorationMax;
} }
// Translate glslang type to SPIR-V memory decorations. // Translate glslang type to SPIR-V memory decorations.
...@@ -330,12 +330,12 @@ spv::Decoration TranslateLayoutDecoration(const glslang::TType& type, glslang::T ...@@ -330,12 +330,12 @@ spv::Decoration TranslateLayoutDecoration(const glslang::TType& type, glslang::T
return spv::DecorationColMajor; return spv::DecorationColMajor;
default: default:
// opaque layouts don't need a majorness // opaque layouts don't need a majorness
return (spv::Decoration)spv::BadValue; return spv::DecorationMax;
} }
} else { } else {
switch (type.getBasicType()) { switch (type.getBasicType()) {
default: default:
return (spv::Decoration)spv::BadValue; return spv::DecorationMax;
break; break;
case glslang::EbtBlock: case glslang::EbtBlock:
switch (type.getQualifier().storage) { switch (type.getQualifier().storage) {
...@@ -345,38 +345,38 @@ spv::Decoration TranslateLayoutDecoration(const glslang::TType& type, glslang::T ...@@ -345,38 +345,38 @@ spv::Decoration TranslateLayoutDecoration(const glslang::TType& type, glslang::T
case glslang::ElpShared: return spv::DecorationGLSLShared; case glslang::ElpShared: return spv::DecorationGLSLShared;
case glslang::ElpPacked: return spv::DecorationGLSLPacked; case glslang::ElpPacked: return spv::DecorationGLSLPacked;
default: default:
return (spv::Decoration)spv::BadValue; return spv::DecorationMax;
} }
case glslang::EvqVaryingIn: case glslang::EvqVaryingIn:
case glslang::EvqVaryingOut: case glslang::EvqVaryingOut:
assert(type.getQualifier().layoutPacking == glslang::ElpNone); assert(type.getQualifier().layoutPacking == glslang::ElpNone);
return (spv::Decoration)spv::BadValue; return spv::DecorationMax;
default: default:
assert(0); assert(0);
return (spv::Decoration)spv::BadValue; return spv::DecorationMax;
} }
} }
} }
} }
// Translate glslang type to SPIR-V interpolation decorations. // Translate glslang type to SPIR-V interpolation decorations.
// Returns spv::Decoration(spv::BadValue) when no decoration // Returns spv::DecorationMax when no decoration
// should be applied. // should be applied.
spv::Decoration TranslateInterpolationDecoration(const glslang::TQualifier& qualifier) spv::Decoration TranslateInterpolationDecoration(const glslang::TQualifier& qualifier)
{ {
if (qualifier.smooth) if (qualifier.smooth)
// Smooth decoration doesn't exist in SPIR-V 1.0 // Smooth decoration doesn't exist in SPIR-V 1.0
return (spv::Decoration)spv::BadValue; return spv::DecorationMax;
else if (qualifier.nopersp) else if (qualifier.nopersp)
return spv::DecorationNoPerspective; return spv::DecorationNoPerspective;
else if (qualifier.flat) else if (qualifier.flat)
return spv::DecorationFlat; return spv::DecorationFlat;
else else
return (spv::Decoration)spv::BadValue; return spv::DecorationMax;
} }
// Translate glslang type to SPIR-V auxiliary storage decorations. // Translate glslang type to SPIR-V auxiliary storage decorations.
// Returns spv::Decoration(spv::BadValue) when no decoration // Returns spv::DecorationMax when no decoration
// should be applied. // should be applied.
spv::Decoration TGlslangToSpvTraverser::TranslateAuxiliaryStorageDecoration(const glslang::TQualifier& qualifier) spv::Decoration TGlslangToSpvTraverser::TranslateAuxiliaryStorageDecoration(const glslang::TQualifier& qualifier)
{ {
...@@ -388,7 +388,7 @@ spv::Decoration TGlslangToSpvTraverser::TranslateAuxiliaryStorageDecoration(cons ...@@ -388,7 +388,7 @@ spv::Decoration TGlslangToSpvTraverser::TranslateAuxiliaryStorageDecoration(cons
builder.addCapability(spv::CapabilitySampleRateShading); builder.addCapability(spv::CapabilitySampleRateShading);
return spv::DecorationSample; return spv::DecorationSample;
} else } else
return (spv::Decoration)spv::BadValue; return spv::DecorationMax;
} }
// If glslang type is invariant, return SPIR-V invariant decoration. // If glslang type is invariant, return SPIR-V invariant decoration.
...@@ -397,7 +397,7 @@ spv::Decoration TranslateInvariantDecoration(const glslang::TQualifier& qualifie ...@@ -397,7 +397,7 @@ spv::Decoration TranslateInvariantDecoration(const glslang::TQualifier& qualifie
if (qualifier.invariant) if (qualifier.invariant)
return spv::DecorationInvariant; return spv::DecorationInvariant;
else else
return (spv::Decoration)spv::BadValue; return spv::DecorationMax;
} }
// If glslang type is noContraction, return SPIR-V NoContraction decoration. // If glslang type is noContraction, return SPIR-V NoContraction decoration.
...@@ -406,7 +406,7 @@ spv::Decoration TranslateNoContractionDecoration(const glslang::TQualifier& qual ...@@ -406,7 +406,7 @@ spv::Decoration TranslateNoContractionDecoration(const glslang::TQualifier& qual
if (qualifier.noContraction) if (qualifier.noContraction)
return spv::DecorationNoContraction; return spv::DecorationNoContraction;
else else
return (spv::Decoration)spv::BadValue; return spv::DecorationMax;
} }
// Translate a glslang built-in variable to a SPIR-V built in decoration. Also generate // Translate a glslang built-in variable to a SPIR-V built in decoration. Also generate
...@@ -480,7 +480,7 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI ...@@ -480,7 +480,7 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI
case glslang::EbvDrawId: case glslang::EbvDrawId:
// TODO: Add SPIR-V builtin ID. // TODO: Add SPIR-V builtin ID.
logger->missingFunctionality("shader draw parameters"); logger->missingFunctionality("shader draw parameters");
return (spv::BuiltIn)spv::BadValue; return spv::BuiltInMax;
case glslang::EbvPrimitiveId: return spv::BuiltInPrimitiveId; case glslang::EbvPrimitiveId: return spv::BuiltInPrimitiveId;
case glslang::EbvInvocationId: return spv::BuiltInInvocationId; case glslang::EbvInvocationId: return spv::BuiltInInvocationId;
case glslang::EbvTessLevelInner: return spv::BuiltInTessLevelInner; case glslang::EbvTessLevelInner: return spv::BuiltInTessLevelInner;
...@@ -507,8 +507,8 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI ...@@ -507,8 +507,8 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI
case glslang::EbvSubGroupLtMask: case glslang::EbvSubGroupLtMask:
// TODO: Add SPIR-V builtin ID. // TODO: Add SPIR-V builtin ID.
logger->missingFunctionality("shader ballot"); logger->missingFunctionality("shader ballot");
return (spv::BuiltIn)spv::BadValue; return spv::BuiltInMax;
default: return (spv::BuiltIn)spv::BadValue; default: return spv::BuiltInMax;
} }
} }
...@@ -596,7 +596,7 @@ spv::ImageFormat TGlslangToSpvTraverser::TranslateImageFormat(const glslang::TTy ...@@ -596,7 +596,7 @@ spv::ImageFormat TGlslangToSpvTraverser::TranslateImageFormat(const glslang::TTy
case glslang::ElfRg8ui: return spv::ImageFormatRg8ui; case glslang::ElfRg8ui: return spv::ImageFormatRg8ui;
case glslang::ElfR16ui: return spv::ImageFormatR16ui; case glslang::ElfR16ui: return spv::ImageFormatR16ui;
case glslang::ElfR8ui: return spv::ImageFormatR8ui; case glslang::ElfR8ui: return spv::ImageFormatR8ui;
default: return (spv::ImageFormat)spv::BadValue; default: return spv::ImageFormatMax;
} }
} }
...@@ -705,26 +705,26 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(const glslang::TIntermediate* gls ...@@ -705,26 +705,26 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(const glslang::TIntermediate* gls
case glslang::ElgTriangles: mode = spv::ExecutionModeTriangles; break; case glslang::ElgTriangles: mode = spv::ExecutionModeTriangles; break;
case glslang::ElgQuads: mode = spv::ExecutionModeQuads; break; case glslang::ElgQuads: mode = spv::ExecutionModeQuads; break;
case glslang::ElgIsolines: mode = spv::ExecutionModeIsolines; break; case glslang::ElgIsolines: mode = spv::ExecutionModeIsolines; break;
default: mode = spv::BadValue; break; default: mode = spv::ExecutionModeMax; break;
} }
if (mode != spv::BadValue) if (mode != spv::ExecutionModeMax)
builder.addExecutionMode(shaderEntry, (spv::ExecutionMode)mode); builder.addExecutionMode(shaderEntry, (spv::ExecutionMode)mode);
switch (glslangIntermediate->getVertexSpacing()) { switch (glslangIntermediate->getVertexSpacing()) {
case glslang::EvsEqual: mode = spv::ExecutionModeSpacingEqual; break; case glslang::EvsEqual: mode = spv::ExecutionModeSpacingEqual; break;
case glslang::EvsFractionalEven: mode = spv::ExecutionModeSpacingFractionalEven; break; case glslang::EvsFractionalEven: mode = spv::ExecutionModeSpacingFractionalEven; break;
case glslang::EvsFractionalOdd: mode = spv::ExecutionModeSpacingFractionalOdd; break; case glslang::EvsFractionalOdd: mode = spv::ExecutionModeSpacingFractionalOdd; break;
default: mode = spv::BadValue; break; default: mode = spv::ExecutionModeMax; break;
} }
if (mode != spv::BadValue) if (mode != spv::ExecutionModeMax)
builder.addExecutionMode(shaderEntry, (spv::ExecutionMode)mode); builder.addExecutionMode(shaderEntry, (spv::ExecutionMode)mode);
switch (glslangIntermediate->getVertexOrder()) { switch (glslangIntermediate->getVertexOrder()) {
case glslang::EvoCw: mode = spv::ExecutionModeVertexOrderCw; break; case glslang::EvoCw: mode = spv::ExecutionModeVertexOrderCw; break;
case glslang::EvoCcw: mode = spv::ExecutionModeVertexOrderCcw; break; case glslang::EvoCcw: mode = spv::ExecutionModeVertexOrderCcw; break;
default: mode = spv::BadValue; break; default: mode = spv::ExecutionModeMax; break;
} }
if (mode != spv::BadValue) if (mode != spv::ExecutionModeMax)
builder.addExecutionMode(shaderEntry, (spv::ExecutionMode)mode); builder.addExecutionMode(shaderEntry, (spv::ExecutionMode)mode);
if (glslangIntermediate->getPointMode()) if (glslangIntermediate->getPointMode())
...@@ -739,9 +739,9 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(const glslang::TIntermediate* gls ...@@ -739,9 +739,9 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(const glslang::TIntermediate* gls
case glslang::ElgLinesAdjacency: mode = spv::ExecutionModeInputLinesAdjacency; break; case glslang::ElgLinesAdjacency: mode = spv::ExecutionModeInputLinesAdjacency; break;
case glslang::ElgTriangles: mode = spv::ExecutionModeTriangles; break; case glslang::ElgTriangles: mode = spv::ExecutionModeTriangles; break;
case glslang::ElgTrianglesAdjacency: mode = spv::ExecutionModeInputTrianglesAdjacency; break; case glslang::ElgTrianglesAdjacency: mode = spv::ExecutionModeInputTrianglesAdjacency; break;
default: mode = spv::BadValue; break; default: mode = spv::ExecutionModeMax; break;
} }
if (mode != spv::BadValue) if (mode != spv::ExecutionModeMax)
builder.addExecutionMode(shaderEntry, (spv::ExecutionMode)mode); builder.addExecutionMode(shaderEntry, (spv::ExecutionMode)mode);
builder.addExecutionMode(shaderEntry, spv::ExecutionModeInvocations, glslangIntermediate->getInvocations()); builder.addExecutionMode(shaderEntry, spv::ExecutionModeInvocations, glslangIntermediate->getInvocations());
...@@ -750,9 +750,9 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(const glslang::TIntermediate* gls ...@@ -750,9 +750,9 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(const glslang::TIntermediate* gls
case glslang::ElgPoints: mode = spv::ExecutionModeOutputPoints; break; case glslang::ElgPoints: mode = spv::ExecutionModeOutputPoints; break;
case glslang::ElgLineStrip: mode = spv::ExecutionModeOutputLineStrip; break; case glslang::ElgLineStrip: mode = spv::ExecutionModeOutputLineStrip; break;
case glslang::ElgTriangleStrip: mode = spv::ExecutionModeOutputTriangleStrip; break; case glslang::ElgTriangleStrip: mode = spv::ExecutionModeOutputTriangleStrip; break;
default: mode = spv::BadValue; break; default: mode = spv::ExecutionModeMax; break;
} }
if (mode != spv::BadValue) if (mode != spv::ExecutionModeMax)
builder.addExecutionMode(shaderEntry, (spv::ExecutionMode)mode); builder.addExecutionMode(shaderEntry, (spv::ExecutionMode)mode);
builder.addExecutionMode(shaderEntry, spv::ExecutionModeOutputVertices, glslangIntermediate->getVertices()); builder.addExecutionMode(shaderEntry, spv::ExecutionModeOutputVertices, glslangIntermediate->getVertices());
break; break;
...@@ -773,9 +773,9 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(const glslang::TIntermediate* gls ...@@ -773,9 +773,9 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(const glslang::TIntermediate* gls
switch(glslangIntermediate->getDepth()) { switch(glslangIntermediate->getDepth()) {
case glslang::EldGreater: mode = spv::ExecutionModeDepthGreater; break; case glslang::EldGreater: mode = spv::ExecutionModeDepthGreater; break;
case glslang::EldLess: mode = spv::ExecutionModeDepthLess; break; case glslang::EldLess: mode = spv::ExecutionModeDepthLess; break;
default: mode = spv::BadValue; break; default: mode = spv::ExecutionModeMax; break;
} }
if (mode != spv::BadValue) if (mode != spv::ExecutionModeMax)
builder.addExecutionMode(shaderEntry, (spv::ExecutionMode)mode); builder.addExecutionMode(shaderEntry, (spv::ExecutionMode)mode);
if (glslangIntermediate->getDepth() != glslang::EldUnchanged && glslangIntermediate->isDepthReplacing()) if (glslangIntermediate->getDepth() != glslang::EldUnchanged && glslangIntermediate->isDepthReplacing())
...@@ -2070,7 +2070,7 @@ void TGlslangToSpvTraverser::decorateStructType(const glslang::TType& type, ...@@ -2070,7 +2070,7 @@ void TGlslangToSpvTraverser::decorateStructType(const glslang::TType& type,
// built-in variable decorations // built-in variable decorations
spv::BuiltIn builtIn = TranslateBuiltInDecoration(glslangMember.getQualifier().builtIn, true); spv::BuiltIn builtIn = TranslateBuiltInDecoration(glslangMember.getQualifier().builtIn, true);
if (builtIn != spv::BadValue) if (builtIn != spv::BuiltInMax)
addMemberDecoration(spvType, member, spv::DecorationBuiltIn, (int)builtIn); addMemberDecoration(spvType, member, spv::DecorationBuiltIn, (int)builtIn);
} }
} }
...@@ -4122,7 +4122,7 @@ spv::Id TGlslangToSpvTraverser::getSymbolId(const glslang::TIntermSymbol* symbol ...@@ -4122,7 +4122,7 @@ spv::Id TGlslangToSpvTraverser::getSymbolId(const glslang::TIntermSymbol* symbol
// built-in variable decorations // built-in variable decorations
spv::BuiltIn builtIn = TranslateBuiltInDecoration(symbol->getQualifier().builtIn, false); spv::BuiltIn builtIn = TranslateBuiltInDecoration(symbol->getQualifier().builtIn, false);
if (builtIn != spv::BadValue) if (builtIn != spv::BuiltInMax)
addDecoration(id, spv::DecorationBuiltIn, (int)builtIn); addDecoration(id, spv::DecorationBuiltIn, (int)builtIn);
return id; return id;
...@@ -4131,28 +4131,28 @@ spv::Id TGlslangToSpvTraverser::getSymbolId(const glslang::TIntermSymbol* symbol ...@@ -4131,28 +4131,28 @@ spv::Id TGlslangToSpvTraverser::getSymbolId(const glslang::TIntermSymbol* symbol
// If 'dec' is valid, add no-operand decoration to an object // If 'dec' is valid, add no-operand decoration to an object
void TGlslangToSpvTraverser::addDecoration(spv::Id id, spv::Decoration dec) void TGlslangToSpvTraverser::addDecoration(spv::Id id, spv::Decoration dec)
{ {
if (dec != spv::BadValue) if (dec != spv::DecorationMax)
builder.addDecoration(id, dec); builder.addDecoration(id, dec);
} }
// If 'dec' is valid, add a one-operand decoration to an object // If 'dec' is valid, add a one-operand decoration to an object
void TGlslangToSpvTraverser::addDecoration(spv::Id id, spv::Decoration dec, unsigned value) void TGlslangToSpvTraverser::addDecoration(spv::Id id, spv::Decoration dec, unsigned value)
{ {
if (dec != spv::BadValue) if (dec != spv::DecorationMax)
builder.addDecoration(id, dec, value); builder.addDecoration(id, dec, value);
} }
// If 'dec' is valid, add a no-operand decoration to a struct member // If 'dec' is valid, add a no-operand decoration to a struct member
void TGlslangToSpvTraverser::addMemberDecoration(spv::Id id, int member, spv::Decoration dec) void TGlslangToSpvTraverser::addMemberDecoration(spv::Id id, int member, spv::Decoration dec)
{ {
if (dec != spv::BadValue) if (dec != spv::DecorationMax)
builder.addMemberDecoration(id, (unsigned)member, dec); builder.addMemberDecoration(id, (unsigned)member, dec);
} }
// If 'dec' is valid, add a one-operand decoration to a struct member // If 'dec' is valid, add a one-operand decoration to a struct member
void TGlslangToSpvTraverser::addMemberDecoration(spv::Id id, int member, spv::Decoration dec, unsigned value) void TGlslangToSpvTraverser::addMemberDecoration(spv::Id id, int member, spv::Decoration dec, unsigned value)
{ {
if (dec != spv::BadValue) if (dec != spv::DecorationMax)
builder.addMemberDecoration(id, (unsigned)member, dec, value); builder.addMemberDecoration(id, (unsigned)member, dec, value);
} }
......
...@@ -907,7 +907,7 @@ void Builder::addLine(Id target, Id fileName, int lineNum, int column) ...@@ -907,7 +907,7 @@ void Builder::addLine(Id target, Id fileName, int lineNum, int column)
void Builder::addDecoration(Id id, Decoration decoration, int num) void Builder::addDecoration(Id id, Decoration decoration, int num)
{ {
if (decoration == (spv::Decoration)spv::BadValue) if (decoration == spv::DecorationMax)
return; return;
Instruction* dec = new Instruction(OpDecorate); Instruction* dec = new Instruction(OpDecorate);
dec->addIdOperand(id); dec->addIdOperand(id);
......
// Copyright (c) 2014-2016 The Khronos Group Inc. // Copyright (c) 2014-2016 The Khronos Group Inc.
// //
// Permission is hereby granted, free of charge, to any person obtaining a copy // Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and/or associated documentation files (the "Materials"), // of this software and/or associated documentation files (the "Materials"),
// to deal in the Materials without restriction, including without limitation // to deal in the Materials without restriction, including without limitation
// the rights to use, copy, modify, merge, publish, distribute, sublicense, // the rights to use, copy, modify, merge, publish, distribute, sublicense,
// and/or sell copies of the Materials, and to permit persons to whom the // 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: // Materials are furnished to do so, subject to the following conditions:
// //
// The above copyright notice and this permission notice shall be included in // The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Materials. // all copies or substantial portions of the Materials.
// //
// MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS // MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS
// STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND // STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND
// HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ // HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/
// //
// THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS // THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING // 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 // FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS
// IN THE MATERIALS. // IN THE MATERIALS.
// This header is automatically generated by the same tool that creates // This header is automatically generated by the same tool that creates
// the Binary Section of the SPIR-V specification. // the Binary Section of the SPIR-V specification.
// Enumeration tokens for SPIR-V, in various styles: // Enumeration tokens for SPIR-V, in various styles:
// C, C++, C++11, JSON, Lua, Python // C, C++, C++11, JSON, Lua, Python
// //
// - C will have tokens with a "Spv" prefix, e.g.: SpvSourceLanguageGLSL // - C will have tokens with a "Spv" prefix, e.g.: SpvSourceLanguageGLSL
// - C++ will have tokens in the "spv" name space, e.g.: spv::SourceLanguageGLSL // - C++ will have tokens in the "spv" name space, e.g.: spv::SourceLanguageGLSL
// - C++11 will use enum classes in the spv namespace, e.g.: spv::SourceLanguage::GLSL // - C++11 will use enum classes in the spv namespace, e.g.: spv::SourceLanguage::GLSL
// - Lua will use tables, e.g.: spv.SourceLanguage.GLSL // - Lua will use tables, e.g.: spv.SourceLanguage.GLSL
// - Python will use dictionaries, e.g.: spv['SourceLanguage']['GLSL'] // - Python will use dictionaries, e.g.: spv['SourceLanguage']['GLSL']
// //
// Some tokens act like mask values, which can be OR'd together, // Some tokens act like mask values, which can be OR'd together,
// while others are mutually exclusive. The mask-like ones have // while others are mutually exclusive. The mask-like ones have
// "Mask" in their name, and a parallel enum that has the shift // "Mask" in their name, and a parallel enum that has the shift
// amount (1 << x) for each corresponding enumerant. // amount (1 << x) for each corresponding enumerant.
#ifndef spirv_HPP #ifndef spirv_HPP
#define spirv_HPP #define spirv_HPP
namespace spv { namespace spv {
typedef unsigned int Id; typedef unsigned int Id;
#define SPV_VERSION 0x10000 #define SPV_VERSION 0x10000
#define SPV_REVISION 3 #define SPV_REVISION 6
static const unsigned int MagicNumber = 0x07230203; static const unsigned int MagicNumber = 0x07230203;
static const unsigned int Version = 0x00010000; static const unsigned int Version = 0x00010000;
static const unsigned int Revision = 3; static const unsigned int Revision = 6;
static const unsigned int OpCodeMask = 0xffff; static const unsigned int OpCodeMask = 0xffff;
static const unsigned int WordCountShift = 16; static const unsigned int WordCountShift = 16;
enum SourceLanguage { enum SourceLanguage {
SourceLanguageUnknown = 0, SourceLanguageUnknown = 0,
SourceLanguageESSL = 1, SourceLanguageESSL = 1,
SourceLanguageGLSL = 2, SourceLanguageGLSL = 2,
SourceLanguageOpenCL_C = 3, SourceLanguageOpenCL_C = 3,
SourceLanguageOpenCL_CPP = 4, SourceLanguageOpenCL_CPP = 4,
SourceLanguageHLSL = 5, SourceLanguageHLSL = 5,
}; SourceLanguageMax = 0x7fffffff,
};
enum ExecutionModel {
ExecutionModelVertex = 0, enum ExecutionModel {
ExecutionModelTessellationControl = 1, ExecutionModelVertex = 0,
ExecutionModelTessellationEvaluation = 2, ExecutionModelTessellationControl = 1,
ExecutionModelGeometry = 3, ExecutionModelTessellationEvaluation = 2,
ExecutionModelFragment = 4, ExecutionModelGeometry = 3,
ExecutionModelGLCompute = 5, ExecutionModelFragment = 4,
ExecutionModelKernel = 6, ExecutionModelGLCompute = 5,
}; ExecutionModelKernel = 6,
ExecutionModelMax = 0x7fffffff,
enum AddressingModel { };
AddressingModelLogical = 0,
AddressingModelPhysical32 = 1, enum AddressingModel {
AddressingModelPhysical64 = 2, AddressingModelLogical = 0,
}; AddressingModelPhysical32 = 1,
AddressingModelPhysical64 = 2,
enum MemoryModel { AddressingModelMax = 0x7fffffff,
MemoryModelSimple = 0, };
MemoryModelGLSL450 = 1,
MemoryModelOpenCL = 2, enum MemoryModel {
}; MemoryModelSimple = 0,
MemoryModelGLSL450 = 1,
enum ExecutionMode { MemoryModelOpenCL = 2,
ExecutionModeInvocations = 0, MemoryModelMax = 0x7fffffff,
ExecutionModeSpacingEqual = 1, };
ExecutionModeSpacingFractionalEven = 2,
ExecutionModeSpacingFractionalOdd = 3, enum ExecutionMode {
ExecutionModeVertexOrderCw = 4, ExecutionModeInvocations = 0,
ExecutionModeVertexOrderCcw = 5, ExecutionModeSpacingEqual = 1,
ExecutionModePixelCenterInteger = 6, ExecutionModeSpacingFractionalEven = 2,
ExecutionModeOriginUpperLeft = 7, ExecutionModeSpacingFractionalOdd = 3,
ExecutionModeOriginLowerLeft = 8, ExecutionModeVertexOrderCw = 4,
ExecutionModeEarlyFragmentTests = 9, ExecutionModeVertexOrderCcw = 5,
ExecutionModePointMode = 10, ExecutionModePixelCenterInteger = 6,
ExecutionModeXfb = 11, ExecutionModeOriginUpperLeft = 7,
ExecutionModeDepthReplacing = 12, ExecutionModeOriginLowerLeft = 8,
ExecutionModeDepthGreater = 14, ExecutionModeEarlyFragmentTests = 9,
ExecutionModeDepthLess = 15, ExecutionModePointMode = 10,
ExecutionModeDepthUnchanged = 16, ExecutionModeXfb = 11,
ExecutionModeLocalSize = 17, ExecutionModeDepthReplacing = 12,
ExecutionModeLocalSizeHint = 18, ExecutionModeDepthGreater = 14,
ExecutionModeInputPoints = 19, ExecutionModeDepthLess = 15,
ExecutionModeInputLines = 20, ExecutionModeDepthUnchanged = 16,
ExecutionModeInputLinesAdjacency = 21, ExecutionModeLocalSize = 17,
ExecutionModeTriangles = 22, ExecutionModeLocalSizeHint = 18,
ExecutionModeInputTrianglesAdjacency = 23, ExecutionModeInputPoints = 19,
ExecutionModeQuads = 24, ExecutionModeInputLines = 20,
ExecutionModeIsolines = 25, ExecutionModeInputLinesAdjacency = 21,
ExecutionModeOutputVertices = 26, ExecutionModeTriangles = 22,
ExecutionModeOutputPoints = 27, ExecutionModeInputTrianglesAdjacency = 23,
ExecutionModeOutputLineStrip = 28, ExecutionModeQuads = 24,
ExecutionModeOutputTriangleStrip = 29, ExecutionModeIsolines = 25,
ExecutionModeVecTypeHint = 30, ExecutionModeOutputVertices = 26,
ExecutionModeContractionOff = 31, ExecutionModeOutputPoints = 27,
}; ExecutionModeOutputLineStrip = 28,
ExecutionModeOutputTriangleStrip = 29,
enum StorageClass { ExecutionModeVecTypeHint = 30,
StorageClassUniformConstant = 0, ExecutionModeContractionOff = 31,
StorageClassInput = 1, ExecutionModeMax = 0x7fffffff,
StorageClassUniform = 2, };
StorageClassOutput = 3,
StorageClassWorkgroup = 4, enum StorageClass {
StorageClassCrossWorkgroup = 5, StorageClassUniformConstant = 0,
StorageClassPrivate = 6, StorageClassInput = 1,
StorageClassFunction = 7, StorageClassUniform = 2,
StorageClassGeneric = 8, StorageClassOutput = 3,
StorageClassPushConstant = 9, StorageClassWorkgroup = 4,
StorageClassAtomicCounter = 10, StorageClassCrossWorkgroup = 5,
StorageClassImage = 11, StorageClassPrivate = 6,
}; StorageClassFunction = 7,
StorageClassGeneric = 8,
enum Dim { StorageClassPushConstant = 9,
Dim1D = 0, StorageClassAtomicCounter = 10,
Dim2D = 1, StorageClassImage = 11,
Dim3D = 2, StorageClassMax = 0x7fffffff,
DimCube = 3, };
DimRect = 4,
DimBuffer = 5, enum Dim {
DimSubpassData = 6, Dim1D = 0,
}; Dim2D = 1,
Dim3D = 2,
enum SamplerAddressingMode { DimCube = 3,
SamplerAddressingModeNone = 0, DimRect = 4,
SamplerAddressingModeClampToEdge = 1, DimBuffer = 5,
SamplerAddressingModeClamp = 2, DimSubpassData = 6,
SamplerAddressingModeRepeat = 3, DimMax = 0x7fffffff,
SamplerAddressingModeRepeatMirrored = 4, };
};
enum SamplerAddressingMode {
enum SamplerFilterMode { SamplerAddressingModeNone = 0,
SamplerFilterModeNearest = 0, SamplerAddressingModeClampToEdge = 1,
SamplerFilterModeLinear = 1, SamplerAddressingModeClamp = 2,
}; SamplerAddressingModeRepeat = 3,
SamplerAddressingModeRepeatMirrored = 4,
enum ImageFormat { SamplerAddressingModeMax = 0x7fffffff,
ImageFormatUnknown = 0, };
ImageFormatRgba32f = 1,
ImageFormatRgba16f = 2, enum SamplerFilterMode {
ImageFormatR32f = 3, SamplerFilterModeNearest = 0,
ImageFormatRgba8 = 4, SamplerFilterModeLinear = 1,
ImageFormatRgba8Snorm = 5, SamplerFilterModeMax = 0x7fffffff,
ImageFormatRg32f = 6, };
ImageFormatRg16f = 7,
ImageFormatR11fG11fB10f = 8, enum ImageFormat {
ImageFormatR16f = 9, ImageFormatUnknown = 0,
ImageFormatRgba16 = 10, ImageFormatRgba32f = 1,
ImageFormatRgb10A2 = 11, ImageFormatRgba16f = 2,
ImageFormatRg16 = 12, ImageFormatR32f = 3,
ImageFormatRg8 = 13, ImageFormatRgba8 = 4,
ImageFormatR16 = 14, ImageFormatRgba8Snorm = 5,
ImageFormatR8 = 15, ImageFormatRg32f = 6,
ImageFormatRgba16Snorm = 16, ImageFormatRg16f = 7,
ImageFormatRg16Snorm = 17, ImageFormatR11fG11fB10f = 8,
ImageFormatRg8Snorm = 18, ImageFormatR16f = 9,
ImageFormatR16Snorm = 19, ImageFormatRgba16 = 10,
ImageFormatR8Snorm = 20, ImageFormatRgb10A2 = 11,
ImageFormatRgba32i = 21, ImageFormatRg16 = 12,
ImageFormatRgba16i = 22, ImageFormatRg8 = 13,
ImageFormatRgba8i = 23, ImageFormatR16 = 14,
ImageFormatR32i = 24, ImageFormatR8 = 15,
ImageFormatRg32i = 25, ImageFormatRgba16Snorm = 16,
ImageFormatRg16i = 26, ImageFormatRg16Snorm = 17,
ImageFormatRg8i = 27, ImageFormatRg8Snorm = 18,
ImageFormatR16i = 28, ImageFormatR16Snorm = 19,
ImageFormatR8i = 29, ImageFormatR8Snorm = 20,
ImageFormatRgba32ui = 30, ImageFormatRgba32i = 21,
ImageFormatRgba16ui = 31, ImageFormatRgba16i = 22,
ImageFormatRgba8ui = 32, ImageFormatRgba8i = 23,
ImageFormatR32ui = 33, ImageFormatR32i = 24,
ImageFormatRgb10a2ui = 34, ImageFormatRg32i = 25,
ImageFormatRg32ui = 35, ImageFormatRg16i = 26,
ImageFormatRg16ui = 36, ImageFormatRg8i = 27,
ImageFormatRg8ui = 37, ImageFormatR16i = 28,
ImageFormatR16ui = 38, ImageFormatR8i = 29,
ImageFormatR8ui = 39, ImageFormatRgba32ui = 30,
}; ImageFormatRgba16ui = 31,
ImageFormatRgba8ui = 32,
enum ImageChannelOrder { ImageFormatR32ui = 33,
ImageChannelOrderR = 0, ImageFormatRgb10a2ui = 34,
ImageChannelOrderA = 1, ImageFormatRg32ui = 35,
ImageChannelOrderRG = 2, ImageFormatRg16ui = 36,
ImageChannelOrderRA = 3, ImageFormatRg8ui = 37,
ImageChannelOrderRGB = 4, ImageFormatR16ui = 38,
ImageChannelOrderRGBA = 5, ImageFormatR8ui = 39,
ImageChannelOrderBGRA = 6, ImageFormatMax = 0x7fffffff,
ImageChannelOrderARGB = 7, };
ImageChannelOrderIntensity = 8,
ImageChannelOrderLuminance = 9, enum ImageChannelOrder {
ImageChannelOrderRx = 10, ImageChannelOrderR = 0,
ImageChannelOrderRGx = 11, ImageChannelOrderA = 1,
ImageChannelOrderRGBx = 12, ImageChannelOrderRG = 2,
ImageChannelOrderDepth = 13, ImageChannelOrderRA = 3,
ImageChannelOrderDepthStencil = 14, ImageChannelOrderRGB = 4,
ImageChannelOrdersRGB = 15, ImageChannelOrderRGBA = 5,
ImageChannelOrdersRGBx = 16, ImageChannelOrderBGRA = 6,
ImageChannelOrdersRGBA = 17, ImageChannelOrderARGB = 7,
ImageChannelOrdersBGRA = 18, ImageChannelOrderIntensity = 8,
}; ImageChannelOrderLuminance = 9,
ImageChannelOrderRx = 10,
enum ImageChannelDataType { ImageChannelOrderRGx = 11,
ImageChannelDataTypeSnormInt8 = 0, ImageChannelOrderRGBx = 12,
ImageChannelDataTypeSnormInt16 = 1, ImageChannelOrderDepth = 13,
ImageChannelDataTypeUnormInt8 = 2, ImageChannelOrderDepthStencil = 14,
ImageChannelDataTypeUnormInt16 = 3, ImageChannelOrdersRGB = 15,
ImageChannelDataTypeUnormShort565 = 4, ImageChannelOrdersRGBx = 16,
ImageChannelDataTypeUnormShort555 = 5, ImageChannelOrdersRGBA = 17,
ImageChannelDataTypeUnormInt101010 = 6, ImageChannelOrdersBGRA = 18,
ImageChannelDataTypeSignedInt8 = 7, ImageChannelOrderABGR = 19,
ImageChannelDataTypeSignedInt16 = 8, ImageChannelOrderMax = 0x7fffffff,
ImageChannelDataTypeSignedInt32 = 9, };
ImageChannelDataTypeUnsignedInt8 = 10,
ImageChannelDataTypeUnsignedInt16 = 11, enum ImageChannelDataType {
ImageChannelDataTypeUnsignedInt32 = 12, ImageChannelDataTypeSnormInt8 = 0,
ImageChannelDataTypeHalfFloat = 13, ImageChannelDataTypeSnormInt16 = 1,
ImageChannelDataTypeFloat = 14, ImageChannelDataTypeUnormInt8 = 2,
ImageChannelDataTypeUnormInt24 = 15, ImageChannelDataTypeUnormInt16 = 3,
ImageChannelDataTypeUnormInt101010_2 = 16, ImageChannelDataTypeUnormShort565 = 4,
}; ImageChannelDataTypeUnormShort555 = 5,
ImageChannelDataTypeUnormInt101010 = 6,
enum ImageOperandsShift { ImageChannelDataTypeSignedInt8 = 7,
ImageOperandsBiasShift = 0, ImageChannelDataTypeSignedInt16 = 8,
ImageOperandsLodShift = 1, ImageChannelDataTypeSignedInt32 = 9,
ImageOperandsGradShift = 2, ImageChannelDataTypeUnsignedInt8 = 10,
ImageOperandsConstOffsetShift = 3, ImageChannelDataTypeUnsignedInt16 = 11,
ImageOperandsOffsetShift = 4, ImageChannelDataTypeUnsignedInt32 = 12,
ImageOperandsConstOffsetsShift = 5, ImageChannelDataTypeHalfFloat = 13,
ImageOperandsSampleShift = 6, ImageChannelDataTypeFloat = 14,
ImageOperandsMinLodShift = 7, ImageChannelDataTypeUnormInt24 = 15,
}; ImageChannelDataTypeUnormInt101010_2 = 16,
ImageChannelDataTypeMax = 0x7fffffff,
enum ImageOperandsMask { };
ImageOperandsMaskNone = 0,
ImageOperandsBiasMask = 0x00000001, enum ImageOperandsShift {
ImageOperandsLodMask = 0x00000002, ImageOperandsBiasShift = 0,
ImageOperandsGradMask = 0x00000004, ImageOperandsLodShift = 1,
ImageOperandsConstOffsetMask = 0x00000008, ImageOperandsGradShift = 2,
ImageOperandsOffsetMask = 0x00000010, ImageOperandsConstOffsetShift = 3,
ImageOperandsConstOffsetsMask = 0x00000020, ImageOperandsOffsetShift = 4,
ImageOperandsSampleMask = 0x00000040, ImageOperandsConstOffsetsShift = 5,
ImageOperandsMinLodMask = 0x00000080, ImageOperandsSampleShift = 6,
}; ImageOperandsMinLodShift = 7,
ImageOperandsMax = 0x7fffffff,
enum FPFastMathModeShift { };
FPFastMathModeNotNaNShift = 0,
FPFastMathModeNotInfShift = 1, enum ImageOperandsMask {
FPFastMathModeNSZShift = 2, ImageOperandsMaskNone = 0,
FPFastMathModeAllowRecipShift = 3, ImageOperandsBiasMask = 0x00000001,
FPFastMathModeFastShift = 4, ImageOperandsLodMask = 0x00000002,
}; ImageOperandsGradMask = 0x00000004,
ImageOperandsConstOffsetMask = 0x00000008,
enum FPFastMathModeMask { ImageOperandsOffsetMask = 0x00000010,
FPFastMathModeMaskNone = 0, ImageOperandsConstOffsetsMask = 0x00000020,
FPFastMathModeNotNaNMask = 0x00000001, ImageOperandsSampleMask = 0x00000040,
FPFastMathModeNotInfMask = 0x00000002, ImageOperandsMinLodMask = 0x00000080,
FPFastMathModeNSZMask = 0x00000004, };
FPFastMathModeAllowRecipMask = 0x00000008,
FPFastMathModeFastMask = 0x00000010, enum FPFastMathModeShift {
}; FPFastMathModeNotNaNShift = 0,
FPFastMathModeNotInfShift = 1,
enum FPRoundingMode { FPFastMathModeNSZShift = 2,
FPRoundingModeRTE = 0, FPFastMathModeAllowRecipShift = 3,
FPRoundingModeRTZ = 1, FPFastMathModeFastShift = 4,
FPRoundingModeRTP = 2, FPFastMathModeMax = 0x7fffffff,
FPRoundingModeRTN = 3, };
};
enum FPFastMathModeMask {
enum LinkageType { FPFastMathModeMaskNone = 0,
LinkageTypeExport = 0, FPFastMathModeNotNaNMask = 0x00000001,
LinkageTypeImport = 1, FPFastMathModeNotInfMask = 0x00000002,
}; FPFastMathModeNSZMask = 0x00000004,
FPFastMathModeAllowRecipMask = 0x00000008,
enum AccessQualifier { FPFastMathModeFastMask = 0x00000010,
AccessQualifierReadOnly = 0, };
AccessQualifierWriteOnly = 1,
AccessQualifierReadWrite = 2, enum FPRoundingMode {
}; FPRoundingModeRTE = 0,
FPRoundingModeRTZ = 1,
enum FunctionParameterAttribute { FPRoundingModeRTP = 2,
FunctionParameterAttributeZext = 0, FPRoundingModeRTN = 3,
FunctionParameterAttributeSext = 1, FPRoundingModeMax = 0x7fffffff,
FunctionParameterAttributeByVal = 2, };
FunctionParameterAttributeSret = 3,
FunctionParameterAttributeNoAlias = 4, enum LinkageType {
FunctionParameterAttributeNoCapture = 5, LinkageTypeExport = 0,
FunctionParameterAttributeNoWrite = 6, LinkageTypeImport = 1,
FunctionParameterAttributeNoReadWrite = 7, LinkageTypeMax = 0x7fffffff,
}; };
enum Decoration { enum AccessQualifier {
DecorationRelaxedPrecision = 0, AccessQualifierReadOnly = 0,
DecorationSpecId = 1, AccessQualifierWriteOnly = 1,
DecorationBlock = 2, AccessQualifierReadWrite = 2,
DecorationBufferBlock = 3, AccessQualifierMax = 0x7fffffff,
DecorationRowMajor = 4, };
DecorationColMajor = 5,
DecorationArrayStride = 6, enum FunctionParameterAttribute {
DecorationMatrixStride = 7, FunctionParameterAttributeZext = 0,
DecorationGLSLShared = 8, FunctionParameterAttributeSext = 1,
DecorationGLSLPacked = 9, FunctionParameterAttributeByVal = 2,
DecorationCPacked = 10, FunctionParameterAttributeSret = 3,
DecorationBuiltIn = 11, FunctionParameterAttributeNoAlias = 4,
DecorationNoPerspective = 13, FunctionParameterAttributeNoCapture = 5,
DecorationFlat = 14, FunctionParameterAttributeNoWrite = 6,
DecorationPatch = 15, FunctionParameterAttributeNoReadWrite = 7,
DecorationCentroid = 16, FunctionParameterAttributeMax = 0x7fffffff,
DecorationSample = 17, };
DecorationInvariant = 18,
DecorationRestrict = 19, enum Decoration {
DecorationAliased = 20, DecorationRelaxedPrecision = 0,
DecorationVolatile = 21, DecorationSpecId = 1,
DecorationConstant = 22, DecorationBlock = 2,
DecorationCoherent = 23, DecorationBufferBlock = 3,
DecorationNonWritable = 24, DecorationRowMajor = 4,
DecorationNonReadable = 25, DecorationColMajor = 5,
DecorationUniform = 26, DecorationArrayStride = 6,
DecorationSaturatedConversion = 28, DecorationMatrixStride = 7,
DecorationStream = 29, DecorationGLSLShared = 8,
DecorationLocation = 30, DecorationGLSLPacked = 9,
DecorationComponent = 31, DecorationCPacked = 10,
DecorationIndex = 32, DecorationBuiltIn = 11,
DecorationBinding = 33, DecorationNoPerspective = 13,
DecorationDescriptorSet = 34, DecorationFlat = 14,
DecorationOffset = 35, DecorationPatch = 15,
DecorationXfbBuffer = 36, DecorationCentroid = 16,
DecorationXfbStride = 37, DecorationSample = 17,
DecorationFuncParamAttr = 38, DecorationInvariant = 18,
DecorationFPRoundingMode = 39, DecorationRestrict = 19,
DecorationFPFastMathMode = 40, DecorationAliased = 20,
DecorationLinkageAttributes = 41, DecorationVolatile = 21,
DecorationNoContraction = 42, DecorationConstant = 22,
DecorationInputAttachmentIndex = 43, DecorationCoherent = 23,
DecorationAlignment = 44, DecorationNonWritable = 24,
}; DecorationNonReadable = 25,
DecorationUniform = 26,
enum BuiltIn { DecorationSaturatedConversion = 28,
BuiltInPosition = 0, DecorationStream = 29,
BuiltInPointSize = 1, DecorationLocation = 30,
BuiltInClipDistance = 3, DecorationComponent = 31,
BuiltInCullDistance = 4, DecorationIndex = 32,
BuiltInVertexId = 5, DecorationBinding = 33,
BuiltInInstanceId = 6, DecorationDescriptorSet = 34,
BuiltInPrimitiveId = 7, DecorationOffset = 35,
BuiltInInvocationId = 8, DecorationXfbBuffer = 36,
BuiltInLayer = 9, DecorationXfbStride = 37,
BuiltInViewportIndex = 10, DecorationFuncParamAttr = 38,
BuiltInTessLevelOuter = 11, DecorationFPRoundingMode = 39,
BuiltInTessLevelInner = 12, DecorationFPFastMathMode = 40,
BuiltInTessCoord = 13, DecorationLinkageAttributes = 41,
BuiltInPatchVertices = 14, DecorationNoContraction = 42,
BuiltInFragCoord = 15, DecorationInputAttachmentIndex = 43,
BuiltInPointCoord = 16, DecorationAlignment = 44,
BuiltInFrontFacing = 17, DecorationMax = 0x7fffffff,
BuiltInSampleId = 18, };
BuiltInSamplePosition = 19,
BuiltInSampleMask = 20, enum BuiltIn {
BuiltInFragDepth = 22, BuiltInPosition = 0,
BuiltInHelperInvocation = 23, BuiltInPointSize = 1,
BuiltInNumWorkgroups = 24, BuiltInClipDistance = 3,
BuiltInWorkgroupSize = 25, BuiltInCullDistance = 4,
BuiltInWorkgroupId = 26, BuiltInVertexId = 5,
BuiltInLocalInvocationId = 27, BuiltInInstanceId = 6,
BuiltInGlobalInvocationId = 28, BuiltInPrimitiveId = 7,
BuiltInLocalInvocationIndex = 29, BuiltInInvocationId = 8,
BuiltInWorkDim = 30, BuiltInLayer = 9,
BuiltInGlobalSize = 31, BuiltInViewportIndex = 10,
BuiltInEnqueuedWorkgroupSize = 32, BuiltInTessLevelOuter = 11,
BuiltInGlobalOffset = 33, BuiltInTessLevelInner = 12,
BuiltInGlobalLinearId = 34, BuiltInTessCoord = 13,
BuiltInSubgroupSize = 36, BuiltInPatchVertices = 14,
BuiltInSubgroupMaxSize = 37, BuiltInFragCoord = 15,
BuiltInNumSubgroups = 38, BuiltInPointCoord = 16,
BuiltInNumEnqueuedSubgroups = 39, BuiltInFrontFacing = 17,
BuiltInSubgroupId = 40, BuiltInSampleId = 18,
BuiltInSubgroupLocalInvocationId = 41, BuiltInSamplePosition = 19,
BuiltInVertexIndex = 42, BuiltInSampleMask = 20,
BuiltInInstanceIndex = 43, BuiltInFragDepth = 22,
}; BuiltInHelperInvocation = 23,
BuiltInNumWorkgroups = 24,
enum SelectionControlShift { BuiltInWorkgroupSize = 25,
SelectionControlFlattenShift = 0, BuiltInWorkgroupId = 26,
SelectionControlDontFlattenShift = 1, BuiltInLocalInvocationId = 27,
}; BuiltInGlobalInvocationId = 28,
BuiltInLocalInvocationIndex = 29,
enum SelectionControlMask { BuiltInWorkDim = 30,
SelectionControlMaskNone = 0, BuiltInGlobalSize = 31,
SelectionControlFlattenMask = 0x00000001, BuiltInEnqueuedWorkgroupSize = 32,
SelectionControlDontFlattenMask = 0x00000002, BuiltInGlobalOffset = 33,
}; BuiltInGlobalLinearId = 34,
BuiltInSubgroupSize = 36,
enum LoopControlShift { BuiltInSubgroupMaxSize = 37,
LoopControlUnrollShift = 0, BuiltInNumSubgroups = 38,
LoopControlDontUnrollShift = 1, BuiltInNumEnqueuedSubgroups = 39,
}; BuiltInSubgroupId = 40,
BuiltInSubgroupLocalInvocationId = 41,
enum LoopControlMask { BuiltInVertexIndex = 42,
LoopControlMaskNone = 0, BuiltInInstanceIndex = 43,
LoopControlUnrollMask = 0x00000001, BuiltInMax = 0x7fffffff,
LoopControlDontUnrollMask = 0x00000002, };
};
enum SelectionControlShift {
enum FunctionControlShift { SelectionControlFlattenShift = 0,
FunctionControlInlineShift = 0, SelectionControlDontFlattenShift = 1,
FunctionControlDontInlineShift = 1, SelectionControlMax = 0x7fffffff,
FunctionControlPureShift = 2, };
FunctionControlConstShift = 3,
}; enum SelectionControlMask {
SelectionControlMaskNone = 0,
enum FunctionControlMask { SelectionControlFlattenMask = 0x00000001,
FunctionControlMaskNone = 0, SelectionControlDontFlattenMask = 0x00000002,
FunctionControlInlineMask = 0x00000001, };
FunctionControlDontInlineMask = 0x00000002,
FunctionControlPureMask = 0x00000004, enum LoopControlShift {
FunctionControlConstMask = 0x00000008, LoopControlUnrollShift = 0,
}; LoopControlDontUnrollShift = 1,
LoopControlMax = 0x7fffffff,
enum MemorySemanticsShift { };
MemorySemanticsAcquireShift = 1,
MemorySemanticsReleaseShift = 2, enum LoopControlMask {
MemorySemanticsAcquireReleaseShift = 3, LoopControlMaskNone = 0,
MemorySemanticsSequentiallyConsistentShift = 4, LoopControlUnrollMask = 0x00000001,
MemorySemanticsUniformMemoryShift = 6, LoopControlDontUnrollMask = 0x00000002,
MemorySemanticsSubgroupMemoryShift = 7, };
MemorySemanticsWorkgroupMemoryShift = 8,
MemorySemanticsCrossWorkgroupMemoryShift = 9, enum FunctionControlShift {
MemorySemanticsAtomicCounterMemoryShift = 10, FunctionControlInlineShift = 0,
MemorySemanticsImageMemoryShift = 11, FunctionControlDontInlineShift = 1,
}; FunctionControlPureShift = 2,
FunctionControlConstShift = 3,
enum MemorySemanticsMask { FunctionControlMax = 0x7fffffff,
MemorySemanticsMaskNone = 0, };
MemorySemanticsAcquireMask = 0x00000002,
MemorySemanticsReleaseMask = 0x00000004, enum FunctionControlMask {
MemorySemanticsAcquireReleaseMask = 0x00000008, FunctionControlMaskNone = 0,
MemorySemanticsSequentiallyConsistentMask = 0x00000010, FunctionControlInlineMask = 0x00000001,
MemorySemanticsUniformMemoryMask = 0x00000040, FunctionControlDontInlineMask = 0x00000002,
MemorySemanticsSubgroupMemoryMask = 0x00000080, FunctionControlPureMask = 0x00000004,
MemorySemanticsWorkgroupMemoryMask = 0x00000100, FunctionControlConstMask = 0x00000008,
MemorySemanticsCrossWorkgroupMemoryMask = 0x00000200, };
MemorySemanticsAtomicCounterMemoryMask = 0x00000400,
MemorySemanticsImageMemoryMask = 0x00000800, enum MemorySemanticsShift {
}; MemorySemanticsAcquireShift = 1,
MemorySemanticsReleaseShift = 2,
enum MemoryAccessShift { MemorySemanticsAcquireReleaseShift = 3,
MemoryAccessVolatileShift = 0, MemorySemanticsSequentiallyConsistentShift = 4,
MemoryAccessAlignedShift = 1, MemorySemanticsUniformMemoryShift = 6,
MemoryAccessNontemporalShift = 2, MemorySemanticsSubgroupMemoryShift = 7,
}; MemorySemanticsWorkgroupMemoryShift = 8,
MemorySemanticsCrossWorkgroupMemoryShift = 9,
enum MemoryAccessMask { MemorySemanticsAtomicCounterMemoryShift = 10,
MemoryAccessMaskNone = 0, MemorySemanticsImageMemoryShift = 11,
MemoryAccessVolatileMask = 0x00000001, MemorySemanticsMax = 0x7fffffff,
MemoryAccessAlignedMask = 0x00000002, };
MemoryAccessNontemporalMask = 0x00000004,
}; enum MemorySemanticsMask {
MemorySemanticsMaskNone = 0,
enum Scope { MemorySemanticsAcquireMask = 0x00000002,
ScopeCrossDevice = 0, MemorySemanticsReleaseMask = 0x00000004,
ScopeDevice = 1, MemorySemanticsAcquireReleaseMask = 0x00000008,
ScopeWorkgroup = 2, MemorySemanticsSequentiallyConsistentMask = 0x00000010,
ScopeSubgroup = 3, MemorySemanticsUniformMemoryMask = 0x00000040,
ScopeInvocation = 4, MemorySemanticsSubgroupMemoryMask = 0x00000080,
}; MemorySemanticsWorkgroupMemoryMask = 0x00000100,
MemorySemanticsCrossWorkgroupMemoryMask = 0x00000200,
enum GroupOperation { MemorySemanticsAtomicCounterMemoryMask = 0x00000400,
GroupOperationReduce = 0, MemorySemanticsImageMemoryMask = 0x00000800,
GroupOperationInclusiveScan = 1, };
GroupOperationExclusiveScan = 2,
}; enum MemoryAccessShift {
MemoryAccessVolatileShift = 0,
enum KernelEnqueueFlags { MemoryAccessAlignedShift = 1,
KernelEnqueueFlagsNoWait = 0, MemoryAccessNontemporalShift = 2,
KernelEnqueueFlagsWaitKernel = 1, MemoryAccessMax = 0x7fffffff,
KernelEnqueueFlagsWaitWorkGroup = 2, };
};
enum MemoryAccessMask {
enum KernelProfilingInfoShift { MemoryAccessMaskNone = 0,
KernelProfilingInfoCmdExecTimeShift = 0, MemoryAccessVolatileMask = 0x00000001,
}; MemoryAccessAlignedMask = 0x00000002,
MemoryAccessNontemporalMask = 0x00000004,
enum KernelProfilingInfoMask { };
KernelProfilingInfoMaskNone = 0,
KernelProfilingInfoCmdExecTimeMask = 0x00000001, enum Scope {
}; ScopeCrossDevice = 0,
ScopeDevice = 1,
enum Capability { ScopeWorkgroup = 2,
CapabilityMatrix = 0, ScopeSubgroup = 3,
CapabilityShader = 1, ScopeInvocation = 4,
CapabilityGeometry = 2, ScopeMax = 0x7fffffff,
CapabilityTessellation = 3, };
CapabilityAddresses = 4,
CapabilityLinkage = 5, enum GroupOperation {
CapabilityKernel = 6, GroupOperationReduce = 0,
CapabilityVector16 = 7, GroupOperationInclusiveScan = 1,
CapabilityFloat16Buffer = 8, GroupOperationExclusiveScan = 2,
CapabilityFloat16 = 9, GroupOperationMax = 0x7fffffff,
CapabilityFloat64 = 10, };
CapabilityInt64 = 11,
CapabilityInt64Atomics = 12, enum KernelEnqueueFlags {
CapabilityImageBasic = 13, KernelEnqueueFlagsNoWait = 0,
CapabilityImageReadWrite = 14, KernelEnqueueFlagsWaitKernel = 1,
CapabilityImageMipmap = 15, KernelEnqueueFlagsWaitWorkGroup = 2,
CapabilityPipes = 17, KernelEnqueueFlagsMax = 0x7fffffff,
CapabilityGroups = 18, };
CapabilityDeviceEnqueue = 19,
CapabilityLiteralSampler = 20, enum KernelProfilingInfoShift {
CapabilityAtomicStorage = 21, KernelProfilingInfoCmdExecTimeShift = 0,
CapabilityInt16 = 22, KernelProfilingInfoMax = 0x7fffffff,
CapabilityTessellationPointSize = 23, };
CapabilityGeometryPointSize = 24,
CapabilityImageGatherExtended = 25, enum KernelProfilingInfoMask {
CapabilityStorageImageMultisample = 27, KernelProfilingInfoMaskNone = 0,
CapabilityUniformBufferArrayDynamicIndexing = 28, KernelProfilingInfoCmdExecTimeMask = 0x00000001,
CapabilitySampledImageArrayDynamicIndexing = 29, };
CapabilityStorageBufferArrayDynamicIndexing = 30,
CapabilityStorageImageArrayDynamicIndexing = 31, enum Capability {
CapabilityClipDistance = 32, CapabilityMatrix = 0,
CapabilityCullDistance = 33, CapabilityShader = 1,
CapabilityImageCubeArray = 34, CapabilityGeometry = 2,
CapabilitySampleRateShading = 35, CapabilityTessellation = 3,
CapabilityImageRect = 36, CapabilityAddresses = 4,
CapabilitySampledRect = 37, CapabilityLinkage = 5,
CapabilityGenericPointer = 38, CapabilityKernel = 6,
CapabilityInt8 = 39, CapabilityVector16 = 7,
CapabilityInputAttachment = 40, CapabilityFloat16Buffer = 8,
CapabilitySparseResidency = 41, CapabilityFloat16 = 9,
CapabilityMinLod = 42, CapabilityFloat64 = 10,
CapabilitySampled1D = 43, CapabilityInt64 = 11,
CapabilityImage1D = 44, CapabilityInt64Atomics = 12,
CapabilitySampledCubeArray = 45, CapabilityImageBasic = 13,
CapabilitySampledBuffer = 46, CapabilityImageReadWrite = 14,
CapabilityImageBuffer = 47, CapabilityImageMipmap = 15,
CapabilityImageMSArray = 48, CapabilityPipes = 17,
CapabilityStorageImageExtendedFormats = 49, CapabilityGroups = 18,
CapabilityImageQuery = 50, CapabilityDeviceEnqueue = 19,
CapabilityDerivativeControl = 51, CapabilityLiteralSampler = 20,
CapabilityInterpolationFunction = 52, CapabilityAtomicStorage = 21,
CapabilityTransformFeedback = 53, CapabilityInt16 = 22,
CapabilityGeometryStreams = 54, CapabilityTessellationPointSize = 23,
CapabilityStorageImageReadWithoutFormat = 55, CapabilityGeometryPointSize = 24,
CapabilityStorageImageWriteWithoutFormat = 56, CapabilityImageGatherExtended = 25,
CapabilityMultiViewport = 57, CapabilityStorageImageMultisample = 27,
}; CapabilityUniformBufferArrayDynamicIndexing = 28,
CapabilitySampledImageArrayDynamicIndexing = 29,
enum Op { CapabilityStorageBufferArrayDynamicIndexing = 30,
OpNop = 0, CapabilityStorageImageArrayDynamicIndexing = 31,
OpUndef = 1, CapabilityClipDistance = 32,
OpSourceContinued = 2, CapabilityCullDistance = 33,
OpSource = 3, CapabilityImageCubeArray = 34,
OpSourceExtension = 4, CapabilitySampleRateShading = 35,
OpName = 5, CapabilityImageRect = 36,
OpMemberName = 6, CapabilitySampledRect = 37,
OpString = 7, CapabilityGenericPointer = 38,
OpLine = 8, CapabilityInt8 = 39,
OpExtension = 10, CapabilityInputAttachment = 40,
OpExtInstImport = 11, CapabilitySparseResidency = 41,
OpExtInst = 12, CapabilityMinLod = 42,
OpMemoryModel = 14, CapabilitySampled1D = 43,
OpEntryPoint = 15, CapabilityImage1D = 44,
OpExecutionMode = 16, CapabilitySampledCubeArray = 45,
OpCapability = 17, CapabilitySampledBuffer = 46,
OpTypeVoid = 19, CapabilityImageBuffer = 47,
OpTypeBool = 20, CapabilityImageMSArray = 48,
OpTypeInt = 21, CapabilityStorageImageExtendedFormats = 49,
OpTypeFloat = 22, CapabilityImageQuery = 50,
OpTypeVector = 23, CapabilityDerivativeControl = 51,
OpTypeMatrix = 24, CapabilityInterpolationFunction = 52,
OpTypeImage = 25, CapabilityTransformFeedback = 53,
OpTypeSampler = 26, CapabilityGeometryStreams = 54,
OpTypeSampledImage = 27, CapabilityStorageImageReadWithoutFormat = 55,
OpTypeArray = 28, CapabilityStorageImageWriteWithoutFormat = 56,
OpTypeRuntimeArray = 29, CapabilityMultiViewport = 57,
OpTypeStruct = 30, CapabilityMax = 0x7fffffff,
OpTypeOpaque = 31, };
OpTypePointer = 32,
OpTypeFunction = 33, enum Op {
OpTypeEvent = 34, OpNop = 0,
OpTypeDeviceEvent = 35, OpUndef = 1,
OpTypeReserveId = 36, OpSourceContinued = 2,
OpTypeQueue = 37, OpSource = 3,
OpTypePipe = 38, OpSourceExtension = 4,
OpTypeForwardPointer = 39, OpName = 5,
OpConstantTrue = 41, OpMemberName = 6,
OpConstantFalse = 42, OpString = 7,
OpConstant = 43, OpLine = 8,
OpConstantComposite = 44, OpExtension = 10,
OpConstantSampler = 45, OpExtInstImport = 11,
OpConstantNull = 46, OpExtInst = 12,
OpSpecConstantTrue = 48, OpMemoryModel = 14,
OpSpecConstantFalse = 49, OpEntryPoint = 15,
OpSpecConstant = 50, OpExecutionMode = 16,
OpSpecConstantComposite = 51, OpCapability = 17,
OpSpecConstantOp = 52, OpTypeVoid = 19,
OpFunction = 54, OpTypeBool = 20,
OpFunctionParameter = 55, OpTypeInt = 21,
OpFunctionEnd = 56, OpTypeFloat = 22,
OpFunctionCall = 57, OpTypeVector = 23,
OpVariable = 59, OpTypeMatrix = 24,
OpImageTexelPointer = 60, OpTypeImage = 25,
OpLoad = 61, OpTypeSampler = 26,
OpStore = 62, OpTypeSampledImage = 27,
OpCopyMemory = 63, OpTypeArray = 28,
OpCopyMemorySized = 64, OpTypeRuntimeArray = 29,
OpAccessChain = 65, OpTypeStruct = 30,
OpInBoundsAccessChain = 66, OpTypeOpaque = 31,
OpPtrAccessChain = 67, OpTypePointer = 32,
OpArrayLength = 68, OpTypeFunction = 33,
OpGenericPtrMemSemantics = 69, OpTypeEvent = 34,
OpInBoundsPtrAccessChain = 70, OpTypeDeviceEvent = 35,
OpDecorate = 71, OpTypeReserveId = 36,
OpMemberDecorate = 72, OpTypeQueue = 37,
OpDecorationGroup = 73, OpTypePipe = 38,
OpGroupDecorate = 74, OpTypeForwardPointer = 39,
OpGroupMemberDecorate = 75, OpConstantTrue = 41,
OpVectorExtractDynamic = 77, OpConstantFalse = 42,
OpVectorInsertDynamic = 78, OpConstant = 43,
OpVectorShuffle = 79, OpConstantComposite = 44,
OpCompositeConstruct = 80, OpConstantSampler = 45,
OpCompositeExtract = 81, OpConstantNull = 46,
OpCompositeInsert = 82, OpSpecConstantTrue = 48,
OpCopyObject = 83, OpSpecConstantFalse = 49,
OpTranspose = 84, OpSpecConstant = 50,
OpSampledImage = 86, OpSpecConstantComposite = 51,
OpImageSampleImplicitLod = 87, OpSpecConstantOp = 52,
OpImageSampleExplicitLod = 88, OpFunction = 54,
OpImageSampleDrefImplicitLod = 89, OpFunctionParameter = 55,
OpImageSampleDrefExplicitLod = 90, OpFunctionEnd = 56,
OpImageSampleProjImplicitLod = 91, OpFunctionCall = 57,
OpImageSampleProjExplicitLod = 92, OpVariable = 59,
OpImageSampleProjDrefImplicitLod = 93, OpImageTexelPointer = 60,
OpImageSampleProjDrefExplicitLod = 94, OpLoad = 61,
OpImageFetch = 95, OpStore = 62,
OpImageGather = 96, OpCopyMemory = 63,
OpImageDrefGather = 97, OpCopyMemorySized = 64,
OpImageRead = 98, OpAccessChain = 65,
OpImageWrite = 99, OpInBoundsAccessChain = 66,
OpImage = 100, OpPtrAccessChain = 67,
OpImageQueryFormat = 101, OpArrayLength = 68,
OpImageQueryOrder = 102, OpGenericPtrMemSemantics = 69,
OpImageQuerySizeLod = 103, OpInBoundsPtrAccessChain = 70,
OpImageQuerySize = 104, OpDecorate = 71,
OpImageQueryLod = 105, OpMemberDecorate = 72,
OpImageQueryLevels = 106, OpDecorationGroup = 73,
OpImageQuerySamples = 107, OpGroupDecorate = 74,
OpConvertFToU = 109, OpGroupMemberDecorate = 75,
OpConvertFToS = 110, OpVectorExtractDynamic = 77,
OpConvertSToF = 111, OpVectorInsertDynamic = 78,
OpConvertUToF = 112, OpVectorShuffle = 79,
OpUConvert = 113, OpCompositeConstruct = 80,
OpSConvert = 114, OpCompositeExtract = 81,
OpFConvert = 115, OpCompositeInsert = 82,
OpQuantizeToF16 = 116, OpCopyObject = 83,
OpConvertPtrToU = 117, OpTranspose = 84,
OpSatConvertSToU = 118, OpSampledImage = 86,
OpSatConvertUToS = 119, OpImageSampleImplicitLod = 87,
OpConvertUToPtr = 120, OpImageSampleExplicitLod = 88,
OpPtrCastToGeneric = 121, OpImageSampleDrefImplicitLod = 89,
OpGenericCastToPtr = 122, OpImageSampleDrefExplicitLod = 90,
OpGenericCastToPtrExplicit = 123, OpImageSampleProjImplicitLod = 91,
OpBitcast = 124, OpImageSampleProjExplicitLod = 92,
OpSNegate = 126, OpImageSampleProjDrefImplicitLod = 93,
OpFNegate = 127, OpImageSampleProjDrefExplicitLod = 94,
OpIAdd = 128, OpImageFetch = 95,
OpFAdd = 129, OpImageGather = 96,
OpISub = 130, OpImageDrefGather = 97,
OpFSub = 131, OpImageRead = 98,
OpIMul = 132, OpImageWrite = 99,
OpFMul = 133, OpImage = 100,
OpUDiv = 134, OpImageQueryFormat = 101,
OpSDiv = 135, OpImageQueryOrder = 102,
OpFDiv = 136, OpImageQuerySizeLod = 103,
OpUMod = 137, OpImageQuerySize = 104,
OpSRem = 138, OpImageQueryLod = 105,
OpSMod = 139, OpImageQueryLevels = 106,
OpFRem = 140, OpImageQuerySamples = 107,
OpFMod = 141, OpConvertFToU = 109,
OpVectorTimesScalar = 142, OpConvertFToS = 110,
OpMatrixTimesScalar = 143, OpConvertSToF = 111,
OpVectorTimesMatrix = 144, OpConvertUToF = 112,
OpMatrixTimesVector = 145, OpUConvert = 113,
OpMatrixTimesMatrix = 146, OpSConvert = 114,
OpOuterProduct = 147, OpFConvert = 115,
OpDot = 148, OpQuantizeToF16 = 116,
OpIAddCarry = 149, OpConvertPtrToU = 117,
OpISubBorrow = 150, OpSatConvertSToU = 118,
OpUMulExtended = 151, OpSatConvertUToS = 119,
OpSMulExtended = 152, OpConvertUToPtr = 120,
OpAny = 154, OpPtrCastToGeneric = 121,
OpAll = 155, OpGenericCastToPtr = 122,
OpIsNan = 156, OpGenericCastToPtrExplicit = 123,
OpIsInf = 157, OpBitcast = 124,
OpIsFinite = 158, OpSNegate = 126,
OpIsNormal = 159, OpFNegate = 127,
OpSignBitSet = 160, OpIAdd = 128,
OpLessOrGreater = 161, OpFAdd = 129,
OpOrdered = 162, OpISub = 130,
OpUnordered = 163, OpFSub = 131,
OpLogicalEqual = 164, OpIMul = 132,
OpLogicalNotEqual = 165, OpFMul = 133,
OpLogicalOr = 166, OpUDiv = 134,
OpLogicalAnd = 167, OpSDiv = 135,
OpLogicalNot = 168, OpFDiv = 136,
OpSelect = 169, OpUMod = 137,
OpIEqual = 170, OpSRem = 138,
OpINotEqual = 171, OpSMod = 139,
OpUGreaterThan = 172, OpFRem = 140,
OpSGreaterThan = 173, OpFMod = 141,
OpUGreaterThanEqual = 174, OpVectorTimesScalar = 142,
OpSGreaterThanEqual = 175, OpMatrixTimesScalar = 143,
OpULessThan = 176, OpVectorTimesMatrix = 144,
OpSLessThan = 177, OpMatrixTimesVector = 145,
OpULessThanEqual = 178, OpMatrixTimesMatrix = 146,
OpSLessThanEqual = 179, OpOuterProduct = 147,
OpFOrdEqual = 180, OpDot = 148,
OpFUnordEqual = 181, OpIAddCarry = 149,
OpFOrdNotEqual = 182, OpISubBorrow = 150,
OpFUnordNotEqual = 183, OpUMulExtended = 151,
OpFOrdLessThan = 184, OpSMulExtended = 152,
OpFUnordLessThan = 185, OpAny = 154,
OpFOrdGreaterThan = 186, OpAll = 155,
OpFUnordGreaterThan = 187, OpIsNan = 156,
OpFOrdLessThanEqual = 188, OpIsInf = 157,
OpFUnordLessThanEqual = 189, OpIsFinite = 158,
OpFOrdGreaterThanEqual = 190, OpIsNormal = 159,
OpFUnordGreaterThanEqual = 191, OpSignBitSet = 160,
OpShiftRightLogical = 194, OpLessOrGreater = 161,
OpShiftRightArithmetic = 195, OpOrdered = 162,
OpShiftLeftLogical = 196, OpUnordered = 163,
OpBitwiseOr = 197, OpLogicalEqual = 164,
OpBitwiseXor = 198, OpLogicalNotEqual = 165,
OpBitwiseAnd = 199, OpLogicalOr = 166,
OpNot = 200, OpLogicalAnd = 167,
OpBitFieldInsert = 201, OpLogicalNot = 168,
OpBitFieldSExtract = 202, OpSelect = 169,
OpBitFieldUExtract = 203, OpIEqual = 170,
OpBitReverse = 204, OpINotEqual = 171,
OpBitCount = 205, OpUGreaterThan = 172,
OpDPdx = 207, OpSGreaterThan = 173,
OpDPdy = 208, OpUGreaterThanEqual = 174,
OpFwidth = 209, OpSGreaterThanEqual = 175,
OpDPdxFine = 210, OpULessThan = 176,
OpDPdyFine = 211, OpSLessThan = 177,
OpFwidthFine = 212, OpULessThanEqual = 178,
OpDPdxCoarse = 213, OpSLessThanEqual = 179,
OpDPdyCoarse = 214, OpFOrdEqual = 180,
OpFwidthCoarse = 215, OpFUnordEqual = 181,
OpEmitVertex = 218, OpFOrdNotEqual = 182,
OpEndPrimitive = 219, OpFUnordNotEqual = 183,
OpEmitStreamVertex = 220, OpFOrdLessThan = 184,
OpEndStreamPrimitive = 221, OpFUnordLessThan = 185,
OpControlBarrier = 224, OpFOrdGreaterThan = 186,
OpMemoryBarrier = 225, OpFUnordGreaterThan = 187,
OpAtomicLoad = 227, OpFOrdLessThanEqual = 188,
OpAtomicStore = 228, OpFUnordLessThanEqual = 189,
OpAtomicExchange = 229, OpFOrdGreaterThanEqual = 190,
OpAtomicCompareExchange = 230, OpFUnordGreaterThanEqual = 191,
OpAtomicCompareExchangeWeak = 231, OpShiftRightLogical = 194,
OpAtomicIIncrement = 232, OpShiftRightArithmetic = 195,
OpAtomicIDecrement = 233, OpShiftLeftLogical = 196,
OpAtomicIAdd = 234, OpBitwiseOr = 197,
OpAtomicISub = 235, OpBitwiseXor = 198,
OpAtomicSMin = 236, OpBitwiseAnd = 199,
OpAtomicUMin = 237, OpNot = 200,
OpAtomicSMax = 238, OpBitFieldInsert = 201,
OpAtomicUMax = 239, OpBitFieldSExtract = 202,
OpAtomicAnd = 240, OpBitFieldUExtract = 203,
OpAtomicOr = 241, OpBitReverse = 204,
OpAtomicXor = 242, OpBitCount = 205,
OpPhi = 245, OpDPdx = 207,
OpLoopMerge = 246, OpDPdy = 208,
OpSelectionMerge = 247, OpFwidth = 209,
OpLabel = 248, OpDPdxFine = 210,
OpBranch = 249, OpDPdyFine = 211,
OpBranchConditional = 250, OpFwidthFine = 212,
OpSwitch = 251, OpDPdxCoarse = 213,
OpKill = 252, OpDPdyCoarse = 214,
OpReturn = 253, OpFwidthCoarse = 215,
OpReturnValue = 254, OpEmitVertex = 218,
OpUnreachable = 255, OpEndPrimitive = 219,
OpLifetimeStart = 256, OpEmitStreamVertex = 220,
OpLifetimeStop = 257, OpEndStreamPrimitive = 221,
OpGroupAsyncCopy = 259, OpControlBarrier = 224,
OpGroupWaitEvents = 260, OpMemoryBarrier = 225,
OpGroupAll = 261, OpAtomicLoad = 227,
OpGroupAny = 262, OpAtomicStore = 228,
OpGroupBroadcast = 263, OpAtomicExchange = 229,
OpGroupIAdd = 264, OpAtomicCompareExchange = 230,
OpGroupFAdd = 265, OpAtomicCompareExchangeWeak = 231,
OpGroupFMin = 266, OpAtomicIIncrement = 232,
OpGroupUMin = 267, OpAtomicIDecrement = 233,
OpGroupSMin = 268, OpAtomicIAdd = 234,
OpGroupFMax = 269, OpAtomicISub = 235,
OpGroupUMax = 270, OpAtomicSMin = 236,
OpGroupSMax = 271, OpAtomicUMin = 237,
OpReadPipe = 274, OpAtomicSMax = 238,
OpWritePipe = 275, OpAtomicUMax = 239,
OpReservedReadPipe = 276, OpAtomicAnd = 240,
OpReservedWritePipe = 277, OpAtomicOr = 241,
OpReserveReadPipePackets = 278, OpAtomicXor = 242,
OpReserveWritePipePackets = 279, OpPhi = 245,
OpCommitReadPipe = 280, OpLoopMerge = 246,
OpCommitWritePipe = 281, OpSelectionMerge = 247,
OpIsValidReserveId = 282, OpLabel = 248,
OpGetNumPipePackets = 283, OpBranch = 249,
OpGetMaxPipePackets = 284, OpBranchConditional = 250,
OpGroupReserveReadPipePackets = 285, OpSwitch = 251,
OpGroupReserveWritePipePackets = 286, OpKill = 252,
OpGroupCommitReadPipe = 287, OpReturn = 253,
OpGroupCommitWritePipe = 288, OpReturnValue = 254,
OpEnqueueMarker = 291, OpUnreachable = 255,
OpEnqueueKernel = 292, OpLifetimeStart = 256,
OpGetKernelNDrangeSubGroupCount = 293, OpLifetimeStop = 257,
OpGetKernelNDrangeMaxSubGroupSize = 294, OpGroupAsyncCopy = 259,
OpGetKernelWorkGroupSize = 295, OpGroupWaitEvents = 260,
OpGetKernelPreferredWorkGroupSizeMultiple = 296, OpGroupAll = 261,
OpRetainEvent = 297, OpGroupAny = 262,
OpReleaseEvent = 298, OpGroupBroadcast = 263,
OpCreateUserEvent = 299, OpGroupIAdd = 264,
OpIsValidEvent = 300, OpGroupFAdd = 265,
OpSetUserEventStatus = 301, OpGroupFMin = 266,
OpCaptureEventProfilingInfo = 302, OpGroupUMin = 267,
OpGetDefaultQueue = 303, OpGroupSMin = 268,
OpBuildNDRange = 304, OpGroupFMax = 269,
OpImageSparseSampleImplicitLod = 305, OpGroupUMax = 270,
OpImageSparseSampleExplicitLod = 306, OpGroupSMax = 271,
OpImageSparseSampleDrefImplicitLod = 307, OpReadPipe = 274,
OpImageSparseSampleDrefExplicitLod = 308, OpWritePipe = 275,
OpImageSparseSampleProjImplicitLod = 309, OpReservedReadPipe = 276,
OpImageSparseSampleProjExplicitLod = 310, OpReservedWritePipe = 277,
OpImageSparseSampleProjDrefImplicitLod = 311, OpReserveReadPipePackets = 278,
OpImageSparseSampleProjDrefExplicitLod = 312, OpReserveWritePipePackets = 279,
OpImageSparseFetch = 313, OpCommitReadPipe = 280,
OpImageSparseGather = 314, OpCommitWritePipe = 281,
OpImageSparseDrefGather = 315, OpIsValidReserveId = 282,
OpImageSparseTexelsResident = 316, OpGetNumPipePackets = 283,
OpNoLine = 317, OpGetMaxPipePackets = 284,
OpAtomicFlagTestAndSet = 318, OpGroupReserveReadPipePackets = 285,
OpAtomicFlagClear = 319, OpGroupReserveWritePipePackets = 286,
OpImageSparseRead = 320, OpGroupCommitReadPipe = 287,
}; OpGroupCommitWritePipe = 288,
OpEnqueueMarker = 291,
// Overload operator| for mask bit combining OpEnqueueKernel = 292,
OpGetKernelNDrangeSubGroupCount = 293,
inline ImageOperandsMask operator|(ImageOperandsMask a, ImageOperandsMask b) { return ImageOperandsMask(unsigned(a) | unsigned(b)); } OpGetKernelNDrangeMaxSubGroupSize = 294,
inline FPFastMathModeMask operator|(FPFastMathModeMask a, FPFastMathModeMask b) { return FPFastMathModeMask(unsigned(a) | unsigned(b)); } OpGetKernelWorkGroupSize = 295,
inline SelectionControlMask operator|(SelectionControlMask a, SelectionControlMask b) { return SelectionControlMask(unsigned(a) | unsigned(b)); } OpGetKernelPreferredWorkGroupSizeMultiple = 296,
inline LoopControlMask operator|(LoopControlMask a, LoopControlMask b) { return LoopControlMask(unsigned(a) | unsigned(b)); } OpRetainEvent = 297,
inline FunctionControlMask operator|(FunctionControlMask a, FunctionControlMask b) { return FunctionControlMask(unsigned(a) | unsigned(b)); } OpReleaseEvent = 298,
inline MemorySemanticsMask operator|(MemorySemanticsMask a, MemorySemanticsMask b) { return MemorySemanticsMask(unsigned(a) | unsigned(b)); } OpCreateUserEvent = 299,
inline MemoryAccessMask operator|(MemoryAccessMask a, MemoryAccessMask b) { return MemoryAccessMask(unsigned(a) | unsigned(b)); } OpIsValidEvent = 300,
inline KernelProfilingInfoMask operator|(KernelProfilingInfoMask a, KernelProfilingInfoMask b) { return KernelProfilingInfoMask(unsigned(a) | unsigned(b)); } OpSetUserEventStatus = 301,
OpCaptureEventProfilingInfo = 302,
} // end namespace spv OpGetDefaultQueue = 303,
OpBuildNDRange = 304,
#endif // #ifndef spirv_HPP OpImageSparseSampleImplicitLod = 305,
OpImageSparseSampleExplicitLod = 306,
OpImageSparseSampleDrefImplicitLod = 307,
OpImageSparseSampleDrefExplicitLod = 308,
OpImageSparseSampleProjImplicitLod = 309,
OpImageSparseSampleProjExplicitLod = 310,
OpImageSparseSampleProjDrefImplicitLod = 311,
OpImageSparseSampleProjDrefExplicitLod = 312,
OpImageSparseFetch = 313,
OpImageSparseGather = 314,
OpImageSparseDrefGather = 315,
OpImageSparseTexelsResident = 316,
OpNoLine = 317,
OpAtomicFlagTestAndSet = 318,
OpAtomicFlagClear = 319,
OpImageSparseRead = 320,
OpMax = 0x7fffffff,
};
// Overload operator| for mask bit combining
inline ImageOperandsMask operator|(ImageOperandsMask a, ImageOperandsMask b) { return ImageOperandsMask(unsigned(a) | unsigned(b)); }
inline FPFastMathModeMask operator|(FPFastMathModeMask a, FPFastMathModeMask b) { return FPFastMathModeMask(unsigned(a) | unsigned(b)); }
inline SelectionControlMask operator|(SelectionControlMask a, SelectionControlMask b) { return SelectionControlMask(unsigned(a) | unsigned(b)); }
inline LoopControlMask operator|(LoopControlMask a, LoopControlMask b) { return LoopControlMask(unsigned(a) | unsigned(b)); }
inline FunctionControlMask operator|(FunctionControlMask a, FunctionControlMask b) { return FunctionControlMask(unsigned(a) | unsigned(b)); }
inline MemorySemanticsMask operator|(MemorySemanticsMask a, MemorySemanticsMask b) { return MemorySemanticsMask(unsigned(a) | unsigned(b)); }
inline MemoryAccessMask operator|(MemoryAccessMask a, MemoryAccessMask b) { return MemoryAccessMask(unsigned(a) | unsigned(b)); }
inline KernelProfilingInfoMask operator|(KernelProfilingInfoMask a, KernelProfilingInfoMask b) { return KernelProfilingInfoMask(unsigned(a) | unsigned(b)); }
} // end namespace spv
#endif // #ifndef spirv_HPP
...@@ -64,8 +64,7 @@ class Module; ...@@ -64,8 +64,7 @@ class Module;
const Id NoResult = 0; const Id NoResult = 0;
const Id NoType = 0; const Id NoType = 0;
const unsigned int BadValue = 0xFFFFFFFF; const Decoration NoPrecision = DecorationMax;
const Decoration NoPrecision = (Decoration)BadValue;
const MemorySemanticsMask MemorySemanticsAllMemory = const MemorySemanticsMask MemorySemanticsAllMemory =
(MemorySemanticsMask)(MemorySemanticsSequentiallyConsistentMask | (MemorySemanticsMask)(MemorySemanticsSequentiallyConsistentMask |
MemorySemanticsUniformMemoryMask | MemorySemanticsUniformMemoryMask |
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment