mirror of
https://github.com/MobileGL-Dev/MobileGL
synced 2026-09-08 20:28:32 +09:00
[Misc] (3rdparty): Update glslang to 15.4.0
This commit is contained in:
@@ -49,6 +49,9 @@ enum TBasicType {
|
||||
EbtFloat,
|
||||
EbtDouble,
|
||||
EbtFloat16,
|
||||
EbtBFloat16,
|
||||
EbtFloatE5M2,
|
||||
EbtFloatE4M3,
|
||||
EbtInt8,
|
||||
EbtUint8,
|
||||
EbtInt16,
|
||||
@@ -70,6 +73,8 @@ enum TBasicType {
|
||||
EbtFunction,
|
||||
EbtTensorLayoutNV,
|
||||
EbtTensorViewNV,
|
||||
EbtCoopvecNV,
|
||||
EbtTensorARM,
|
||||
// SPIR-V type defined by spirv_type
|
||||
EbtSpirvType,
|
||||
|
||||
@@ -278,6 +283,7 @@ enum TBuiltInVariable {
|
||||
EbvWorldToObject3x4,
|
||||
EbvIncomingRayFlags,
|
||||
EbvCurrentRayTimeNV,
|
||||
EbvClusterIDNV,
|
||||
// barycentrics
|
||||
EbvBaryCoordNV,
|
||||
EbvBaryCoordNoPerspNV,
|
||||
@@ -298,6 +304,13 @@ enum TBuiltInVariable {
|
||||
EbvHitKindFrontFacingMicroTriangleNV,
|
||||
EbvHitKindBackFacingMicroTriangleNV,
|
||||
|
||||
EbvHitIsSphereNV,
|
||||
EbvHitIsLSSNV,
|
||||
EbvHitSpherePositionNV,
|
||||
EbvHitSphereRadiusNV,
|
||||
EbvHitLSSPositionsNV,
|
||||
EbvHitLSSRadiiNV,
|
||||
|
||||
//GL_EXT_mesh_shader
|
||||
EbvPrimitivePointIndicesEXT,
|
||||
EbvPrimitiveLineIndicesEXT,
|
||||
@@ -334,6 +347,11 @@ enum TBuiltInVariable {
|
||||
|
||||
EbvPositionFetch,
|
||||
|
||||
// SPV_QCOM_tile_shading
|
||||
EbvTileOffsetQCOM,
|
||||
EbvTileDimensionQCOM,
|
||||
EbvTileApronSizeQCOM,
|
||||
|
||||
EbvLast
|
||||
};
|
||||
|
||||
@@ -502,6 +520,7 @@ __inline const char* GetBuiltInVariableString(TBuiltInVariable v)
|
||||
case EbvObjectToWorld: return "ObjectToWorldNV";
|
||||
case EbvWorldToObject: return "WorldToObjectNV";
|
||||
case EbvCurrentRayTimeNV: return "CurrentRayTimeNV";
|
||||
case EbvClusterIDNV: return "ClusterIDNV";
|
||||
|
||||
case EbvBaryCoordEXT:
|
||||
case EbvBaryCoordNV: return "BaryCoordKHR";
|
||||
@@ -533,6 +552,13 @@ __inline const char* GetBuiltInVariableString(TBuiltInVariable v)
|
||||
case EbvHitKindFrontFacingMicroTriangleNV: return "HitKindFrontFacingMicroTriangleNV";
|
||||
case EbvHitKindBackFacingMicroTriangleNV: return "HitKindBackFacingMicroTriangleNV";
|
||||
|
||||
case EbvHitIsSphereNV: return "HitIsSphereNV";
|
||||
case EbvHitIsLSSNV: return "HitIsLSSNV";
|
||||
case EbvHitSpherePositionNV: return "HitSpherePositionNV";
|
||||
case EbvHitSphereRadiusNV: return "HitSphereRadiusNV";
|
||||
case EbvHitLSSPositionsNV: return "HitSpherePositionsNV";
|
||||
case EbvHitLSSRadiiNV: return "HitLSSRadiiNV";
|
||||
|
||||
default: return "unknown built-in variable";
|
||||
}
|
||||
}
|
||||
@@ -585,6 +611,9 @@ __inline bool isTypeFloat(TBasicType type)
|
||||
case EbtFloat:
|
||||
case EbtDouble:
|
||||
case EbtFloat16:
|
||||
case EbtBFloat16:
|
||||
case EbtFloatE5M2:
|
||||
case EbtFloatE4M3:
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
@@ -596,7 +625,10 @@ __inline uint32_t GetNumBits(TBasicType type)
|
||||
switch (type) {
|
||||
case EbtInt8:
|
||||
case EbtUint8:
|
||||
case EbtFloatE5M2:
|
||||
case EbtFloatE4M3:
|
||||
return 8;
|
||||
case EbtBFloat16:
|
||||
case EbtFloat16:
|
||||
case EbtInt16:
|
||||
case EbtUint16:
|
||||
|
||||
@@ -899,6 +899,17 @@ public:
|
||||
unionArray = new TConstUnionVector(size, val);
|
||||
}
|
||||
|
||||
TConstUnionArray* clone() const
|
||||
{
|
||||
TConstUnionArray *copy = new TConstUnionArray(size());
|
||||
if (unionArray) {
|
||||
for (const auto i : *unionArray) {
|
||||
copy->unionArray->push_back(i);
|
||||
}
|
||||
}
|
||||
return copy;
|
||||
}
|
||||
|
||||
int size() const { return unionArray ? (int)unionArray->size() : 0; }
|
||||
TConstUnion& operator[](size_t index) { return (*unionArray)[index]; }
|
||||
const TConstUnion& operator[](size_t index) const { return (*unionArray)[index]; }
|
||||
|
||||
@@ -61,6 +61,8 @@
|
||||
// class as the allocator (second) template argument.
|
||||
//
|
||||
|
||||
#include "visibility.h"
|
||||
|
||||
#include <cstddef>
|
||||
#include <cstring>
|
||||
#include <vector>
|
||||
@@ -179,6 +181,7 @@ public:
|
||||
// Call allocate() to actually acquire memory. Returns nullptr if no memory
|
||||
// available, otherwise a properly aligned pointer to 'numBytes' of memory.
|
||||
//
|
||||
GLSLANG_EXPORT_FOR_TESTS
|
||||
void* allocate(size_t numBytes);
|
||||
|
||||
//
|
||||
@@ -255,6 +258,7 @@ private:
|
||||
// different times. But a simple use is to have a global pop
|
||||
// with everyone using the same global allocator.
|
||||
//
|
||||
GLSLANG_EXPORT_FOR_TESTS
|
||||
extern TPoolAllocator& GetThreadPoolAllocator();
|
||||
void SetThreadPoolAllocator(TPoolAllocator* poolAllocator);
|
||||
|
||||
@@ -289,6 +293,7 @@ public:
|
||||
template<class Other>
|
||||
pool_allocator(const pool_allocator<Other>& p) : allocator(p.getAllocator()) { }
|
||||
|
||||
GLSLANG_EXPORT_FOR_TESTS
|
||||
pointer allocate(size_type n) {
|
||||
return reinterpret_cast<pointer>(getAllocator().allocate(n * sizeof(T))); }
|
||||
pointer allocate(size_type n, const void*) {
|
||||
|
||||
+169
-25
@@ -85,6 +85,7 @@ struct TSampler { // misnomer now; includes images, textures without sampler,
|
||||
bool image : 1; // image, combined should be false
|
||||
bool combined : 1; // true means texture is combined with a sampler, false means texture with no sampler
|
||||
bool sampler : 1; // true means a pure sampler, other fields should be clear()
|
||||
bool tileQCOM : 1; // is tile shading attachment
|
||||
|
||||
unsigned int vectorSize : 3; // vector return type size.
|
||||
// Some languages support structures as sample results. Storing the whole structure in the
|
||||
@@ -127,6 +128,8 @@ struct TSampler { // misnomer now; includes images, textures without sampler,
|
||||
bool isShadow() const { return shadow; }
|
||||
bool isArrayed() const { return arrayed; }
|
||||
|
||||
bool isTileAttachmentQCOM() const { return tileQCOM; }
|
||||
|
||||
void clear()
|
||||
{
|
||||
type = EbtVoid;
|
||||
@@ -139,6 +142,7 @@ struct TSampler { // misnomer now; includes images, textures without sampler,
|
||||
sampler = false;
|
||||
external = false;
|
||||
yuv = false;
|
||||
tileQCOM = false;
|
||||
|
||||
#ifdef ENABLE_HLSL
|
||||
clearReturnStruct();
|
||||
@@ -220,7 +224,8 @@ struct TSampler { // misnomer now; includes images, textures without sampler,
|
||||
isCombined() == right.isCombined() &&
|
||||
isPureSampler() == right.isPureSampler() &&
|
||||
isExternal() == right.isExternal() &&
|
||||
isYuv() == right.isYuv()
|
||||
isYuv() == right.isYuv() &&
|
||||
isTileAttachmentQCOM() == right.isTileAttachmentQCOM()
|
||||
#ifdef ENABLE_HLSL
|
||||
&& getVectorSize() == right.getVectorSize() &&
|
||||
getStructReturnIndex() == right.getStructReturnIndex()
|
||||
@@ -246,6 +251,9 @@ struct TSampler { // misnomer now; includes images, textures without sampler,
|
||||
case EbtInt: s.append("i"); break;
|
||||
case EbtUint: s.append("u"); break;
|
||||
case EbtFloat16: s.append("f16"); break;
|
||||
case EbtBFloat16: s.append("bf16"); break;
|
||||
case EbtFloatE5M2: s.append("fe5m2"); break;
|
||||
case EbtFloatE4M3: s.append("fe4m3"); break;
|
||||
case EbtInt8: s.append("i8"); break;
|
||||
case EbtUint16: s.append("u8"); break;
|
||||
case EbtInt16: s.append("i16"); break;
|
||||
@@ -259,6 +267,8 @@ struct TSampler { // misnomer now; includes images, textures without sampler,
|
||||
s.append("attachmentEXT");
|
||||
else if (isSubpass())
|
||||
s.append("subpass");
|
||||
else if (isTileAttachmentQCOM())
|
||||
s.append("attachmentQCOM");
|
||||
else
|
||||
s.append("image");
|
||||
} else if (isCombined()) {
|
||||
@@ -552,6 +562,7 @@ public:
|
||||
shadercallcoherent = false;
|
||||
nonprivate = false;
|
||||
volatil = false;
|
||||
nontemporal = false;
|
||||
restrict = false;
|
||||
readonly = false;
|
||||
writeonly = false;
|
||||
@@ -589,6 +600,7 @@ public:
|
||||
bool writeonly : 1;
|
||||
bool coherent : 1;
|
||||
bool volatil : 1;
|
||||
bool nontemporal : 1;
|
||||
bool devicecoherent : 1;
|
||||
bool queuefamilycoherent : 1;
|
||||
bool workgroupcoherent : 1;
|
||||
@@ -603,14 +615,15 @@ public:
|
||||
bool isRestrict() const { return restrict; }
|
||||
bool isCoherent() const { return coherent; }
|
||||
bool isVolatile() const { return volatil; }
|
||||
bool isNonTemporal() const { return nontemporal; }
|
||||
bool isSample() const { return sample; }
|
||||
bool isMemory() const
|
||||
{
|
||||
return shadercallcoherent || subgroupcoherent || workgroupcoherent || queuefamilycoherent || devicecoherent || coherent || volatil || restrict || readonly || writeonly || nonprivate;
|
||||
return shadercallcoherent || subgroupcoherent || workgroupcoherent || queuefamilycoherent || devicecoherent || coherent || volatil || nontemporal || restrict || readonly || writeonly || nonprivate;
|
||||
}
|
||||
bool isMemoryQualifierImageAndSSBOOnly() const
|
||||
{
|
||||
return shadercallcoherent || subgroupcoherent || workgroupcoherent || queuefamilycoherent || devicecoherent || coherent || volatil || restrict || readonly || writeonly;
|
||||
return shadercallcoherent || subgroupcoherent || workgroupcoherent || queuefamilycoherent || devicecoherent || coherent || volatil || nontemporal || restrict || readonly || writeonly;
|
||||
}
|
||||
bool bufferReferenceNeedsVulkanMemoryModel() const
|
||||
{
|
||||
@@ -846,6 +859,8 @@ public:
|
||||
layoutBufferReferenceAlign = layoutBufferReferenceAlignEnd;
|
||||
layoutFormat = ElfNone;
|
||||
|
||||
layoutTileAttachmentQCOM = false;
|
||||
|
||||
clearInterstageLayout();
|
||||
|
||||
layoutSpecConstantId = layoutSpecConstantIdEnd;
|
||||
@@ -947,6 +962,8 @@ public:
|
||||
bool layoutBindlessSampler;
|
||||
bool layoutBindlessImage;
|
||||
|
||||
bool layoutTileAttachmentQCOM;
|
||||
|
||||
bool hasUniformLayout() const
|
||||
{
|
||||
return hasMatrix() ||
|
||||
@@ -1065,6 +1082,10 @@ public:
|
||||
{
|
||||
return layoutBindlessImage;
|
||||
}
|
||||
bool isTileAttachmentQCOM() const
|
||||
{
|
||||
return layoutTileAttachmentQCOM;
|
||||
}
|
||||
|
||||
// GL_EXT_spirv_intrinsics
|
||||
bool hasSpirvDecorate() const { return spirvDecorate != nullptr; }
|
||||
@@ -1278,7 +1299,7 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
// Qualifiers that don't need to be keep per object. They have shader scope, not object scope.
|
||||
// Qualifiers that don't need to be kept per object. They have shader scope, not object scope.
|
||||
// So, they will not be part of TType, TQualifier, etc.
|
||||
struct TShaderQualifiers {
|
||||
TLayoutGeometry geometry; // geometry/tessellation shader in/out primitives
|
||||
@@ -1308,6 +1329,9 @@ struct TShaderQualifiers {
|
||||
bool layoutDerivativeGroupLinear; // true if layout derivative_group_linearNV set
|
||||
int primitives; // mesh shader "max_primitives"DerivativeGroupLinear; // true if layout derivative_group_linearNV set
|
||||
bool layoutPrimitiveCulling; // true if layout primitive_culling set
|
||||
bool layoutNonCoherentTileAttachmentReadQCOM; // fragment shaders -- per object
|
||||
int layoutTileShadingRateQCOM[3]; // compute shader
|
||||
bool layoutTileShadingRateQCOMNotDefault[3]; // compute shader
|
||||
TLayoutDepth getDepth() const { return layoutDepth; }
|
||||
TLayoutStencil getStencil() const { return layoutStencil; }
|
||||
|
||||
@@ -1344,6 +1368,13 @@ struct TShaderQualifiers {
|
||||
layoutDerivativeGroupQuads = false;
|
||||
layoutDerivativeGroupLinear = false;
|
||||
layoutPrimitiveCulling = false;
|
||||
layoutNonCoherentTileAttachmentReadQCOM = false;
|
||||
layoutTileShadingRateQCOM[0] = 0;
|
||||
layoutTileShadingRateQCOM[1] = 0;
|
||||
layoutTileShadingRateQCOM[2] = 0;
|
||||
layoutTileShadingRateQCOMNotDefault[0] = false;
|
||||
layoutTileShadingRateQCOMNotDefault[1] = false;
|
||||
layoutTileShadingRateQCOMNotDefault[2] = false;
|
||||
primitives = TQualifier::layoutNotSet;
|
||||
interlockOrdering = EioNone;
|
||||
}
|
||||
@@ -1413,6 +1444,15 @@ struct TShaderQualifiers {
|
||||
interlockOrdering = src.interlockOrdering;
|
||||
if (src.layoutPrimitiveCulling)
|
||||
layoutPrimitiveCulling = src.layoutPrimitiveCulling;
|
||||
if (src.layoutNonCoherentTileAttachmentReadQCOM)
|
||||
layoutNonCoherentTileAttachmentReadQCOM = src.layoutNonCoherentTileAttachmentReadQCOM;
|
||||
for (int i = 0; i < 3; ++i) {
|
||||
if (src.layoutTileShadingRateQCOM[i] > 1)
|
||||
layoutTileShadingRateQCOM[i] = src.layoutTileShadingRateQCOM[i];
|
||||
}
|
||||
for (int i = 0; i < 3; ++i) {
|
||||
layoutTileShadingRateQCOMNotDefault[i] = src.layoutTileShadingRateQCOMNotDefault[i] || layoutTileShadingRateQCOMNotDefault[i];
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -1460,6 +1500,9 @@ public:
|
||||
uint32_t matrixRows : 4;
|
||||
bool coopmatNV : 1;
|
||||
bool coopmatKHR : 1;
|
||||
bool coopvecNV : 1;
|
||||
bool tileAttachmentQCOM: 1;
|
||||
uint32_t tensorRankARM : 4;
|
||||
TArraySizes* arraySizes;
|
||||
const TType* userDef;
|
||||
TSourceLoc loc;
|
||||
@@ -1470,6 +1513,9 @@ public:
|
||||
bool isCoopmat() const { return coopmatNV || coopmatKHR; }
|
||||
bool isCoopmatNV() const { return coopmatNV; }
|
||||
bool isCoopmatKHR() const { return coopmatKHR; }
|
||||
bool isCoopvecNV() const { return coopvecNV; }
|
||||
bool isTensorARM() const { return tensorRankARM; }
|
||||
bool hasTypeParameter() const { return isCoopmat() || isCoopvecNV() || isTensorARM(); }
|
||||
|
||||
bool isTensorLayoutNV() const { return basicType == EbtTensorLayoutNV; }
|
||||
bool isTensorViewNV() const { return basicType == EbtTensorViewNV; }
|
||||
@@ -1486,6 +1532,9 @@ public:
|
||||
typeParameters = nullptr;
|
||||
coopmatNV = false;
|
||||
coopmatKHR = false;
|
||||
coopvecNV = false;
|
||||
tileAttachmentQCOM = false;
|
||||
tensorRankARM = 0;
|
||||
spirvType = nullptr;
|
||||
}
|
||||
|
||||
@@ -1545,8 +1594,8 @@ public:
|
||||
// for "empty" type (no args) or simple scalar/vector/matrix
|
||||
explicit TType(TBasicType t = EbtVoid, TStorageQualifier q = EvqTemporary, int vs = 1, int mc = 0, int mr = 0,
|
||||
bool isVector = false) :
|
||||
basicType(t), vectorSize(static_cast<uint32_t>(vs) & 0b1111), matrixCols(static_cast<uint32_t>(mc) & 0b1111), matrixRows(static_cast<uint32_t>(mr) & 0b1111), vector1(isVector && vs == 1), coopmatNV(false), coopmatKHR(false), coopmatKHRuse(0), coopmatKHRUseValid(false),
|
||||
arraySizes(nullptr), structure(nullptr), fieldName(nullptr), typeName(nullptr), typeParameters(nullptr),
|
||||
basicType(t), vectorSize(static_cast<uint32_t>(vs) & 0b1111), matrixCols(static_cast<uint32_t>(mc) & 0b1111), matrixRows(static_cast<uint32_t>(mr) & 0b1111), vector1(isVector && vs == 1), coopmatNV(false), coopmatKHR(false), coopmatKHRuse(0), coopmatKHRUseValid(false), coopvecNV(false),
|
||||
tileAttachmentQCOM(false), tensorRankARM(0), arraySizes(nullptr), structure(nullptr), fieldName(nullptr), typeName(nullptr), typeParameters(nullptr),
|
||||
spirvType(nullptr)
|
||||
{
|
||||
assert(vs >= 0);
|
||||
@@ -1561,8 +1610,8 @@ public:
|
||||
// for explicit precision qualifier
|
||||
TType(TBasicType t, TStorageQualifier q, TPrecisionQualifier p, int vs = 1, int mc = 0, int mr = 0,
|
||||
bool isVector = false) :
|
||||
basicType(t), vectorSize(static_cast<uint32_t>(vs) & 0b1111), matrixCols(static_cast<uint32_t>(mc) & 0b1111), matrixRows(static_cast<uint32_t>(mr) & 0b1111), vector1(isVector && vs == 1), coopmatNV(false), coopmatKHR(false), coopmatKHRuse(0), coopmatKHRUseValid(false),
|
||||
arraySizes(nullptr), structure(nullptr), fieldName(nullptr), typeName(nullptr), typeParameters(nullptr),
|
||||
basicType(t), vectorSize(static_cast<uint32_t>(vs) & 0b1111), matrixCols(static_cast<uint32_t>(mc) & 0b1111), matrixRows(static_cast<uint32_t>(mr) & 0b1111), vector1(isVector && vs == 1), coopmatNV(false), coopmatKHR(false), coopmatKHRuse(0), coopmatKHRUseValid(false), coopvecNV(false),
|
||||
tileAttachmentQCOM(false), tensorRankARM(0), arraySizes(nullptr), structure(nullptr), fieldName(nullptr), typeName(nullptr), typeParameters(nullptr),
|
||||
spirvType(nullptr)
|
||||
{
|
||||
assert(vs >= 0);
|
||||
@@ -1579,8 +1628,8 @@ public:
|
||||
// for turning a TPublicType into a TType, using a shallow copy
|
||||
explicit TType(const TPublicType& p) :
|
||||
basicType(p.basicType),
|
||||
vectorSize(p.vectorSize), matrixCols(p.matrixCols), matrixRows(p.matrixRows), vector1(false), coopmatNV(p.coopmatNV), coopmatKHR(p.coopmatKHR), coopmatKHRuse(0), coopmatKHRUseValid(false),
|
||||
arraySizes(p.arraySizes), structure(nullptr), fieldName(nullptr), typeName(nullptr), typeParameters(p.typeParameters),
|
||||
vectorSize(p.vectorSize), matrixCols(p.matrixCols), matrixRows(p.matrixRows), vector1(false), coopmatNV(p.coopmatNV), coopmatKHR(p.coopmatKHR), coopmatKHRuse(0), coopmatKHRUseValid(false), coopvecNV(p.coopvecNV),
|
||||
tileAttachmentQCOM(p.tileAttachmentQCOM), tensorRankARM(p.tensorRankARM), arraySizes(p.arraySizes), structure(nullptr), fieldName(nullptr), typeName(nullptr), typeParameters(p.typeParameters),
|
||||
spirvType(p.spirvType)
|
||||
{
|
||||
if (basicType == EbtSampler)
|
||||
@@ -1630,11 +1679,20 @@ public:
|
||||
coopmatKHRUseValid = true;
|
||||
}
|
||||
}
|
||||
if (p.isCoopvecNV() && p.typeParameters) {
|
||||
basicType = p.typeParameters->basicType;
|
||||
}
|
||||
if (p.isTensorARM() && p.typeParameters) {
|
||||
basicType = p.typeParameters->basicType;
|
||||
if (p.typeParameters->arraySizes->getNumDims() > 0) {
|
||||
tensorRankARM = static_cast<uint32_t>(p.typeParameters->arraySizes->getDimSize(0)) & 0b1111;
|
||||
}
|
||||
}
|
||||
}
|
||||
// for construction of sampler types
|
||||
TType(const TSampler& sampler, TStorageQualifier q = EvqUniform, TArraySizes* as = nullptr) :
|
||||
basicType(EbtSampler), vectorSize(1u), matrixCols(0u), matrixRows(0u), vector1(false), coopmatNV(false), coopmatKHR(false), coopmatKHRuse(0), coopmatKHRUseValid(false),
|
||||
arraySizes(as), structure(nullptr), fieldName(nullptr), typeName(nullptr),
|
||||
basicType(EbtSampler), vectorSize(1u), matrixCols(0u), matrixRows(0u), vector1(false), coopmatNV(false), coopmatKHR(false), coopmatKHRuse(0), coopmatKHRUseValid(false), coopvecNV(false),
|
||||
tileAttachmentQCOM(false), tensorRankARM(0), arraySizes(as), structure(nullptr), fieldName(nullptr), typeName(nullptr),
|
||||
sampler(sampler), typeParameters(nullptr), spirvType(nullptr)
|
||||
{
|
||||
qualifier.clear();
|
||||
@@ -1676,19 +1734,23 @@ public:
|
||||
// dereference from vector to scalar
|
||||
vectorSize = 1;
|
||||
vector1 = false;
|
||||
} else if (isCoopMat()) {
|
||||
} else if (isCoopMat() || isCoopVecNV()) {
|
||||
coopmatNV = false;
|
||||
coopmatKHR = false;
|
||||
coopmatKHRuse = 0;
|
||||
coopmatKHRUseValid = false;
|
||||
coopvecNV = false;
|
||||
typeParameters = nullptr;
|
||||
} else if (isTileAttachmentQCOM()) {
|
||||
tileAttachmentQCOM = false;
|
||||
typeParameters = nullptr;
|
||||
}
|
||||
}
|
||||
}
|
||||
// for making structures, ...
|
||||
TType(TTypeList* userDef, const TString& n) :
|
||||
basicType(EbtStruct), vectorSize(1), matrixCols(0), matrixRows(0), vector1(false), coopmatNV(false), coopmatKHR(false), coopmatKHRuse(0), coopmatKHRUseValid(false),
|
||||
arraySizes(nullptr), structure(userDef), fieldName(nullptr), typeParameters(nullptr),
|
||||
basicType(EbtStruct), vectorSize(1), matrixCols(0), matrixRows(0), vector1(false), coopmatNV(false), coopmatKHR(false), coopmatKHRuse(0), coopmatKHRUseValid(false), coopvecNV(false),
|
||||
tileAttachmentQCOM(false), tensorRankARM(0), arraySizes(nullptr), structure(userDef), fieldName(nullptr), typeParameters(nullptr),
|
||||
spirvType(nullptr)
|
||||
{
|
||||
sampler.clear();
|
||||
@@ -1697,8 +1759,8 @@ public:
|
||||
}
|
||||
// For interface blocks
|
||||
TType(TTypeList* userDef, const TString& n, const TQualifier& q) :
|
||||
basicType(EbtBlock), vectorSize(1), matrixCols(0), matrixRows(0), vector1(false), coopmatNV(false), coopmatKHR(false), coopmatKHRuse(0), coopmatKHRUseValid(false),
|
||||
qualifier(q), arraySizes(nullptr), structure(userDef), fieldName(nullptr), typeParameters(nullptr),
|
||||
basicType(EbtBlock), vectorSize(1), matrixCols(0), matrixRows(0), vector1(false), coopmatNV(false), coopmatKHR(false), coopmatKHRuse(0), coopmatKHRUseValid(false), coopvecNV(false),
|
||||
tileAttachmentQCOM(false), tensorRankARM(0), qualifier(q), arraySizes(nullptr), structure(userDef), fieldName(nullptr), typeParameters(nullptr),
|
||||
spirvType(nullptr)
|
||||
{
|
||||
sampler.clear();
|
||||
@@ -1707,7 +1769,7 @@ public:
|
||||
// for block reference (first parameter must be EbtReference)
|
||||
explicit TType(TBasicType t, const TType &p, const TString& n) :
|
||||
basicType(t), vectorSize(1), matrixCols(0), matrixRows(0), vector1(false), coopmatNV(false), coopmatKHR(false), coopmatKHRuse(0), coopmatKHRUseValid(false),
|
||||
arraySizes(nullptr), structure(nullptr), fieldName(nullptr), typeName(nullptr), typeParameters(nullptr),
|
||||
tileAttachmentQCOM(false), tensorRankARM(0), arraySizes(nullptr), structure(nullptr), fieldName(nullptr), typeName(nullptr), typeParameters(nullptr),
|
||||
spirvType(nullptr)
|
||||
{
|
||||
assert(t == EbtReference);
|
||||
@@ -1745,6 +1807,9 @@ public:
|
||||
coopmatKHR = copyOf.isCoopMatKHR();
|
||||
coopmatKHRuse = copyOf.coopmatKHRuse;
|
||||
coopmatKHRUseValid = copyOf.coopmatKHRUseValid;
|
||||
coopvecNV = copyOf.isCoopVecNV();
|
||||
tileAttachmentQCOM = copyOf.tileAttachmentQCOM;
|
||||
tensorRankARM = copyOf.tensorRankARM;
|
||||
}
|
||||
|
||||
// Make complete copy of the whole type graph rooted at 'copyOf'.
|
||||
@@ -1828,7 +1893,7 @@ public:
|
||||
virtual const TTypeParameters* getTypeParameters() const { return typeParameters; }
|
||||
virtual TTypeParameters* getTypeParameters() { return typeParameters; }
|
||||
|
||||
virtual bool isScalar() const { return ! isVector() && ! isMatrix() && ! isStruct() && ! isArray(); }
|
||||
virtual bool isScalar() const { return ! isVector() && ! isMatrix() && ! isStruct() && ! isArray() && ! isCoopVecNV(); }
|
||||
virtual bool isScalarOrVec1() const { return isScalar() || vector1; }
|
||||
virtual bool isScalarOrVector() const { return !isMatrix() && !isStruct() && !isArray(); }
|
||||
virtual bool isVector() const { return vectorSize > 1u || vector1; }
|
||||
@@ -1842,7 +1907,8 @@ public:
|
||||
virtual void updateImplicitArraySize(int size) { assert(isArray()); arraySizes->updateImplicitSize(size); }
|
||||
virtual void setImplicitlySized(bool isImplicitSized) { arraySizes->setImplicitlySized(isImplicitSized); }
|
||||
virtual bool isStruct() const { return basicType == EbtStruct || basicType == EbtBlock; }
|
||||
virtual bool isFloatingDomain() const { return basicType == EbtFloat || basicType == EbtDouble || basicType == EbtFloat16; }
|
||||
virtual bool isFloatingDomain() const { return basicType == EbtFloat || basicType == EbtDouble || basicType == EbtFloat16 ||
|
||||
basicType == EbtBFloat16 || basicType == EbtFloatE5M2 || basicType == EbtFloatE4M3; }
|
||||
virtual bool isIntegerDomain() const
|
||||
{
|
||||
switch (basicType) {
|
||||
@@ -1863,7 +1929,9 @@ public:
|
||||
}
|
||||
virtual bool isOpaque() const { return basicType == EbtSampler
|
||||
|| basicType == EbtAtomicUint || basicType == EbtAccStruct || basicType == EbtRayQuery
|
||||
|| basicType == EbtHitObjectNV; }
|
||||
|| basicType == EbtHitObjectNV || isTileAttachmentQCOM()
|
||||
|| isTensorARM();
|
||||
}
|
||||
virtual bool isBuiltIn() const { return getQualifier().builtIn != EbvNone; }
|
||||
|
||||
virtual bool isAttachmentEXT() const { return basicType == EbtSampler && getSampler().isAttachmentEXT(); }
|
||||
@@ -1879,6 +1947,11 @@ public:
|
||||
bool isCoopMat() const { return coopmatNV || coopmatKHR; }
|
||||
bool isCoopMatNV() const { return coopmatNV; }
|
||||
bool isCoopMatKHR() const { return coopmatKHR; }
|
||||
bool isCoopVecNV() const { return coopvecNV; }
|
||||
bool isTileAttachmentQCOM() const { return tileAttachmentQCOM; }
|
||||
bool isTensorARM() const { return tensorRankARM; }
|
||||
bool hasTypeParameter() const { return isCoopMat() || isCoopVecNV() || isTensorARM(); }
|
||||
int getTensorRankARM() const { return static_cast<int>(tensorRankARM); }
|
||||
bool isReference() const { return getBasicType() == EbtReference; }
|
||||
bool isSpirvType() const { return getBasicType() == EbtSpirvType; }
|
||||
int getCoopMatKHRuse() const { return static_cast<int>(coopmatKHRuse); }
|
||||
@@ -1940,12 +2013,20 @@ public:
|
||||
|
||||
virtual bool containsNonOpaque() const
|
||||
{
|
||||
if (isTensorARM()) {
|
||||
// Tensors have a numerical basicType even though it is Opaque
|
||||
return false;
|
||||
}
|
||||
|
||||
const auto nonOpaque = [](const TType* t) {
|
||||
switch (t->basicType) {
|
||||
case EbtVoid:
|
||||
case EbtFloat:
|
||||
case EbtDouble:
|
||||
case EbtFloat16:
|
||||
case EbtBFloat16:
|
||||
case EbtFloatE5M2:
|
||||
case EbtFloatE4M3:
|
||||
case EbtInt8:
|
||||
case EbtUint8:
|
||||
case EbtInt16:
|
||||
@@ -1978,6 +2059,10 @@ public:
|
||||
{
|
||||
return containsBasicType(EbtFloat16);
|
||||
}
|
||||
bool containsBFloat16() const
|
||||
{
|
||||
return containsBasicType(EbtBFloat16);
|
||||
}
|
||||
bool contains64BitInt() const
|
||||
{
|
||||
return containsBasicType(EbtInt64) || containsBasicType(EbtUint64);
|
||||
@@ -1994,6 +2079,10 @@ public:
|
||||
{
|
||||
return contains([](const TType* t) { return t->coopmatNV || t->coopmatKHR; } );
|
||||
}
|
||||
bool containsCoopVec() const
|
||||
{
|
||||
return contains([](const TType* t) { return t->coopvecNV; } );
|
||||
}
|
||||
bool containsReference() const
|
||||
{
|
||||
return containsBasicType(EbtReference);
|
||||
@@ -2095,6 +2184,9 @@ public:
|
||||
case EbtVoid: return "void";
|
||||
case EbtDouble: return "double";
|
||||
case EbtFloat16: return "float16_t";
|
||||
case EbtBFloat16: return "bfloat16_t";
|
||||
case EbtFloatE5M2: return "floate5m2_t";
|
||||
case EbtFloatE4M3: return "floate4m3_t";
|
||||
case EbtInt8: return "int8_t";
|
||||
case EbtUint8: return "uint8_t";
|
||||
case EbtInt16: return "int16_t";
|
||||
@@ -2113,6 +2205,8 @@ public:
|
||||
case EbtCoopmat: return "coopmat";
|
||||
case EbtTensorLayoutNV: return "tensorLayoutNV";
|
||||
case EbtTensorViewNV: return "tensorViewNV";
|
||||
case EbtCoopvecNV: return "coopvecNV";
|
||||
case EbtTensorARM: return "tensorARM";
|
||||
default: return "unknown type";
|
||||
}
|
||||
}
|
||||
@@ -2218,7 +2312,7 @@ public:
|
||||
appendStr(" layoutSecondaryViewportRelativeOffset=");
|
||||
appendInt(qualifier.layoutSecondaryViewportRelativeOffset);
|
||||
}
|
||||
|
||||
|
||||
if (qualifier.layoutShaderRecord)
|
||||
appendStr(" shaderRecordNV");
|
||||
if (qualifier.layoutFullQuads)
|
||||
@@ -2281,6 +2375,8 @@ public:
|
||||
appendStr(" nonprivate");
|
||||
if (qualifier.volatil)
|
||||
appendStr(" volatile");
|
||||
if (qualifier.nontemporal)
|
||||
appendStr(" nontemporal");
|
||||
if (qualifier.restrict)
|
||||
appendStr(" restrict");
|
||||
if (qualifier.readonly)
|
||||
@@ -2431,6 +2527,10 @@ public:
|
||||
appendStr(" ");
|
||||
appendStr("tensorViewNV");
|
||||
}
|
||||
if (isCoopVecNV()) {
|
||||
appendStr(" ");
|
||||
appendStr("coopvecNV");
|
||||
}
|
||||
|
||||
appendStr("<");
|
||||
for (int i = 0; i < (int)typeParameters->arraySizes->getNumDims(); ++i) {
|
||||
@@ -2512,7 +2612,9 @@ public:
|
||||
{
|
||||
uint32_t components = 0;
|
||||
|
||||
if (getBasicType() == EbtStruct || getBasicType() == EbtBlock) {
|
||||
if (isCoopVecNV()) {
|
||||
components = typeParameters->arraySizes->getDimSize(0);
|
||||
} else if (getBasicType() == EbtStruct || getBasicType() == EbtBlock) {
|
||||
for (TTypeList::const_iterator tl = getStruct()->begin(); tl != getStruct()->end(); tl++)
|
||||
components += ((*tl).type)->computeNumComponents();
|
||||
} else if (matrixCols)
|
||||
@@ -2716,6 +2818,8 @@ public:
|
||||
vector1 == right.vector1 &&
|
||||
isCoopMatNV() == right.isCoopMatNV() &&
|
||||
isCoopMatKHR() == right.isCoopMatKHR() &&
|
||||
isCoopVecNV() == right.isCoopVecNV() &&
|
||||
isTensorARM() == right.isTensorARM() &&
|
||||
sameStructType(right, lpidx, rpidx) &&
|
||||
sameReferenceType(right);
|
||||
}
|
||||
@@ -2737,6 +2841,18 @@ public:
|
||||
return false;
|
||||
}
|
||||
|
||||
// See if a cooperative vector type parameter with unspecified parameters is
|
||||
// an OK function parameter
|
||||
bool coopVecParameterOK(const TType& right) const
|
||||
{
|
||||
if (isCoopVecNV() && right.isCoopVecNV()) {
|
||||
return ((getBasicType() == right.getBasicType()) || (getBasicType() == EbtCoopvecNV) ||
|
||||
(right.getBasicType() == EbtCoopvecNV)) &&
|
||||
typeParameters == nullptr && right.typeParameters != nullptr;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool sameCoopMatBaseType(const TType &right) const {
|
||||
bool rv = false;
|
||||
|
||||
@@ -2751,8 +2867,8 @@ public:
|
||||
else
|
||||
rv = false;
|
||||
} else if (isCoopMatKHR() && right.isCoopMatKHR()) {
|
||||
if (getBasicType() == EbtFloat || getBasicType() == EbtFloat16)
|
||||
rv = right.getBasicType() == EbtFloat || right.getBasicType() == EbtFloat16 || right.getBasicType() == EbtCoopmat;
|
||||
if (isFloatingDomain())
|
||||
rv = right.isFloatingDomain() || right.getBasicType() == EbtCoopmat;
|
||||
else if (getBasicType() == EbtUint || getBasicType() == EbtUint8 || getBasicType() == EbtUint16)
|
||||
rv = right.getBasicType() == EbtUint || right.getBasicType() == EbtUint8 || right.getBasicType() == EbtUint16 || right.getBasicType() == EbtCoopmat;
|
||||
else if (getBasicType() == EbtInt || getBasicType() == EbtInt8 || getBasicType() == EbtInt16)
|
||||
@@ -2771,9 +2887,34 @@ public:
|
||||
if (isTensorViewNV()) {
|
||||
return right.isTensorViewNV() && right.typeParameters == nullptr && typeParameters != nullptr;
|
||||
}
|
||||
if (isTensorARM()) {
|
||||
return right.isTensorARM() && right.typeParameters == nullptr && typeParameters != nullptr;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool sameTensorBaseTypeARM(const TType &right) const {
|
||||
return (typeParameters == nullptr || right.typeParameters == nullptr ||
|
||||
(tensorRankARM == right.tensorRankARM && getBasicType() == right.getBasicType()));
|
||||
}
|
||||
|
||||
bool sameCoopVecBaseType(const TType &right) const {
|
||||
bool rv = false;
|
||||
|
||||
if (isCoopVecNV() && right.isCoopVecNV()) {
|
||||
if (getBasicType() == EbtFloat || getBasicType() == EbtFloat16)
|
||||
rv = right.getBasicType() == EbtFloat || right.getBasicType() == EbtFloat16 || right.getBasicType() == EbtCoopvecNV;
|
||||
else if (getBasicType() == EbtUint || getBasicType() == EbtUint8 || getBasicType() == EbtUint16)
|
||||
rv = right.getBasicType() == EbtUint || right.getBasicType() == EbtUint8 || right.getBasicType() == EbtUint16 || right.getBasicType() == EbtCoopvecNV;
|
||||
else if (getBasicType() == EbtInt || getBasicType() == EbtInt8 || getBasicType() == EbtInt16)
|
||||
rv = right.getBasicType() == EbtInt || right.getBasicType() == EbtInt8 || right.getBasicType() == EbtInt16 || right.getBasicType() == EbtCoopvecNV;
|
||||
else
|
||||
rv = false;
|
||||
}
|
||||
return rv;
|
||||
}
|
||||
|
||||
bool sameCoopMatUse(const TType &right) const {
|
||||
return coopmatKHRuse == right.coopmatKHRuse;
|
||||
}
|
||||
@@ -2903,6 +3044,9 @@ protected:
|
||||
bool coopmatKHR : 1;
|
||||
uint32_t coopmatKHRuse : 3; // Accepts one of three values: 0, 1, 2 (gl_MatrixUseA, gl_MatrixUseB, gl_MatrixUseAccumulator)
|
||||
bool coopmatKHRUseValid : 1; // True if coopmatKHRuse has been set
|
||||
bool coopvecNV : 1;
|
||||
bool tileAttachmentQCOM : 1;
|
||||
uint32_t tensorRankARM : 4; // 0 means not a tensor; non-zero indicates the tensor rank.
|
||||
TQualifier qualifier;
|
||||
|
||||
TArraySizes* arraySizes; // nullptr unless an array; can be shared across types
|
||||
|
||||
@@ -284,7 +284,7 @@ GLSLANG_EXPORT const char* glslang_program_SPIRV_get_messages(glslang_program_t*
|
||||
GLSLANG_EXPORT const char* glslang_program_get_info_log(glslang_program_t* program);
|
||||
GLSLANG_EXPORT const char* glslang_program_get_info_debug_log(glslang_program_t* program);
|
||||
|
||||
GLSLANG_EXPORT glslang_mapper_t* glslang_glsl_mapper_create();
|
||||
GLSLANG_EXPORT glslang_mapper_t* glslang_glsl_mapper_create(void);
|
||||
GLSLANG_EXPORT void glslang_glsl_mapper_delete(glslang_mapper_t* mapper);
|
||||
|
||||
GLSLANG_EXPORT glslang_resolver_t* glslang_glsl_resolver_create(glslang_program_t* program, glslang_stage_t stage);
|
||||
|
||||
@@ -118,8 +118,9 @@ typedef enum {
|
||||
GLSLANG_TARGET_VULKAN_1_1 = (1 << 22) | (1 << 12),
|
||||
GLSLANG_TARGET_VULKAN_1_2 = (1 << 22) | (2 << 12),
|
||||
GLSLANG_TARGET_VULKAN_1_3 = (1 << 22) | (3 << 12),
|
||||
GLSLANG_TARGET_VULKAN_1_4 = (1 << 22) | (4 << 12),
|
||||
GLSLANG_TARGET_OPENGL_450 = 450,
|
||||
LAST_ELEMENT_MARKER(GLSLANG_TARGET_CLIENT_VERSION_COUNT = 5),
|
||||
LAST_ELEMENT_MARKER(GLSLANG_TARGET_CLIENT_VERSION_COUNT = 6),
|
||||
} glslang_target_client_version_t;
|
||||
|
||||
/* SH_TARGET_LanguageVersion counterpart */
|
||||
@@ -177,6 +178,7 @@ typedef enum {
|
||||
GLSLANG_MSG_ABSOLUTE_PATH = (1 << 16),
|
||||
GLSLANG_MSG_DISPLAY_ERROR_COLUMN = (1 << 17),
|
||||
GLSLANG_MSG_LINK_TIME_OPTIMIZATION_BIT = (1 << 18),
|
||||
GLSLANG_MSG_VALIDATE_CROSS_STAGE_IO_BIT = (1 << 19),
|
||||
LAST_ELEMENT_MARKER(GLSLANG_MSG_COUNT),
|
||||
} glslang_messages_t;
|
||||
|
||||
|
||||
@@ -387,6 +387,11 @@ enum TOperator {
|
||||
EOpSubgroupPartitionedExclusiveXor,
|
||||
|
||||
EOpSubgroupGuardStop,
|
||||
|
||||
// Integer dot product
|
||||
EOpDotPackedEXT,
|
||||
EOpDotAccSatEXT,
|
||||
EOpDotPackedAccSatEXT,
|
||||
|
||||
EOpMinInvocations,
|
||||
EOpMaxInvocations,
|
||||
@@ -467,6 +472,17 @@ enum TOperator {
|
||||
EOpTensorViewSetStrideNV,
|
||||
EOpTensorViewSetClipNV,
|
||||
|
||||
EOpCooperativeVectorMatMulNV,
|
||||
EOpCooperativeVectorMatMulAddNV,
|
||||
EOpCooperativeVectorLoadNV,
|
||||
EOpCooperativeVectorStoreNV,
|
||||
EOpCooperativeVectorOuterProductAccumulateNV,
|
||||
EOpCooperativeVectorReduceSumAccumulateNV,
|
||||
|
||||
EOpTensorReadARM,
|
||||
EOpTensorWriteARM,
|
||||
EOpTensorSizeARM,
|
||||
|
||||
EOpBeginInvocationInterlock, // Fragment only
|
||||
EOpEndInvocationInterlock, // Fragment only
|
||||
|
||||
@@ -599,13 +615,27 @@ enum TOperator {
|
||||
EOpConstructF16Mat4x2,
|
||||
EOpConstructF16Mat4x3,
|
||||
EOpConstructF16Mat4x4,
|
||||
EOpConstructBFloat16,
|
||||
EOpConstructBF16Vec2,
|
||||
EOpConstructBF16Vec3,
|
||||
EOpConstructBF16Vec4,
|
||||
EOpConstructFloatE5M2,
|
||||
EOpConstructFloatE5M2Vec2,
|
||||
EOpConstructFloatE5M2Vec3,
|
||||
EOpConstructFloatE5M2Vec4,
|
||||
EOpConstructFloatE4M3,
|
||||
EOpConstructFloatE4M3Vec2,
|
||||
EOpConstructFloatE4M3Vec3,
|
||||
EOpConstructFloatE4M3Vec4,
|
||||
EOpConstructStruct,
|
||||
EOpConstructTextureSampler,
|
||||
EOpConstructNonuniform, // expected to be transformed away, not present in final AST
|
||||
EOpConstructReference,
|
||||
EOpConstructCooperativeMatrixNV,
|
||||
EOpConstructCooperativeMatrixKHR,
|
||||
EOpConstructCooperativeVectorNV,
|
||||
EOpConstructAccStruct,
|
||||
EOpConstructSaturated,
|
||||
EOpConstructGuardEnd,
|
||||
|
||||
//
|
||||
@@ -954,6 +984,25 @@ enum TOperator {
|
||||
EOpImageBlockMatchWindowSADQCOM,
|
||||
EOpImageBlockMatchGatherSSDQCOM,
|
||||
EOpImageBlockMatchGatherSADQCOM,
|
||||
|
||||
// GL_NV_cluster_acceleration_structure
|
||||
EOpRayQueryGetIntersectionClusterIdNV,
|
||||
EOpHitObjectGetClusterIdNV,
|
||||
|
||||
// GL_NV_linear_swept_spheres
|
||||
EOpRayQueryGetIntersectionSpherePositionNV,
|
||||
EOpRayQueryGetIntersectionSphereRadiusNV,
|
||||
EOpRayQueryGetIntersectionLSSHitValueNV,
|
||||
EOpRayQueryGetIntersectionLSSPositionsNV,
|
||||
EOpRayQueryGetIntersectionLSSRadiiNV,
|
||||
EOpRayQueryIsSphereHitNV,
|
||||
EOpRayQueryIsLSSHitNV,
|
||||
EOpHitObjectGetSpherePositionNV,
|
||||
EOpHitObjectGetSphereRadiusNV,
|
||||
EOpHitObjectGetLSSPositionsNV,
|
||||
EOpHitObjectGetLSSRadiiNV,
|
||||
EOpHitObjectIsSphereHitNV,
|
||||
EOpHitObjectIsLSSHitNV,
|
||||
};
|
||||
|
||||
inline bool IsOpNumericConv(const TOperator op) {
|
||||
@@ -1059,6 +1108,7 @@ public:
|
||||
virtual int getVectorSize() const { return type.getVectorSize(); }
|
||||
virtual int getMatrixCols() const { return type.getMatrixCols(); }
|
||||
virtual int getMatrixRows() const { return type.getMatrixRows(); }
|
||||
virtual int getTensorRankARM() const { return type.getTensorRankARM(); }
|
||||
virtual bool isMatrix() const { return type.isMatrix(); }
|
||||
virtual bool isArray() const { return type.isArray(); }
|
||||
virtual bool isVector() const { return type.isVector(); }
|
||||
|
||||
@@ -407,7 +407,7 @@ public:
|
||||
void setDefaultPrecision(const TSourceLoc&, TPublicType&, TPrecisionQualifier);
|
||||
int computeSamplerTypeIndex(TSampler&);
|
||||
TPrecisionQualifier getDefaultPrecision(TPublicType&);
|
||||
void precisionQualifierCheck(const TSourceLoc&, TBasicType, TQualifier&, bool isCoopMatOrVec);
|
||||
void precisionQualifierCheck(const TSourceLoc&, TBasicType, TQualifier&, bool hasTypeParameter);
|
||||
void parameterTypeCheck(const TSourceLoc&, TStorageQualifier qualifier, const TType& type);
|
||||
bool containsFieldWithBasicType(const TType& type ,TBasicType basicType);
|
||||
TSymbol* redeclareBuiltinVariable(const TSourceLoc&, const TString&, const TQualifier&, const TShaderQualifiers&);
|
||||
@@ -450,6 +450,9 @@ public:
|
||||
TIntermTyped* addConstructor(const TSourceLoc&, TIntermNode*, const TType&);
|
||||
TIntermTyped* constructAggregate(TIntermNode*, const TType&, int, const TSourceLoc&);
|
||||
TIntermTyped* constructBuiltIn(const TType&, TOperator, TIntermTyped*, const TSourceLoc&, bool subset);
|
||||
void makeVariadic(TFunction *F, const TSourceLoc &loc);
|
||||
TParameter getParamWithDefault(const TPublicType& ty, TString* identifier, TIntermTyped* initializer,
|
||||
const TSourceLoc& loc);
|
||||
void inheritMemoryQualifiers(const TQualifier& from, TQualifier& to);
|
||||
void declareBlock(const TSourceLoc&, TTypeList& typeList, const TString* instanceName = nullptr, TArraySizes* arraySizes = nullptr);
|
||||
void blockStorageRemap(const TSourceLoc&, const TString*, TQualifier&);
|
||||
|
||||
@@ -232,6 +232,13 @@ struct TParameter {
|
||||
name = nullptr;
|
||||
type = param.type->clone();
|
||||
defaultValue = param.defaultValue;
|
||||
if (defaultValue) {
|
||||
// The defaultValue of a builtin is created in a TPoolAllocator that no longer exists
|
||||
// when parsing the user program, so make a deep copy.
|
||||
if (const auto *constUnion = defaultValue->getAsConstantUnion()) {
|
||||
defaultValue = new TIntermConstantUnion(*constUnion->getConstArray().clone(), constUnion->getType());
|
||||
}
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
TBuiltInVariable getDeclaredBuiltIn() const { return type->getQualifier().declaredBuiltIn; }
|
||||
@@ -245,12 +252,12 @@ public:
|
||||
explicit TFunction(TOperator o) :
|
||||
TSymbol(nullptr),
|
||||
op(o),
|
||||
defined(false), prototyped(false), implicitThis(false), illegalImplicitThis(false), defaultParamCount(0) { }
|
||||
defined(false), prototyped(false), implicitThis(false), illegalImplicitThis(false), variadic(false), defaultParamCount(0) { }
|
||||
TFunction(const TString *name, const TType& retType, TOperator tOp = EOpNull) :
|
||||
TSymbol(name),
|
||||
mangledName(*name + '('),
|
||||
op(tOp),
|
||||
defined(false), prototyped(false), implicitThis(false), illegalImplicitThis(false), defaultParamCount(0),
|
||||
defined(false), prototyped(false), implicitThis(false), illegalImplicitThis(false), variadic(false), defaultParamCount(0),
|
||||
linkType(ELinkNone)
|
||||
{
|
||||
returnType.shallowCopy(retType);
|
||||
@@ -268,6 +275,7 @@ public:
|
||||
virtual void addParameter(TParameter& p)
|
||||
{
|
||||
assert(writable);
|
||||
assert(!variadic && "cannot add more parameters if function is marked variadic");
|
||||
parameters.push_back(p);
|
||||
p.type->appendMangledName(mangledName);
|
||||
|
||||
@@ -310,6 +318,13 @@ public:
|
||||
virtual bool hasImplicitThis() const { return implicitThis; }
|
||||
virtual void setIllegalImplicitThis() { assert(writable); illegalImplicitThis = true; }
|
||||
virtual bool hasIllegalImplicitThis() const { return illegalImplicitThis; }
|
||||
virtual void setVariadic() {
|
||||
assert(writable);
|
||||
assert(!variadic && "function was already marked variadic");
|
||||
variadic = true;
|
||||
mangledName += 'z';
|
||||
}
|
||||
virtual bool isVariadic() const { return variadic; }
|
||||
|
||||
// Return total number of parameters
|
||||
virtual int getParamCount() const { return static_cast<int>(parameters.size()); }
|
||||
@@ -352,6 +367,7 @@ protected:
|
||||
// even if it finds member variables in the symbol table.
|
||||
// This is important for a static member function that has member variables in scope,
|
||||
// but is not allowed to use them, or see hidden symbols instead.
|
||||
bool variadic;
|
||||
int defaultParamCount;
|
||||
|
||||
TSpirvInstruction spirvInst; // SPIR-V instruction qualifiers
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
// Copyright (C) 2017, 2022-2024 Arm Limited.
|
||||
// Copyright (C) 2015-2018 Google, Inc.
|
||||
// Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved.
|
||||
// Modifications Copyright (C) 2024 Valve Corporation.
|
||||
//
|
||||
// All rights reserved.
|
||||
//
|
||||
@@ -223,6 +224,8 @@ const char* const E_GL_EXT_maximal_reconvergence = "GL_EXT_maximal_re
|
||||
const char* const E_GL_EXT_expect_assume = "GL_EXT_expect_assume";
|
||||
const char* const E_GL_EXT_control_flow_attributes2 = "GL_EXT_control_flow_attributes2";
|
||||
const char* const E_GL_EXT_spec_constant_composites = "GL_EXT_spec_constant_composites";
|
||||
const char* const E_GL_EXT_texture_offset_non_const = "GL_EXT_texture_offset_non_const";
|
||||
const char* const E_GL_EXT_nontemporal_keyword = "GL_EXT_nontemporal_keyword";
|
||||
|
||||
// Arrays of extensions for the above viewportEXTs duplications
|
||||
|
||||
@@ -283,9 +286,14 @@ const char* const E_GL_EXT_ray_tracing_position_fetch = "GL_EXT_ray_tr
|
||||
const char* const E_GL_NV_displacement_micromap = "GL_NV_displacement_micromap";
|
||||
const char* const E_GL_NV_shader_atomic_fp16_vector = "GL_NV_shader_atomic_fp16_vector";
|
||||
const char* const E_GL_NV_cooperative_matrix2 = "GL_NV_cooperative_matrix2";
|
||||
const char* const E_GL_NV_cooperative_vector = "GL_NV_cooperative_vector";
|
||||
const char* const E_GL_NV_cluster_acceleration_structure = "GL_NV_cluster_acceleration_structure";
|
||||
const char* const E_GL_NV_linear_swept_spheres = "GL_NV_linear_swept_spheres";
|
||||
const char* const E_GL_NV_gpu_shader5 = "GL_NV_gpu_shader5";
|
||||
|
||||
// ARM
|
||||
const char* const E_GL_ARM_shader_core_builtins = "GL_ARM_shader_core_builtins";
|
||||
const char* const E_GL_ARM_tensors = "GL_ARM_tensors";
|
||||
|
||||
// Arrays of extensions for the above viewportEXTs duplications
|
||||
|
||||
@@ -295,6 +303,7 @@ const int Num_viewportEXTs = sizeof(viewportEXTs) / sizeof(viewportEXTs[0]);
|
||||
|
||||
const char* const E_GL_QCOM_image_processing = "GL_QCOM_image_processing";
|
||||
const char* const E_GL_QCOM_image_processing2 = "GL_QCOM_image_processing2";
|
||||
const char* const E_GL_QCOM_tile_shading = "GL_QCOM_tile_shading";
|
||||
|
||||
// AEP
|
||||
const char* const E_GL_ANDROID_extension_pack_es31a = "GL_ANDROID_extension_pack_es31a";
|
||||
@@ -348,6 +357,12 @@ const char* const E_GL_EXT_shader_tile_image = "GL_EXT_shader_tile_image";
|
||||
|
||||
const char* const E_GL_EXT_texture_shadow_lod = "GL_EXT_texture_shadow_lod";
|
||||
|
||||
const char* const E_GL_EXT_integer_dot_product = "GL_EXT_integer_dot_product";
|
||||
|
||||
const char* const E_GL_EXT_bfloat16 = "GL_EXT_bfloat16";
|
||||
const char* const E_GL_EXT_float_e5m2 = "GL_EXT_float_e5m2";
|
||||
const char* const E_GL_EXT_float_e4m3 = "GL_EXT_float_e4m3";
|
||||
|
||||
// Arrays of extensions for the above AEP duplications
|
||||
|
||||
const char* const AEP_geometry_shader[] = { E_GL_EXT_geometry_shader, E_GL_OES_geometry_shader };
|
||||
@@ -359,6 +374,9 @@ const int Num_AEP_geometry_point_size = sizeof(AEP_geometry_point_size)/sizeof(A
|
||||
const char* const AEP_gpu_shader5[] = { E_GL_EXT_gpu_shader5, E_GL_OES_gpu_shader5 };
|
||||
const int Num_AEP_gpu_shader5 = sizeof(AEP_gpu_shader5)/sizeof(AEP_gpu_shader5[0]);
|
||||
|
||||
const char* const AEP_core_gpu_shader5[] = { E_GL_ARB_gpu_shader5, E_GL_NV_gpu_shader5};
|
||||
const int Num_AEP_core_gpu_shader5 = sizeof(AEP_core_gpu_shader5)/sizeof(AEP_core_gpu_shader5[0]);
|
||||
|
||||
const char* const AEP_primitive_bounding_box[] = { E_GL_EXT_primitive_bounding_box, E_GL_OES_primitive_bounding_box };
|
||||
const int Num_AEP_primitive_bounding_box = sizeof(AEP_primitive_bounding_box)/sizeof(AEP_primitive_bounding_box[0]);
|
||||
|
||||
|
||||
@@ -114,417 +114,426 @@ extern int yydebug;
|
||||
UTEXTURE2DARRAY = 315, /* UTEXTURE2DARRAY */
|
||||
ATTRIBUTE = 316, /* ATTRIBUTE */
|
||||
VARYING = 317, /* VARYING */
|
||||
BFLOAT16_T = 318, /* BFLOAT16_T */
|
||||
FLOAT16_T = 319, /* FLOAT16_T */
|
||||
FLOAT32_T = 320, /* FLOAT32_T */
|
||||
DOUBLE = 321, /* DOUBLE */
|
||||
FLOAT64_T = 322, /* FLOAT64_T */
|
||||
INT64_T = 323, /* INT64_T */
|
||||
UINT64_T = 324, /* UINT64_T */
|
||||
INT32_T = 325, /* INT32_T */
|
||||
UINT32_T = 326, /* UINT32_T */
|
||||
INT16_T = 327, /* INT16_T */
|
||||
UINT16_T = 328, /* UINT16_T */
|
||||
INT8_T = 329, /* INT8_T */
|
||||
UINT8_T = 330, /* UINT8_T */
|
||||
I64VEC2 = 331, /* I64VEC2 */
|
||||
I64VEC3 = 332, /* I64VEC3 */
|
||||
I64VEC4 = 333, /* I64VEC4 */
|
||||
U64VEC2 = 334, /* U64VEC2 */
|
||||
U64VEC3 = 335, /* U64VEC3 */
|
||||
U64VEC4 = 336, /* U64VEC4 */
|
||||
I32VEC2 = 337, /* I32VEC2 */
|
||||
I32VEC3 = 338, /* I32VEC3 */
|
||||
I32VEC4 = 339, /* I32VEC4 */
|
||||
U32VEC2 = 340, /* U32VEC2 */
|
||||
U32VEC3 = 341, /* U32VEC3 */
|
||||
U32VEC4 = 342, /* U32VEC4 */
|
||||
I16VEC2 = 343, /* I16VEC2 */
|
||||
I16VEC3 = 344, /* I16VEC3 */
|
||||
I16VEC4 = 345, /* I16VEC4 */
|
||||
U16VEC2 = 346, /* U16VEC2 */
|
||||
U16VEC3 = 347, /* U16VEC3 */
|
||||
U16VEC4 = 348, /* U16VEC4 */
|
||||
I8VEC2 = 349, /* I8VEC2 */
|
||||
I8VEC3 = 350, /* I8VEC3 */
|
||||
I8VEC4 = 351, /* I8VEC4 */
|
||||
U8VEC2 = 352, /* U8VEC2 */
|
||||
U8VEC3 = 353, /* U8VEC3 */
|
||||
U8VEC4 = 354, /* U8VEC4 */
|
||||
DVEC2 = 355, /* DVEC2 */
|
||||
DVEC3 = 356, /* DVEC3 */
|
||||
DVEC4 = 357, /* DVEC4 */
|
||||
DMAT2 = 358, /* DMAT2 */
|
||||
DMAT3 = 359, /* DMAT3 */
|
||||
DMAT4 = 360, /* DMAT4 */
|
||||
BF16VEC2 = 361, /* BF16VEC2 */
|
||||
BF16VEC3 = 362, /* BF16VEC3 */
|
||||
BF16VEC4 = 363, /* BF16VEC4 */
|
||||
F16VEC2 = 364, /* F16VEC2 */
|
||||
F16VEC3 = 365, /* F16VEC3 */
|
||||
F16VEC4 = 366, /* F16VEC4 */
|
||||
F16MAT2 = 367, /* F16MAT2 */
|
||||
F16MAT3 = 368, /* F16MAT3 */
|
||||
F16MAT4 = 369, /* F16MAT4 */
|
||||
F32VEC2 = 370, /* F32VEC2 */
|
||||
F32VEC3 = 371, /* F32VEC3 */
|
||||
F32VEC4 = 372, /* F32VEC4 */
|
||||
F32MAT2 = 373, /* F32MAT2 */
|
||||
F32MAT3 = 374, /* F32MAT3 */
|
||||
F32MAT4 = 375, /* F32MAT4 */
|
||||
F64VEC2 = 376, /* F64VEC2 */
|
||||
F64VEC3 = 377, /* F64VEC3 */
|
||||
F64VEC4 = 378, /* F64VEC4 */
|
||||
F64MAT2 = 379, /* F64MAT2 */
|
||||
F64MAT3 = 380, /* F64MAT3 */
|
||||
F64MAT4 = 381, /* F64MAT4 */
|
||||
DMAT2X2 = 382, /* DMAT2X2 */
|
||||
DMAT2X3 = 383, /* DMAT2X3 */
|
||||
DMAT2X4 = 384, /* DMAT2X4 */
|
||||
DMAT3X2 = 385, /* DMAT3X2 */
|
||||
DMAT3X3 = 386, /* DMAT3X3 */
|
||||
DMAT3X4 = 387, /* DMAT3X4 */
|
||||
DMAT4X2 = 388, /* DMAT4X2 */
|
||||
DMAT4X3 = 389, /* DMAT4X3 */
|
||||
DMAT4X4 = 390, /* DMAT4X4 */
|
||||
F16MAT2X2 = 391, /* F16MAT2X2 */
|
||||
F16MAT2X3 = 392, /* F16MAT2X3 */
|
||||
F16MAT2X4 = 393, /* F16MAT2X4 */
|
||||
F16MAT3X2 = 394, /* F16MAT3X2 */
|
||||
F16MAT3X3 = 395, /* F16MAT3X3 */
|
||||
F16MAT3X4 = 396, /* F16MAT3X4 */
|
||||
F16MAT4X2 = 397, /* F16MAT4X2 */
|
||||
F16MAT4X3 = 398, /* F16MAT4X3 */
|
||||
F16MAT4X4 = 399, /* F16MAT4X4 */
|
||||
F32MAT2X2 = 400, /* F32MAT2X2 */
|
||||
F32MAT2X3 = 401, /* F32MAT2X3 */
|
||||
F32MAT2X4 = 402, /* F32MAT2X4 */
|
||||
F32MAT3X2 = 403, /* F32MAT3X2 */
|
||||
F32MAT3X3 = 404, /* F32MAT3X3 */
|
||||
F32MAT3X4 = 405, /* F32MAT3X4 */
|
||||
F32MAT4X2 = 406, /* F32MAT4X2 */
|
||||
F32MAT4X3 = 407, /* F32MAT4X3 */
|
||||
F32MAT4X4 = 408, /* F32MAT4X4 */
|
||||
F64MAT2X2 = 409, /* F64MAT2X2 */
|
||||
F64MAT2X3 = 410, /* F64MAT2X3 */
|
||||
F64MAT2X4 = 411, /* F64MAT2X4 */
|
||||
F64MAT3X2 = 412, /* F64MAT3X2 */
|
||||
F64MAT3X3 = 413, /* F64MAT3X3 */
|
||||
F64MAT3X4 = 414, /* F64MAT3X4 */
|
||||
F64MAT4X2 = 415, /* F64MAT4X2 */
|
||||
F64MAT4X3 = 416, /* F64MAT4X3 */
|
||||
F64MAT4X4 = 417, /* F64MAT4X4 */
|
||||
ATOMIC_UINT = 418, /* ATOMIC_UINT */
|
||||
ACCSTRUCTNV = 419, /* ACCSTRUCTNV */
|
||||
ACCSTRUCTEXT = 420, /* ACCSTRUCTEXT */
|
||||
RAYQUERYEXT = 421, /* RAYQUERYEXT */
|
||||
FCOOPMATNV = 422, /* FCOOPMATNV */
|
||||
ICOOPMATNV = 423, /* ICOOPMATNV */
|
||||
UCOOPMATNV = 424, /* UCOOPMATNV */
|
||||
COOPMAT = 425, /* COOPMAT */
|
||||
COOPVECNV = 426, /* COOPVECNV */
|
||||
HITOBJECTNV = 427, /* HITOBJECTNV */
|
||||
HITOBJECTATTRNV = 428, /* HITOBJECTATTRNV */
|
||||
TENSORLAYOUTNV = 429, /* TENSORLAYOUTNV */
|
||||
TENSORVIEWNV = 430, /* TENSORVIEWNV */
|
||||
SAMPLERCUBEARRAY = 431, /* SAMPLERCUBEARRAY */
|
||||
SAMPLERCUBEARRAYSHADOW = 432, /* SAMPLERCUBEARRAYSHADOW */
|
||||
ISAMPLERCUBEARRAY = 433, /* ISAMPLERCUBEARRAY */
|
||||
USAMPLERCUBEARRAY = 434, /* USAMPLERCUBEARRAY */
|
||||
SAMPLER1D = 435, /* SAMPLER1D */
|
||||
SAMPLER1DARRAY = 436, /* SAMPLER1DARRAY */
|
||||
SAMPLER1DARRAYSHADOW = 437, /* SAMPLER1DARRAYSHADOW */
|
||||
ISAMPLER1D = 438, /* ISAMPLER1D */
|
||||
SAMPLER1DSHADOW = 439, /* SAMPLER1DSHADOW */
|
||||
SAMPLER2DRECT = 440, /* SAMPLER2DRECT */
|
||||
SAMPLER2DRECTSHADOW = 441, /* SAMPLER2DRECTSHADOW */
|
||||
ISAMPLER2DRECT = 442, /* ISAMPLER2DRECT */
|
||||
USAMPLER2DRECT = 443, /* USAMPLER2DRECT */
|
||||
SAMPLERBUFFER = 444, /* SAMPLERBUFFER */
|
||||
ISAMPLERBUFFER = 445, /* ISAMPLERBUFFER */
|
||||
USAMPLERBUFFER = 446, /* USAMPLERBUFFER */
|
||||
SAMPLER2DMS = 447, /* SAMPLER2DMS */
|
||||
ISAMPLER2DMS = 448, /* ISAMPLER2DMS */
|
||||
USAMPLER2DMS = 449, /* USAMPLER2DMS */
|
||||
SAMPLER2DMSARRAY = 450, /* SAMPLER2DMSARRAY */
|
||||
ISAMPLER2DMSARRAY = 451, /* ISAMPLER2DMSARRAY */
|
||||
USAMPLER2DMSARRAY = 452, /* USAMPLER2DMSARRAY */
|
||||
SAMPLEREXTERNALOES = 453, /* SAMPLEREXTERNALOES */
|
||||
SAMPLEREXTERNAL2DY2YEXT = 454, /* SAMPLEREXTERNAL2DY2YEXT */
|
||||
ISAMPLER1DARRAY = 455, /* ISAMPLER1DARRAY */
|
||||
USAMPLER1D = 456, /* USAMPLER1D */
|
||||
USAMPLER1DARRAY = 457, /* USAMPLER1DARRAY */
|
||||
F16SAMPLER1D = 458, /* F16SAMPLER1D */
|
||||
F16SAMPLER2D = 459, /* F16SAMPLER2D */
|
||||
F16SAMPLER3D = 460, /* F16SAMPLER3D */
|
||||
F16SAMPLER2DRECT = 461, /* F16SAMPLER2DRECT */
|
||||
F16SAMPLERCUBE = 462, /* F16SAMPLERCUBE */
|
||||
F16SAMPLER1DARRAY = 463, /* F16SAMPLER1DARRAY */
|
||||
F16SAMPLER2DARRAY = 464, /* F16SAMPLER2DARRAY */
|
||||
F16SAMPLERCUBEARRAY = 465, /* F16SAMPLERCUBEARRAY */
|
||||
F16SAMPLERBUFFER = 466, /* F16SAMPLERBUFFER */
|
||||
F16SAMPLER2DMS = 467, /* F16SAMPLER2DMS */
|
||||
F16SAMPLER2DMSARRAY = 468, /* F16SAMPLER2DMSARRAY */
|
||||
F16SAMPLER1DSHADOW = 469, /* F16SAMPLER1DSHADOW */
|
||||
F16SAMPLER2DSHADOW = 470, /* F16SAMPLER2DSHADOW */
|
||||
F16SAMPLER1DARRAYSHADOW = 471, /* F16SAMPLER1DARRAYSHADOW */
|
||||
F16SAMPLER2DARRAYSHADOW = 472, /* F16SAMPLER2DARRAYSHADOW */
|
||||
F16SAMPLER2DRECTSHADOW = 473, /* F16SAMPLER2DRECTSHADOW */
|
||||
F16SAMPLERCUBESHADOW = 474, /* F16SAMPLERCUBESHADOW */
|
||||
F16SAMPLERCUBEARRAYSHADOW = 475, /* F16SAMPLERCUBEARRAYSHADOW */
|
||||
IMAGE1D = 476, /* IMAGE1D */
|
||||
IIMAGE1D = 477, /* IIMAGE1D */
|
||||
UIMAGE1D = 478, /* UIMAGE1D */
|
||||
IMAGE2D = 479, /* IMAGE2D */
|
||||
IIMAGE2D = 480, /* IIMAGE2D */
|
||||
UIMAGE2D = 481, /* UIMAGE2D */
|
||||
IMAGE3D = 482, /* IMAGE3D */
|
||||
IIMAGE3D = 483, /* IIMAGE3D */
|
||||
UIMAGE3D = 484, /* UIMAGE3D */
|
||||
IMAGE2DRECT = 485, /* IMAGE2DRECT */
|
||||
IIMAGE2DRECT = 486, /* IIMAGE2DRECT */
|
||||
UIMAGE2DRECT = 487, /* UIMAGE2DRECT */
|
||||
IMAGECUBE = 488, /* IMAGECUBE */
|
||||
IIMAGECUBE = 489, /* IIMAGECUBE */
|
||||
UIMAGECUBE = 490, /* UIMAGECUBE */
|
||||
IMAGEBUFFER = 491, /* IMAGEBUFFER */
|
||||
IIMAGEBUFFER = 492, /* IIMAGEBUFFER */
|
||||
UIMAGEBUFFER = 493, /* UIMAGEBUFFER */
|
||||
IMAGE1DARRAY = 494, /* IMAGE1DARRAY */
|
||||
IIMAGE1DARRAY = 495, /* IIMAGE1DARRAY */
|
||||
UIMAGE1DARRAY = 496, /* UIMAGE1DARRAY */
|
||||
IMAGE2DARRAY = 497, /* IMAGE2DARRAY */
|
||||
IIMAGE2DARRAY = 498, /* IIMAGE2DARRAY */
|
||||
UIMAGE2DARRAY = 499, /* UIMAGE2DARRAY */
|
||||
IMAGECUBEARRAY = 500, /* IMAGECUBEARRAY */
|
||||
IIMAGECUBEARRAY = 501, /* IIMAGECUBEARRAY */
|
||||
UIMAGECUBEARRAY = 502, /* UIMAGECUBEARRAY */
|
||||
IMAGE2DMS = 503, /* IMAGE2DMS */
|
||||
IIMAGE2DMS = 504, /* IIMAGE2DMS */
|
||||
UIMAGE2DMS = 505, /* UIMAGE2DMS */
|
||||
IMAGE2DMSARRAY = 506, /* IMAGE2DMSARRAY */
|
||||
IIMAGE2DMSARRAY = 507, /* IIMAGE2DMSARRAY */
|
||||
UIMAGE2DMSARRAY = 508, /* UIMAGE2DMSARRAY */
|
||||
F16IMAGE1D = 509, /* F16IMAGE1D */
|
||||
F16IMAGE2D = 510, /* F16IMAGE2D */
|
||||
F16IMAGE3D = 511, /* F16IMAGE3D */
|
||||
F16IMAGE2DRECT = 512, /* F16IMAGE2DRECT */
|
||||
F16IMAGECUBE = 513, /* F16IMAGECUBE */
|
||||
F16IMAGE1DARRAY = 514, /* F16IMAGE1DARRAY */
|
||||
F16IMAGE2DARRAY = 515, /* F16IMAGE2DARRAY */
|
||||
F16IMAGECUBEARRAY = 516, /* F16IMAGECUBEARRAY */
|
||||
F16IMAGEBUFFER = 517, /* F16IMAGEBUFFER */
|
||||
F16IMAGE2DMS = 518, /* F16IMAGE2DMS */
|
||||
F16IMAGE2DMSARRAY = 519, /* F16IMAGE2DMSARRAY */
|
||||
I64IMAGE1D = 520, /* I64IMAGE1D */
|
||||
U64IMAGE1D = 521, /* U64IMAGE1D */
|
||||
I64IMAGE2D = 522, /* I64IMAGE2D */
|
||||
U64IMAGE2D = 523, /* U64IMAGE2D */
|
||||
I64IMAGE3D = 524, /* I64IMAGE3D */
|
||||
U64IMAGE3D = 525, /* U64IMAGE3D */
|
||||
I64IMAGE2DRECT = 526, /* I64IMAGE2DRECT */
|
||||
U64IMAGE2DRECT = 527, /* U64IMAGE2DRECT */
|
||||
I64IMAGECUBE = 528, /* I64IMAGECUBE */
|
||||
U64IMAGECUBE = 529, /* U64IMAGECUBE */
|
||||
I64IMAGEBUFFER = 530, /* I64IMAGEBUFFER */
|
||||
U64IMAGEBUFFER = 531, /* U64IMAGEBUFFER */
|
||||
I64IMAGE1DARRAY = 532, /* I64IMAGE1DARRAY */
|
||||
U64IMAGE1DARRAY = 533, /* U64IMAGE1DARRAY */
|
||||
I64IMAGE2DARRAY = 534, /* I64IMAGE2DARRAY */
|
||||
U64IMAGE2DARRAY = 535, /* U64IMAGE2DARRAY */
|
||||
I64IMAGECUBEARRAY = 536, /* I64IMAGECUBEARRAY */
|
||||
U64IMAGECUBEARRAY = 537, /* U64IMAGECUBEARRAY */
|
||||
I64IMAGE2DMS = 538, /* I64IMAGE2DMS */
|
||||
U64IMAGE2DMS = 539, /* U64IMAGE2DMS */
|
||||
I64IMAGE2DMSARRAY = 540, /* I64IMAGE2DMSARRAY */
|
||||
U64IMAGE2DMSARRAY = 541, /* U64IMAGE2DMSARRAY */
|
||||
TEXTURECUBEARRAY = 542, /* TEXTURECUBEARRAY */
|
||||
ITEXTURECUBEARRAY = 543, /* ITEXTURECUBEARRAY */
|
||||
UTEXTURECUBEARRAY = 544, /* UTEXTURECUBEARRAY */
|
||||
TEXTURE1D = 545, /* TEXTURE1D */
|
||||
ITEXTURE1D = 546, /* ITEXTURE1D */
|
||||
UTEXTURE1D = 547, /* UTEXTURE1D */
|
||||
TEXTURE1DARRAY = 548, /* TEXTURE1DARRAY */
|
||||
ITEXTURE1DARRAY = 549, /* ITEXTURE1DARRAY */
|
||||
UTEXTURE1DARRAY = 550, /* UTEXTURE1DARRAY */
|
||||
TEXTURE2DRECT = 551, /* TEXTURE2DRECT */
|
||||
ITEXTURE2DRECT = 552, /* ITEXTURE2DRECT */
|
||||
UTEXTURE2DRECT = 553, /* UTEXTURE2DRECT */
|
||||
TEXTUREBUFFER = 554, /* TEXTUREBUFFER */
|
||||
ITEXTUREBUFFER = 555, /* ITEXTUREBUFFER */
|
||||
UTEXTUREBUFFER = 556, /* UTEXTUREBUFFER */
|
||||
TEXTURE2DMS = 557, /* TEXTURE2DMS */
|
||||
ITEXTURE2DMS = 558, /* ITEXTURE2DMS */
|
||||
UTEXTURE2DMS = 559, /* UTEXTURE2DMS */
|
||||
TEXTURE2DMSARRAY = 560, /* TEXTURE2DMSARRAY */
|
||||
ITEXTURE2DMSARRAY = 561, /* ITEXTURE2DMSARRAY */
|
||||
UTEXTURE2DMSARRAY = 562, /* UTEXTURE2DMSARRAY */
|
||||
F16TEXTURE1D = 563, /* F16TEXTURE1D */
|
||||
F16TEXTURE2D = 564, /* F16TEXTURE2D */
|
||||
F16TEXTURE3D = 565, /* F16TEXTURE3D */
|
||||
F16TEXTURE2DRECT = 566, /* F16TEXTURE2DRECT */
|
||||
F16TEXTURECUBE = 567, /* F16TEXTURECUBE */
|
||||
F16TEXTURE1DARRAY = 568, /* F16TEXTURE1DARRAY */
|
||||
F16TEXTURE2DARRAY = 569, /* F16TEXTURE2DARRAY */
|
||||
F16TEXTURECUBEARRAY = 570, /* F16TEXTURECUBEARRAY */
|
||||
F16TEXTUREBUFFER = 571, /* F16TEXTUREBUFFER */
|
||||
F16TEXTURE2DMS = 572, /* F16TEXTURE2DMS */
|
||||
F16TEXTURE2DMSARRAY = 573, /* F16TEXTURE2DMSARRAY */
|
||||
SUBPASSINPUT = 574, /* SUBPASSINPUT */
|
||||
SUBPASSINPUTMS = 575, /* SUBPASSINPUTMS */
|
||||
ISUBPASSINPUT = 576, /* ISUBPASSINPUT */
|
||||
ISUBPASSINPUTMS = 577, /* ISUBPASSINPUTMS */
|
||||
USUBPASSINPUT = 578, /* USUBPASSINPUT */
|
||||
USUBPASSINPUTMS = 579, /* USUBPASSINPUTMS */
|
||||
F16SUBPASSINPUT = 580, /* F16SUBPASSINPUT */
|
||||
F16SUBPASSINPUTMS = 581, /* F16SUBPASSINPUTMS */
|
||||
SPIRV_INSTRUCTION = 582, /* SPIRV_INSTRUCTION */
|
||||
SPIRV_EXECUTION_MODE = 583, /* SPIRV_EXECUTION_MODE */
|
||||
SPIRV_EXECUTION_MODE_ID = 584, /* SPIRV_EXECUTION_MODE_ID */
|
||||
SPIRV_DECORATE = 585, /* SPIRV_DECORATE */
|
||||
SPIRV_DECORATE_ID = 586, /* SPIRV_DECORATE_ID */
|
||||
SPIRV_DECORATE_STRING = 587, /* SPIRV_DECORATE_STRING */
|
||||
SPIRV_TYPE = 588, /* SPIRV_TYPE */
|
||||
SPIRV_STORAGE_CLASS = 589, /* SPIRV_STORAGE_CLASS */
|
||||
SPIRV_BY_REFERENCE = 590, /* SPIRV_BY_REFERENCE */
|
||||
SPIRV_LITERAL = 591, /* SPIRV_LITERAL */
|
||||
ATTACHMENTEXT = 592, /* ATTACHMENTEXT */
|
||||
IATTACHMENTEXT = 593, /* IATTACHMENTEXT */
|
||||
UATTACHMENTEXT = 594, /* UATTACHMENTEXT */
|
||||
LEFT_OP = 595, /* LEFT_OP */
|
||||
RIGHT_OP = 596, /* RIGHT_OP */
|
||||
INC_OP = 597, /* INC_OP */
|
||||
DEC_OP = 598, /* DEC_OP */
|
||||
LE_OP = 599, /* LE_OP */
|
||||
GE_OP = 600, /* GE_OP */
|
||||
EQ_OP = 601, /* EQ_OP */
|
||||
NE_OP = 602, /* NE_OP */
|
||||
AND_OP = 603, /* AND_OP */
|
||||
OR_OP = 604, /* OR_OP */
|
||||
XOR_OP = 605, /* XOR_OP */
|
||||
MUL_ASSIGN = 606, /* MUL_ASSIGN */
|
||||
DIV_ASSIGN = 607, /* DIV_ASSIGN */
|
||||
ADD_ASSIGN = 608, /* ADD_ASSIGN */
|
||||
MOD_ASSIGN = 609, /* MOD_ASSIGN */
|
||||
LEFT_ASSIGN = 610, /* LEFT_ASSIGN */
|
||||
RIGHT_ASSIGN = 611, /* RIGHT_ASSIGN */
|
||||
AND_ASSIGN = 612, /* AND_ASSIGN */
|
||||
XOR_ASSIGN = 613, /* XOR_ASSIGN */
|
||||
OR_ASSIGN = 614, /* OR_ASSIGN */
|
||||
SUB_ASSIGN = 615, /* SUB_ASSIGN */
|
||||
STRING_LITERAL = 616, /* STRING_LITERAL */
|
||||
LEFT_PAREN = 617, /* LEFT_PAREN */
|
||||
RIGHT_PAREN = 618, /* RIGHT_PAREN */
|
||||
LEFT_BRACKET = 619, /* LEFT_BRACKET */
|
||||
RIGHT_BRACKET = 620, /* RIGHT_BRACKET */
|
||||
LEFT_BRACE = 621, /* LEFT_BRACE */
|
||||
RIGHT_BRACE = 622, /* RIGHT_BRACE */
|
||||
DOT = 623, /* DOT */
|
||||
COMMA = 624, /* COMMA */
|
||||
COLON = 625, /* COLON */
|
||||
EQUAL = 626, /* EQUAL */
|
||||
SEMICOLON = 627, /* SEMICOLON */
|
||||
BANG = 628, /* BANG */
|
||||
DASH = 629, /* DASH */
|
||||
TILDE = 630, /* TILDE */
|
||||
PLUS = 631, /* PLUS */
|
||||
STAR = 632, /* STAR */
|
||||
SLASH = 633, /* SLASH */
|
||||
PERCENT = 634, /* PERCENT */
|
||||
LEFT_ANGLE = 635, /* LEFT_ANGLE */
|
||||
RIGHT_ANGLE = 636, /* RIGHT_ANGLE */
|
||||
VERTICAL_BAR = 637, /* VERTICAL_BAR */
|
||||
CARET = 638, /* CARET */
|
||||
AMPERSAND = 639, /* AMPERSAND */
|
||||
QUESTION = 640, /* QUESTION */
|
||||
INVARIANT = 641, /* INVARIANT */
|
||||
HIGH_PRECISION = 642, /* HIGH_PRECISION */
|
||||
MEDIUM_PRECISION = 643, /* MEDIUM_PRECISION */
|
||||
LOW_PRECISION = 644, /* LOW_PRECISION */
|
||||
PRECISION = 645, /* PRECISION */
|
||||
PACKED = 646, /* PACKED */
|
||||
RESOURCE = 647, /* RESOURCE */
|
||||
SUPERP = 648, /* SUPERP */
|
||||
FLOATCONSTANT = 649, /* FLOATCONSTANT */
|
||||
INTCONSTANT = 650, /* INTCONSTANT */
|
||||
UINTCONSTANT = 651, /* UINTCONSTANT */
|
||||
BOOLCONSTANT = 652, /* BOOLCONSTANT */
|
||||
IDENTIFIER = 653, /* IDENTIFIER */
|
||||
TYPE_NAME = 654, /* TYPE_NAME */
|
||||
CENTROID = 655, /* CENTROID */
|
||||
IN = 656, /* IN */
|
||||
OUT = 657, /* OUT */
|
||||
INOUT = 658, /* INOUT */
|
||||
STRUCT = 659, /* STRUCT */
|
||||
VOID = 660, /* VOID */
|
||||
WHILE = 661, /* WHILE */
|
||||
BREAK = 662, /* BREAK */
|
||||
CONTINUE = 663, /* CONTINUE */
|
||||
DO = 664, /* DO */
|
||||
ELSE = 665, /* ELSE */
|
||||
FOR = 666, /* FOR */
|
||||
IF = 667, /* IF */
|
||||
DISCARD = 668, /* DISCARD */
|
||||
RETURN = 669, /* RETURN */
|
||||
SWITCH = 670, /* SWITCH */
|
||||
CASE = 671, /* CASE */
|
||||
DEFAULT = 672, /* DEFAULT */
|
||||
TERMINATE_INVOCATION = 673, /* TERMINATE_INVOCATION */
|
||||
TERMINATE_RAY = 674, /* TERMINATE_RAY */
|
||||
IGNORE_INTERSECTION = 675, /* IGNORE_INTERSECTION */
|
||||
UNIFORM = 676, /* UNIFORM */
|
||||
SHARED = 677, /* SHARED */
|
||||
BUFFER = 678, /* BUFFER */
|
||||
TILEIMAGEEXT = 679, /* TILEIMAGEEXT */
|
||||
FLAT = 680, /* FLAT */
|
||||
SMOOTH = 681, /* SMOOTH */
|
||||
LAYOUT = 682, /* LAYOUT */
|
||||
DOUBLECONSTANT = 683, /* DOUBLECONSTANT */
|
||||
INT16CONSTANT = 684, /* INT16CONSTANT */
|
||||
UINT16CONSTANT = 685, /* UINT16CONSTANT */
|
||||
FLOAT16CONSTANT = 686, /* FLOAT16CONSTANT */
|
||||
INT32CONSTANT = 687, /* INT32CONSTANT */
|
||||
UINT32CONSTANT = 688, /* UINT32CONSTANT */
|
||||
INT64CONSTANT = 689, /* INT64CONSTANT */
|
||||
UINT64CONSTANT = 690, /* UINT64CONSTANT */
|
||||
SUBROUTINE = 691, /* SUBROUTINE */
|
||||
DEMOTE = 692, /* DEMOTE */
|
||||
FUNCTION = 693, /* FUNCTION */
|
||||
PAYLOADNV = 694, /* PAYLOADNV */
|
||||
PAYLOADINNV = 695, /* PAYLOADINNV */
|
||||
HITATTRNV = 696, /* HITATTRNV */
|
||||
CALLDATANV = 697, /* CALLDATANV */
|
||||
CALLDATAINNV = 698, /* CALLDATAINNV */
|
||||
PAYLOADEXT = 699, /* PAYLOADEXT */
|
||||
PAYLOADINEXT = 700, /* PAYLOADINEXT */
|
||||
HITATTREXT = 701, /* HITATTREXT */
|
||||
CALLDATAEXT = 702, /* CALLDATAEXT */
|
||||
CALLDATAINEXT = 703, /* CALLDATAINEXT */
|
||||
PATCH = 704, /* PATCH */
|
||||
SAMPLE = 705, /* SAMPLE */
|
||||
NONUNIFORM = 706, /* NONUNIFORM */
|
||||
COHERENT = 707, /* COHERENT */
|
||||
VOLATILE = 708, /* VOLATILE */
|
||||
RESTRICT = 709, /* RESTRICT */
|
||||
READONLY = 710, /* READONLY */
|
||||
WRITEONLY = 711, /* WRITEONLY */
|
||||
NONTEMPORAL = 712, /* NONTEMPORAL */
|
||||
DEVICECOHERENT = 713, /* DEVICECOHERENT */
|
||||
QUEUEFAMILYCOHERENT = 714, /* QUEUEFAMILYCOHERENT */
|
||||
WORKGROUPCOHERENT = 715, /* WORKGROUPCOHERENT */
|
||||
SUBGROUPCOHERENT = 716, /* SUBGROUPCOHERENT */
|
||||
NONPRIVATE = 717, /* NONPRIVATE */
|
||||
SHADERCALLCOHERENT = 718, /* SHADERCALLCOHERENT */
|
||||
NOPERSPECTIVE = 719, /* NOPERSPECTIVE */
|
||||
EXPLICITINTERPAMD = 720, /* EXPLICITINTERPAMD */
|
||||
PERVERTEXEXT = 721, /* PERVERTEXEXT */
|
||||
PERVERTEXNV = 722, /* PERVERTEXNV */
|
||||
PERPRIMITIVENV = 723, /* PERPRIMITIVENV */
|
||||
PERVIEWNV = 724, /* PERVIEWNV */
|
||||
PERTASKNV = 725, /* PERTASKNV */
|
||||
PERPRIMITIVEEXT = 726, /* PERPRIMITIVEEXT */
|
||||
TASKPAYLOADWORKGROUPEXT = 727, /* TASKPAYLOADWORKGROUPEXT */
|
||||
PRECISE = 728 /* PRECISE */
|
||||
FLOATE5M2_T = 318, /* FLOATE5M2_T */
|
||||
FLOATE4M3_T = 319, /* FLOATE4M3_T */
|
||||
BFLOAT16_T = 320, /* BFLOAT16_T */
|
||||
FLOAT16_T = 321, /* FLOAT16_T */
|
||||
FLOAT32_T = 322, /* FLOAT32_T */
|
||||
DOUBLE = 323, /* DOUBLE */
|
||||
FLOAT64_T = 324, /* FLOAT64_T */
|
||||
INT64_T = 325, /* INT64_T */
|
||||
UINT64_T = 326, /* UINT64_T */
|
||||
INT32_T = 327, /* INT32_T */
|
||||
UINT32_T = 328, /* UINT32_T */
|
||||
INT16_T = 329, /* INT16_T */
|
||||
UINT16_T = 330, /* UINT16_T */
|
||||
INT8_T = 331, /* INT8_T */
|
||||
UINT8_T = 332, /* UINT8_T */
|
||||
I64VEC2 = 333, /* I64VEC2 */
|
||||
I64VEC3 = 334, /* I64VEC3 */
|
||||
I64VEC4 = 335, /* I64VEC4 */
|
||||
U64VEC2 = 336, /* U64VEC2 */
|
||||
U64VEC3 = 337, /* U64VEC3 */
|
||||
U64VEC4 = 338, /* U64VEC4 */
|
||||
I32VEC2 = 339, /* I32VEC2 */
|
||||
I32VEC3 = 340, /* I32VEC3 */
|
||||
I32VEC4 = 341, /* I32VEC4 */
|
||||
U32VEC2 = 342, /* U32VEC2 */
|
||||
U32VEC3 = 343, /* U32VEC3 */
|
||||
U32VEC4 = 344, /* U32VEC4 */
|
||||
I16VEC2 = 345, /* I16VEC2 */
|
||||
I16VEC3 = 346, /* I16VEC3 */
|
||||
I16VEC4 = 347, /* I16VEC4 */
|
||||
U16VEC2 = 348, /* U16VEC2 */
|
||||
U16VEC3 = 349, /* U16VEC3 */
|
||||
U16VEC4 = 350, /* U16VEC4 */
|
||||
I8VEC2 = 351, /* I8VEC2 */
|
||||
I8VEC3 = 352, /* I8VEC3 */
|
||||
I8VEC4 = 353, /* I8VEC4 */
|
||||
U8VEC2 = 354, /* U8VEC2 */
|
||||
U8VEC3 = 355, /* U8VEC3 */
|
||||
U8VEC4 = 356, /* U8VEC4 */
|
||||
DVEC2 = 357, /* DVEC2 */
|
||||
DVEC3 = 358, /* DVEC3 */
|
||||
DVEC4 = 359, /* DVEC4 */
|
||||
DMAT2 = 360, /* DMAT2 */
|
||||
DMAT3 = 361, /* DMAT3 */
|
||||
DMAT4 = 362, /* DMAT4 */
|
||||
BF16VEC2 = 363, /* BF16VEC2 */
|
||||
BF16VEC3 = 364, /* BF16VEC3 */
|
||||
BF16VEC4 = 365, /* BF16VEC4 */
|
||||
FE5M2VEC2 = 366, /* FE5M2VEC2 */
|
||||
FE5M2VEC3 = 367, /* FE5M2VEC3 */
|
||||
FE5M2VEC4 = 368, /* FE5M2VEC4 */
|
||||
FE4M3VEC2 = 369, /* FE4M3VEC2 */
|
||||
FE4M3VEC3 = 370, /* FE4M3VEC3 */
|
||||
FE4M3VEC4 = 371, /* FE4M3VEC4 */
|
||||
F16VEC2 = 372, /* F16VEC2 */
|
||||
F16VEC3 = 373, /* F16VEC3 */
|
||||
F16VEC4 = 374, /* F16VEC4 */
|
||||
F16MAT2 = 375, /* F16MAT2 */
|
||||
F16MAT3 = 376, /* F16MAT3 */
|
||||
F16MAT4 = 377, /* F16MAT4 */
|
||||
F32VEC2 = 378, /* F32VEC2 */
|
||||
F32VEC3 = 379, /* F32VEC3 */
|
||||
F32VEC4 = 380, /* F32VEC4 */
|
||||
F32MAT2 = 381, /* F32MAT2 */
|
||||
F32MAT3 = 382, /* F32MAT3 */
|
||||
F32MAT4 = 383, /* F32MAT4 */
|
||||
F64VEC2 = 384, /* F64VEC2 */
|
||||
F64VEC3 = 385, /* F64VEC3 */
|
||||
F64VEC4 = 386, /* F64VEC4 */
|
||||
F64MAT2 = 387, /* F64MAT2 */
|
||||
F64MAT3 = 388, /* F64MAT3 */
|
||||
F64MAT4 = 389, /* F64MAT4 */
|
||||
DMAT2X2 = 390, /* DMAT2X2 */
|
||||
DMAT2X3 = 391, /* DMAT2X3 */
|
||||
DMAT2X4 = 392, /* DMAT2X4 */
|
||||
DMAT3X2 = 393, /* DMAT3X2 */
|
||||
DMAT3X3 = 394, /* DMAT3X3 */
|
||||
DMAT3X4 = 395, /* DMAT3X4 */
|
||||
DMAT4X2 = 396, /* DMAT4X2 */
|
||||
DMAT4X3 = 397, /* DMAT4X3 */
|
||||
DMAT4X4 = 398, /* DMAT4X4 */
|
||||
F16MAT2X2 = 399, /* F16MAT2X2 */
|
||||
F16MAT2X3 = 400, /* F16MAT2X3 */
|
||||
F16MAT2X4 = 401, /* F16MAT2X4 */
|
||||
F16MAT3X2 = 402, /* F16MAT3X2 */
|
||||
F16MAT3X3 = 403, /* F16MAT3X3 */
|
||||
F16MAT3X4 = 404, /* F16MAT3X4 */
|
||||
F16MAT4X2 = 405, /* F16MAT4X2 */
|
||||
F16MAT4X3 = 406, /* F16MAT4X3 */
|
||||
F16MAT4X4 = 407, /* F16MAT4X4 */
|
||||
F32MAT2X2 = 408, /* F32MAT2X2 */
|
||||
F32MAT2X3 = 409, /* F32MAT2X3 */
|
||||
F32MAT2X4 = 410, /* F32MAT2X4 */
|
||||
F32MAT3X2 = 411, /* F32MAT3X2 */
|
||||
F32MAT3X3 = 412, /* F32MAT3X3 */
|
||||
F32MAT3X4 = 413, /* F32MAT3X4 */
|
||||
F32MAT4X2 = 414, /* F32MAT4X2 */
|
||||
F32MAT4X3 = 415, /* F32MAT4X3 */
|
||||
F32MAT4X4 = 416, /* F32MAT4X4 */
|
||||
F64MAT2X2 = 417, /* F64MAT2X2 */
|
||||
F64MAT2X3 = 418, /* F64MAT2X3 */
|
||||
F64MAT2X4 = 419, /* F64MAT2X4 */
|
||||
F64MAT3X2 = 420, /* F64MAT3X2 */
|
||||
F64MAT3X3 = 421, /* F64MAT3X3 */
|
||||
F64MAT3X4 = 422, /* F64MAT3X4 */
|
||||
F64MAT4X2 = 423, /* F64MAT4X2 */
|
||||
F64MAT4X3 = 424, /* F64MAT4X3 */
|
||||
F64MAT4X4 = 425, /* F64MAT4X4 */
|
||||
ATOMIC_UINT = 426, /* ATOMIC_UINT */
|
||||
ACCSTRUCTNV = 427, /* ACCSTRUCTNV */
|
||||
ACCSTRUCTEXT = 428, /* ACCSTRUCTEXT */
|
||||
RAYQUERYEXT = 429, /* RAYQUERYEXT */
|
||||
FCOOPMATNV = 430, /* FCOOPMATNV */
|
||||
ICOOPMATNV = 431, /* ICOOPMATNV */
|
||||
UCOOPMATNV = 432, /* UCOOPMATNV */
|
||||
COOPMAT = 433, /* COOPMAT */
|
||||
COOPVECNV = 434, /* COOPVECNV */
|
||||
HITOBJECTNV = 435, /* HITOBJECTNV */
|
||||
HITOBJECTATTRNV = 436, /* HITOBJECTATTRNV */
|
||||
TENSORLAYOUTNV = 437, /* TENSORLAYOUTNV */
|
||||
TENSORVIEWNV = 438, /* TENSORVIEWNV */
|
||||
TENSORARM = 439, /* TENSORARM */
|
||||
SAMPLERCUBEARRAY = 440, /* SAMPLERCUBEARRAY */
|
||||
SAMPLERCUBEARRAYSHADOW = 441, /* SAMPLERCUBEARRAYSHADOW */
|
||||
ISAMPLERCUBEARRAY = 442, /* ISAMPLERCUBEARRAY */
|
||||
USAMPLERCUBEARRAY = 443, /* USAMPLERCUBEARRAY */
|
||||
SAMPLER1D = 444, /* SAMPLER1D */
|
||||
SAMPLER1DARRAY = 445, /* SAMPLER1DARRAY */
|
||||
SAMPLER1DARRAYSHADOW = 446, /* SAMPLER1DARRAYSHADOW */
|
||||
ISAMPLER1D = 447, /* ISAMPLER1D */
|
||||
SAMPLER1DSHADOW = 448, /* SAMPLER1DSHADOW */
|
||||
SAMPLER2DRECT = 449, /* SAMPLER2DRECT */
|
||||
SAMPLER2DRECTSHADOW = 450, /* SAMPLER2DRECTSHADOW */
|
||||
ISAMPLER2DRECT = 451, /* ISAMPLER2DRECT */
|
||||
USAMPLER2DRECT = 452, /* USAMPLER2DRECT */
|
||||
SAMPLERBUFFER = 453, /* SAMPLERBUFFER */
|
||||
ISAMPLERBUFFER = 454, /* ISAMPLERBUFFER */
|
||||
USAMPLERBUFFER = 455, /* USAMPLERBUFFER */
|
||||
SAMPLER2DMS = 456, /* SAMPLER2DMS */
|
||||
ISAMPLER2DMS = 457, /* ISAMPLER2DMS */
|
||||
USAMPLER2DMS = 458, /* USAMPLER2DMS */
|
||||
SAMPLER2DMSARRAY = 459, /* SAMPLER2DMSARRAY */
|
||||
ISAMPLER2DMSARRAY = 460, /* ISAMPLER2DMSARRAY */
|
||||
USAMPLER2DMSARRAY = 461, /* USAMPLER2DMSARRAY */
|
||||
SAMPLEREXTERNALOES = 462, /* SAMPLEREXTERNALOES */
|
||||
SAMPLEREXTERNAL2DY2YEXT = 463, /* SAMPLEREXTERNAL2DY2YEXT */
|
||||
ISAMPLER1DARRAY = 464, /* ISAMPLER1DARRAY */
|
||||
USAMPLER1D = 465, /* USAMPLER1D */
|
||||
USAMPLER1DARRAY = 466, /* USAMPLER1DARRAY */
|
||||
F16SAMPLER1D = 467, /* F16SAMPLER1D */
|
||||
F16SAMPLER2D = 468, /* F16SAMPLER2D */
|
||||
F16SAMPLER3D = 469, /* F16SAMPLER3D */
|
||||
F16SAMPLER2DRECT = 470, /* F16SAMPLER2DRECT */
|
||||
F16SAMPLERCUBE = 471, /* F16SAMPLERCUBE */
|
||||
F16SAMPLER1DARRAY = 472, /* F16SAMPLER1DARRAY */
|
||||
F16SAMPLER2DARRAY = 473, /* F16SAMPLER2DARRAY */
|
||||
F16SAMPLERCUBEARRAY = 474, /* F16SAMPLERCUBEARRAY */
|
||||
F16SAMPLERBUFFER = 475, /* F16SAMPLERBUFFER */
|
||||
F16SAMPLER2DMS = 476, /* F16SAMPLER2DMS */
|
||||
F16SAMPLER2DMSARRAY = 477, /* F16SAMPLER2DMSARRAY */
|
||||
F16SAMPLER1DSHADOW = 478, /* F16SAMPLER1DSHADOW */
|
||||
F16SAMPLER2DSHADOW = 479, /* F16SAMPLER2DSHADOW */
|
||||
F16SAMPLER1DARRAYSHADOW = 480, /* F16SAMPLER1DARRAYSHADOW */
|
||||
F16SAMPLER2DARRAYSHADOW = 481, /* F16SAMPLER2DARRAYSHADOW */
|
||||
F16SAMPLER2DRECTSHADOW = 482, /* F16SAMPLER2DRECTSHADOW */
|
||||
F16SAMPLERCUBESHADOW = 483, /* F16SAMPLERCUBESHADOW */
|
||||
F16SAMPLERCUBEARRAYSHADOW = 484, /* F16SAMPLERCUBEARRAYSHADOW */
|
||||
IMAGE1D = 485, /* IMAGE1D */
|
||||
IIMAGE1D = 486, /* IIMAGE1D */
|
||||
UIMAGE1D = 487, /* UIMAGE1D */
|
||||
IMAGE2D = 488, /* IMAGE2D */
|
||||
IIMAGE2D = 489, /* IIMAGE2D */
|
||||
UIMAGE2D = 490, /* UIMAGE2D */
|
||||
IMAGE3D = 491, /* IMAGE3D */
|
||||
IIMAGE3D = 492, /* IIMAGE3D */
|
||||
UIMAGE3D = 493, /* UIMAGE3D */
|
||||
IMAGE2DRECT = 494, /* IMAGE2DRECT */
|
||||
IIMAGE2DRECT = 495, /* IIMAGE2DRECT */
|
||||
UIMAGE2DRECT = 496, /* UIMAGE2DRECT */
|
||||
IMAGECUBE = 497, /* IMAGECUBE */
|
||||
IIMAGECUBE = 498, /* IIMAGECUBE */
|
||||
UIMAGECUBE = 499, /* UIMAGECUBE */
|
||||
IMAGEBUFFER = 500, /* IMAGEBUFFER */
|
||||
IIMAGEBUFFER = 501, /* IIMAGEBUFFER */
|
||||
UIMAGEBUFFER = 502, /* UIMAGEBUFFER */
|
||||
IMAGE1DARRAY = 503, /* IMAGE1DARRAY */
|
||||
IIMAGE1DARRAY = 504, /* IIMAGE1DARRAY */
|
||||
UIMAGE1DARRAY = 505, /* UIMAGE1DARRAY */
|
||||
IMAGE2DARRAY = 506, /* IMAGE2DARRAY */
|
||||
IIMAGE2DARRAY = 507, /* IIMAGE2DARRAY */
|
||||
UIMAGE2DARRAY = 508, /* UIMAGE2DARRAY */
|
||||
IMAGECUBEARRAY = 509, /* IMAGECUBEARRAY */
|
||||
IIMAGECUBEARRAY = 510, /* IIMAGECUBEARRAY */
|
||||
UIMAGECUBEARRAY = 511, /* UIMAGECUBEARRAY */
|
||||
IMAGE2DMS = 512, /* IMAGE2DMS */
|
||||
IIMAGE2DMS = 513, /* IIMAGE2DMS */
|
||||
UIMAGE2DMS = 514, /* UIMAGE2DMS */
|
||||
IMAGE2DMSARRAY = 515, /* IMAGE2DMSARRAY */
|
||||
IIMAGE2DMSARRAY = 516, /* IIMAGE2DMSARRAY */
|
||||
UIMAGE2DMSARRAY = 517, /* UIMAGE2DMSARRAY */
|
||||
F16IMAGE1D = 518, /* F16IMAGE1D */
|
||||
F16IMAGE2D = 519, /* F16IMAGE2D */
|
||||
F16IMAGE3D = 520, /* F16IMAGE3D */
|
||||
F16IMAGE2DRECT = 521, /* F16IMAGE2DRECT */
|
||||
F16IMAGECUBE = 522, /* F16IMAGECUBE */
|
||||
F16IMAGE1DARRAY = 523, /* F16IMAGE1DARRAY */
|
||||
F16IMAGE2DARRAY = 524, /* F16IMAGE2DARRAY */
|
||||
F16IMAGECUBEARRAY = 525, /* F16IMAGECUBEARRAY */
|
||||
F16IMAGEBUFFER = 526, /* F16IMAGEBUFFER */
|
||||
F16IMAGE2DMS = 527, /* F16IMAGE2DMS */
|
||||
F16IMAGE2DMSARRAY = 528, /* F16IMAGE2DMSARRAY */
|
||||
I64IMAGE1D = 529, /* I64IMAGE1D */
|
||||
U64IMAGE1D = 530, /* U64IMAGE1D */
|
||||
I64IMAGE2D = 531, /* I64IMAGE2D */
|
||||
U64IMAGE2D = 532, /* U64IMAGE2D */
|
||||
I64IMAGE3D = 533, /* I64IMAGE3D */
|
||||
U64IMAGE3D = 534, /* U64IMAGE3D */
|
||||
I64IMAGE2DRECT = 535, /* I64IMAGE2DRECT */
|
||||
U64IMAGE2DRECT = 536, /* U64IMAGE2DRECT */
|
||||
I64IMAGECUBE = 537, /* I64IMAGECUBE */
|
||||
U64IMAGECUBE = 538, /* U64IMAGECUBE */
|
||||
I64IMAGEBUFFER = 539, /* I64IMAGEBUFFER */
|
||||
U64IMAGEBUFFER = 540, /* U64IMAGEBUFFER */
|
||||
I64IMAGE1DARRAY = 541, /* I64IMAGE1DARRAY */
|
||||
U64IMAGE1DARRAY = 542, /* U64IMAGE1DARRAY */
|
||||
I64IMAGE2DARRAY = 543, /* I64IMAGE2DARRAY */
|
||||
U64IMAGE2DARRAY = 544, /* U64IMAGE2DARRAY */
|
||||
I64IMAGECUBEARRAY = 545, /* I64IMAGECUBEARRAY */
|
||||
U64IMAGECUBEARRAY = 546, /* U64IMAGECUBEARRAY */
|
||||
I64IMAGE2DMS = 547, /* I64IMAGE2DMS */
|
||||
U64IMAGE2DMS = 548, /* U64IMAGE2DMS */
|
||||
I64IMAGE2DMSARRAY = 549, /* I64IMAGE2DMSARRAY */
|
||||
U64IMAGE2DMSARRAY = 550, /* U64IMAGE2DMSARRAY */
|
||||
TEXTURECUBEARRAY = 551, /* TEXTURECUBEARRAY */
|
||||
ITEXTURECUBEARRAY = 552, /* ITEXTURECUBEARRAY */
|
||||
UTEXTURECUBEARRAY = 553, /* UTEXTURECUBEARRAY */
|
||||
TEXTURE1D = 554, /* TEXTURE1D */
|
||||
ITEXTURE1D = 555, /* ITEXTURE1D */
|
||||
UTEXTURE1D = 556, /* UTEXTURE1D */
|
||||
TEXTURE1DARRAY = 557, /* TEXTURE1DARRAY */
|
||||
ITEXTURE1DARRAY = 558, /* ITEXTURE1DARRAY */
|
||||
UTEXTURE1DARRAY = 559, /* UTEXTURE1DARRAY */
|
||||
TEXTURE2DRECT = 560, /* TEXTURE2DRECT */
|
||||
ITEXTURE2DRECT = 561, /* ITEXTURE2DRECT */
|
||||
UTEXTURE2DRECT = 562, /* UTEXTURE2DRECT */
|
||||
TEXTUREBUFFER = 563, /* TEXTUREBUFFER */
|
||||
ITEXTUREBUFFER = 564, /* ITEXTUREBUFFER */
|
||||
UTEXTUREBUFFER = 565, /* UTEXTUREBUFFER */
|
||||
TEXTURE2DMS = 566, /* TEXTURE2DMS */
|
||||
ITEXTURE2DMS = 567, /* ITEXTURE2DMS */
|
||||
UTEXTURE2DMS = 568, /* UTEXTURE2DMS */
|
||||
TEXTURE2DMSARRAY = 569, /* TEXTURE2DMSARRAY */
|
||||
ITEXTURE2DMSARRAY = 570, /* ITEXTURE2DMSARRAY */
|
||||
UTEXTURE2DMSARRAY = 571, /* UTEXTURE2DMSARRAY */
|
||||
F16TEXTURE1D = 572, /* F16TEXTURE1D */
|
||||
F16TEXTURE2D = 573, /* F16TEXTURE2D */
|
||||
F16TEXTURE3D = 574, /* F16TEXTURE3D */
|
||||
F16TEXTURE2DRECT = 575, /* F16TEXTURE2DRECT */
|
||||
F16TEXTURECUBE = 576, /* F16TEXTURECUBE */
|
||||
F16TEXTURE1DARRAY = 577, /* F16TEXTURE1DARRAY */
|
||||
F16TEXTURE2DARRAY = 578, /* F16TEXTURE2DARRAY */
|
||||
F16TEXTURECUBEARRAY = 579, /* F16TEXTURECUBEARRAY */
|
||||
F16TEXTUREBUFFER = 580, /* F16TEXTUREBUFFER */
|
||||
F16TEXTURE2DMS = 581, /* F16TEXTURE2DMS */
|
||||
F16TEXTURE2DMSARRAY = 582, /* F16TEXTURE2DMSARRAY */
|
||||
SUBPASSINPUT = 583, /* SUBPASSINPUT */
|
||||
SUBPASSINPUTMS = 584, /* SUBPASSINPUTMS */
|
||||
ISUBPASSINPUT = 585, /* ISUBPASSINPUT */
|
||||
ISUBPASSINPUTMS = 586, /* ISUBPASSINPUTMS */
|
||||
USUBPASSINPUT = 587, /* USUBPASSINPUT */
|
||||
USUBPASSINPUTMS = 588, /* USUBPASSINPUTMS */
|
||||
F16SUBPASSINPUT = 589, /* F16SUBPASSINPUT */
|
||||
F16SUBPASSINPUTMS = 590, /* F16SUBPASSINPUTMS */
|
||||
SPIRV_INSTRUCTION = 591, /* SPIRV_INSTRUCTION */
|
||||
SPIRV_EXECUTION_MODE = 592, /* SPIRV_EXECUTION_MODE */
|
||||
SPIRV_EXECUTION_MODE_ID = 593, /* SPIRV_EXECUTION_MODE_ID */
|
||||
SPIRV_DECORATE = 594, /* SPIRV_DECORATE */
|
||||
SPIRV_DECORATE_ID = 595, /* SPIRV_DECORATE_ID */
|
||||
SPIRV_DECORATE_STRING = 596, /* SPIRV_DECORATE_STRING */
|
||||
SPIRV_TYPE = 597, /* SPIRV_TYPE */
|
||||
SPIRV_STORAGE_CLASS = 598, /* SPIRV_STORAGE_CLASS */
|
||||
SPIRV_BY_REFERENCE = 599, /* SPIRV_BY_REFERENCE */
|
||||
SPIRV_LITERAL = 600, /* SPIRV_LITERAL */
|
||||
ATTACHMENTEXT = 601, /* ATTACHMENTEXT */
|
||||
IATTACHMENTEXT = 602, /* IATTACHMENTEXT */
|
||||
UATTACHMENTEXT = 603, /* UATTACHMENTEXT */
|
||||
LEFT_OP = 604, /* LEFT_OP */
|
||||
RIGHT_OP = 605, /* RIGHT_OP */
|
||||
INC_OP = 606, /* INC_OP */
|
||||
DEC_OP = 607, /* DEC_OP */
|
||||
LE_OP = 608, /* LE_OP */
|
||||
GE_OP = 609, /* GE_OP */
|
||||
EQ_OP = 610, /* EQ_OP */
|
||||
NE_OP = 611, /* NE_OP */
|
||||
AND_OP = 612, /* AND_OP */
|
||||
OR_OP = 613, /* OR_OP */
|
||||
XOR_OP = 614, /* XOR_OP */
|
||||
MUL_ASSIGN = 615, /* MUL_ASSIGN */
|
||||
DIV_ASSIGN = 616, /* DIV_ASSIGN */
|
||||
ADD_ASSIGN = 617, /* ADD_ASSIGN */
|
||||
MOD_ASSIGN = 618, /* MOD_ASSIGN */
|
||||
LEFT_ASSIGN = 619, /* LEFT_ASSIGN */
|
||||
RIGHT_ASSIGN = 620, /* RIGHT_ASSIGN */
|
||||
AND_ASSIGN = 621, /* AND_ASSIGN */
|
||||
XOR_ASSIGN = 622, /* XOR_ASSIGN */
|
||||
OR_ASSIGN = 623, /* OR_ASSIGN */
|
||||
SUB_ASSIGN = 624, /* SUB_ASSIGN */
|
||||
STRING_LITERAL = 625, /* STRING_LITERAL */
|
||||
LEFT_PAREN = 626, /* LEFT_PAREN */
|
||||
RIGHT_PAREN = 627, /* RIGHT_PAREN */
|
||||
LEFT_BRACKET = 628, /* LEFT_BRACKET */
|
||||
RIGHT_BRACKET = 629, /* RIGHT_BRACKET */
|
||||
LEFT_BRACE = 630, /* LEFT_BRACE */
|
||||
RIGHT_BRACE = 631, /* RIGHT_BRACE */
|
||||
DOT = 632, /* DOT */
|
||||
COMMA = 633, /* COMMA */
|
||||
COLON = 634, /* COLON */
|
||||
EQUAL = 635, /* EQUAL */
|
||||
SEMICOLON = 636, /* SEMICOLON */
|
||||
BANG = 637, /* BANG */
|
||||
DASH = 638, /* DASH */
|
||||
TILDE = 639, /* TILDE */
|
||||
PLUS = 640, /* PLUS */
|
||||
STAR = 641, /* STAR */
|
||||
SLASH = 642, /* SLASH */
|
||||
PERCENT = 643, /* PERCENT */
|
||||
LEFT_ANGLE = 644, /* LEFT_ANGLE */
|
||||
RIGHT_ANGLE = 645, /* RIGHT_ANGLE */
|
||||
VERTICAL_BAR = 646, /* VERTICAL_BAR */
|
||||
CARET = 647, /* CARET */
|
||||
AMPERSAND = 648, /* AMPERSAND */
|
||||
QUESTION = 649, /* QUESTION */
|
||||
INVARIANT = 650, /* INVARIANT */
|
||||
HIGH_PRECISION = 651, /* HIGH_PRECISION */
|
||||
MEDIUM_PRECISION = 652, /* MEDIUM_PRECISION */
|
||||
LOW_PRECISION = 653, /* LOW_PRECISION */
|
||||
PRECISION = 654, /* PRECISION */
|
||||
PACKED = 655, /* PACKED */
|
||||
RESOURCE = 656, /* RESOURCE */
|
||||
SUPERP = 657, /* SUPERP */
|
||||
FLOATCONSTANT = 658, /* FLOATCONSTANT */
|
||||
INTCONSTANT = 659, /* INTCONSTANT */
|
||||
UINTCONSTANT = 660, /* UINTCONSTANT */
|
||||
BOOLCONSTANT = 661, /* BOOLCONSTANT */
|
||||
IDENTIFIER = 662, /* IDENTIFIER */
|
||||
TYPE_NAME = 663, /* TYPE_NAME */
|
||||
CENTROID = 664, /* CENTROID */
|
||||
IN = 665, /* IN */
|
||||
OUT = 666, /* OUT */
|
||||
INOUT = 667, /* INOUT */
|
||||
STRUCT = 668, /* STRUCT */
|
||||
VOID = 669, /* VOID */
|
||||
WHILE = 670, /* WHILE */
|
||||
BREAK = 671, /* BREAK */
|
||||
CONTINUE = 672, /* CONTINUE */
|
||||
DO = 673, /* DO */
|
||||
ELSE = 674, /* ELSE */
|
||||
FOR = 675, /* FOR */
|
||||
IF = 676, /* IF */
|
||||
DISCARD = 677, /* DISCARD */
|
||||
RETURN = 678, /* RETURN */
|
||||
SWITCH = 679, /* SWITCH */
|
||||
CASE = 680, /* CASE */
|
||||
DEFAULT = 681, /* DEFAULT */
|
||||
TERMINATE_INVOCATION = 682, /* TERMINATE_INVOCATION */
|
||||
TERMINATE_RAY = 683, /* TERMINATE_RAY */
|
||||
IGNORE_INTERSECTION = 684, /* IGNORE_INTERSECTION */
|
||||
UNIFORM = 685, /* UNIFORM */
|
||||
SHARED = 686, /* SHARED */
|
||||
BUFFER = 687, /* BUFFER */
|
||||
TILEIMAGEEXT = 688, /* TILEIMAGEEXT */
|
||||
FLAT = 689, /* FLAT */
|
||||
SMOOTH = 690, /* SMOOTH */
|
||||
LAYOUT = 691, /* LAYOUT */
|
||||
DOUBLECONSTANT = 692, /* DOUBLECONSTANT */
|
||||
INT16CONSTANT = 693, /* INT16CONSTANT */
|
||||
UINT16CONSTANT = 694, /* UINT16CONSTANT */
|
||||
FLOAT16CONSTANT = 695, /* FLOAT16CONSTANT */
|
||||
INT32CONSTANT = 696, /* INT32CONSTANT */
|
||||
UINT32CONSTANT = 697, /* UINT32CONSTANT */
|
||||
INT64CONSTANT = 698, /* INT64CONSTANT */
|
||||
UINT64CONSTANT = 699, /* UINT64CONSTANT */
|
||||
SUBROUTINE = 700, /* SUBROUTINE */
|
||||
DEMOTE = 701, /* DEMOTE */
|
||||
FUNCTION = 702, /* FUNCTION */
|
||||
PAYLOADNV = 703, /* PAYLOADNV */
|
||||
PAYLOADINNV = 704, /* PAYLOADINNV */
|
||||
HITATTRNV = 705, /* HITATTRNV */
|
||||
CALLDATANV = 706, /* CALLDATANV */
|
||||
CALLDATAINNV = 707, /* CALLDATAINNV */
|
||||
PAYLOADEXT = 708, /* PAYLOADEXT */
|
||||
PAYLOADINEXT = 709, /* PAYLOADINEXT */
|
||||
HITATTREXT = 710, /* HITATTREXT */
|
||||
CALLDATAEXT = 711, /* CALLDATAEXT */
|
||||
CALLDATAINEXT = 712, /* CALLDATAINEXT */
|
||||
PATCH = 713, /* PATCH */
|
||||
SAMPLE = 714, /* SAMPLE */
|
||||
NONUNIFORM = 715, /* NONUNIFORM */
|
||||
COHERENT = 716, /* COHERENT */
|
||||
VOLATILE = 717, /* VOLATILE */
|
||||
RESTRICT = 718, /* RESTRICT */
|
||||
READONLY = 719, /* READONLY */
|
||||
WRITEONLY = 720, /* WRITEONLY */
|
||||
NONTEMPORAL = 721, /* NONTEMPORAL */
|
||||
DEVICECOHERENT = 722, /* DEVICECOHERENT */
|
||||
QUEUEFAMILYCOHERENT = 723, /* QUEUEFAMILYCOHERENT */
|
||||
WORKGROUPCOHERENT = 724, /* WORKGROUPCOHERENT */
|
||||
SUBGROUPCOHERENT = 725, /* SUBGROUPCOHERENT */
|
||||
NONPRIVATE = 726, /* NONPRIVATE */
|
||||
SHADERCALLCOHERENT = 727, /* SHADERCALLCOHERENT */
|
||||
NOPERSPECTIVE = 728, /* NOPERSPECTIVE */
|
||||
EXPLICITINTERPAMD = 729, /* EXPLICITINTERPAMD */
|
||||
PERVERTEXEXT = 730, /* PERVERTEXEXT */
|
||||
PERVERTEXNV = 731, /* PERVERTEXNV */
|
||||
PERPRIMITIVENV = 732, /* PERPRIMITIVENV */
|
||||
PERVIEWNV = 733, /* PERVIEWNV */
|
||||
PERTASKNV = 734, /* PERTASKNV */
|
||||
PERPRIMITIVEEXT = 735, /* PERPRIMITIVEEXT */
|
||||
TASKPAYLOADWORKGROUPEXT = 736, /* TASKPAYLOADWORKGROUPEXT */
|
||||
PRECISE = 737 /* PRECISE */
|
||||
};
|
||||
typedef enum yytokentype yytoken_kind_t;
|
||||
#endif
|
||||
@@ -572,7 +581,7 @@ union YYSTYPE
|
||||
glslang::TTypeParameters* typeParameters;
|
||||
} interm;
|
||||
|
||||
#line 576 "MachineIndependent/glslang_tab.cpp.h"
|
||||
#line 585 "MachineIndependent/glslang_tab.cpp.h"
|
||||
|
||||
};
|
||||
typedef union YYSTYPE YYSTYPE;
|
||||
|
||||
@@ -268,6 +268,7 @@ public:
|
||||
gpu_shader_fp64 = 1 << 9,
|
||||
gpu_shader_int16 = 1 << 10,
|
||||
gpu_shader_half_float = 1 << 11,
|
||||
nv_gpu_shader5_types = 1 << 12,
|
||||
} feature;
|
||||
void insert(feature f) { features |= f; }
|
||||
void erase(feature f) { features &= ~f; }
|
||||
@@ -342,6 +343,7 @@ public:
|
||||
numTaskNVBlocks(0),
|
||||
layoutPrimitiveCulling(false),
|
||||
numTaskEXTPayloads(0),
|
||||
nonCoherentTileAttachmentReadQCOM(false),
|
||||
autoMapBindings(false),
|
||||
autoMapLocations(false),
|
||||
flattenUniformArrays(false),
|
||||
@@ -370,6 +372,12 @@ public:
|
||||
localSizeSpecId[1] = TQualifier::layoutNotSet;
|
||||
localSizeSpecId[2] = TQualifier::layoutNotSet;
|
||||
xfbBuffers.resize(TQualifier::layoutXfbBufferEnd);
|
||||
tileShadingRateQCOM[0] = 0;
|
||||
tileShadingRateQCOM[1] = 0;
|
||||
tileShadingRateQCOM[2] = 0;
|
||||
tileShadingRateQCOMNotDefault[0] = false;
|
||||
tileShadingRateQCOMNotDefault[1] = false;
|
||||
tileShadingRateQCOMNotDefault[2] = false;
|
||||
shiftBinding.fill(0);
|
||||
}
|
||||
|
||||
@@ -650,6 +658,21 @@ public:
|
||||
|
||||
bool isEsProfile() const { return profile == EEsProfile; }
|
||||
|
||||
bool setTileShadingRateQCOM(int dim, int size)
|
||||
{
|
||||
if (tileShadingRateQCOMNotDefault[dim])
|
||||
return size == tileShadingRateQCOM[dim];
|
||||
tileShadingRateQCOMNotDefault[dim] = true;
|
||||
tileShadingRateQCOM[dim] = size;
|
||||
return true;
|
||||
}
|
||||
unsigned int getTileShadingRateQCOM(int dim) const { return tileShadingRateQCOM[dim]; }
|
||||
bool isTileShadingRateQCOMSet() const
|
||||
{
|
||||
// Return true if any component has been set (i.e. any component is not default).
|
||||
return tileShadingRateQCOMNotDefault[0] || tileShadingRateQCOMNotDefault[1] || tileShadingRateQCOMNotDefault[2];
|
||||
}
|
||||
|
||||
void setShiftBinding(TResourceType res, unsigned int shift)
|
||||
{
|
||||
shiftBinding[res] = shift;
|
||||
@@ -895,6 +918,8 @@ public:
|
||||
bool getNonCoherentDepthAttachmentReadEXT() const { return nonCoherentDepthAttachmentReadEXT; }
|
||||
void setNonCoherentStencilAttachmentReadEXT() { nonCoherentStencilAttachmentReadEXT = true; }
|
||||
bool getNonCoherentStencilAttachmentReadEXT() const { return nonCoherentStencilAttachmentReadEXT; }
|
||||
void setNonCoherentTileAttachmentReadQCOM() { nonCoherentTileAttachmentReadQCOM = true; }
|
||||
bool getNonCoherentTileAttachmentReadQCOM() const { return nonCoherentTileAttachmentReadQCOM; }
|
||||
void setPostDepthCoverage() { postDepthCoverage = true; }
|
||||
bool getPostDepthCoverage() const { return postDepthCoverage; }
|
||||
void setEarlyFragmentTests() { earlyFragmentTests = true; }
|
||||
@@ -1107,17 +1132,20 @@ public:
|
||||
// Certain explicit conversions are allowed conditionally
|
||||
bool getArithemeticInt8Enabled() const {
|
||||
return numericFeatures.contains(TNumericFeatures::shader_explicit_arithmetic_types) ||
|
||||
numericFeatures.contains(TNumericFeatures::nv_gpu_shader5_types) ||
|
||||
numericFeatures.contains(TNumericFeatures::shader_explicit_arithmetic_types_int8);
|
||||
}
|
||||
bool getArithemeticInt16Enabled() const {
|
||||
return numericFeatures.contains(TNumericFeatures::shader_explicit_arithmetic_types) ||
|
||||
numericFeatures.contains(TNumericFeatures::gpu_shader_int16) ||
|
||||
numericFeatures.contains(TNumericFeatures::nv_gpu_shader5_types) ||
|
||||
numericFeatures.contains(TNumericFeatures::shader_explicit_arithmetic_types_int16);
|
||||
}
|
||||
|
||||
bool getArithemeticFloat16Enabled() const {
|
||||
return numericFeatures.contains(TNumericFeatures::shader_explicit_arithmetic_types) ||
|
||||
numericFeatures.contains(TNumericFeatures::gpu_shader_half_float) ||
|
||||
numericFeatures.contains(TNumericFeatures::nv_gpu_shader5_types) ||
|
||||
numericFeatures.contains(TNumericFeatures::shader_explicit_arithmetic_types_float16);
|
||||
}
|
||||
void updateNumericFeature(TNumericFeatures::feature f, bool on)
|
||||
@@ -1238,6 +1266,10 @@ protected:
|
||||
bool layoutPrimitiveCulling;
|
||||
int numTaskEXTPayloads;
|
||||
|
||||
bool nonCoherentTileAttachmentReadQCOM;
|
||||
int tileShadingRateQCOM[3];
|
||||
bool tileShadingRateQCOMNotDefault[3];
|
||||
|
||||
// Base shift values
|
||||
std::array<unsigned int, EResCount> shiftBinding;
|
||||
|
||||
|
||||
@@ -104,6 +104,8 @@ public:
|
||||
virtual void float16Check(const TSourceLoc&, const char* op, bool builtIn = false);
|
||||
virtual void float16ScalarVectorCheck(const TSourceLoc&, const char* op, bool builtIn = false);
|
||||
virtual void bfloat16ScalarVectorCheck(const TSourceLoc&, const char* op, bool builtIn = false);
|
||||
virtual void floate5m2ScalarVectorCheck(const TSourceLoc&, const char* op, bool builtIn = false);
|
||||
virtual void floate4m3ScalarVectorCheck(const TSourceLoc&, const char* op, bool builtIn = false);
|
||||
virtual bool float16Arithmetic();
|
||||
virtual void requireFloat16Arithmetic(const TSourceLoc& loc, const char* op, const char* featureDesc);
|
||||
virtual void int16ScalarVectorCheck(const TSourceLoc&, const char* op, bool builtIn = false);
|
||||
@@ -124,6 +126,8 @@ public:
|
||||
virtual void coopmatCheck(const TSourceLoc&, const char* op, bool builtIn = false);
|
||||
virtual void tensorLayoutViewCheck(const TSourceLoc&, const char* op, bool builtIn = false);
|
||||
virtual void coopvecCheck(const TSourceLoc&, const char* op, bool builtIn = false);
|
||||
virtual void intattachmentCheck(const TSourceLoc&, const char *op, bool builtIn = false);
|
||||
virtual void tensorCheckARM(const TSourceLoc&, const char *op, bool builtIn = false);
|
||||
bool relaxedErrors() const { return (messages & EShMsgRelaxedErrors) != 0; }
|
||||
bool suppressWarnings() const { return (messages & EShMsgSuppressWarnings) != 0; }
|
||||
bool isForwardCompatible() const { return forwardCompatible; }
|
||||
|
||||
@@ -58,8 +58,10 @@ public:
|
||||
TReflection(EShReflectionOptions opts, EShLanguage first, EShLanguage last)
|
||||
: options(opts), firstStage(first), lastStage(last), badReflection(TObjectReflection::badReflection())
|
||||
{
|
||||
for (int dim=0; dim<3; ++dim)
|
||||
for (int dim=0; dim<3; ++dim) {
|
||||
localSize[dim] = 0;
|
||||
tileShadingRateQCOM[dim] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
virtual ~TReflection() {}
|
||||
@@ -168,6 +170,9 @@ public:
|
||||
// Thread local size
|
||||
unsigned getLocalSize(int dim) const { return dim <= 2 ? localSize[dim] : 0; }
|
||||
|
||||
// Tile shading rate QCOM
|
||||
unsigned getTileShadingRateQCOM(int dim) const { return dim <= 2 ? tileShadingRateQCOM[dim] : 0; }
|
||||
|
||||
void dump();
|
||||
|
||||
protected:
|
||||
@@ -213,6 +218,7 @@ protected:
|
||||
TIndices atomicCounterUniformIndices;
|
||||
|
||||
unsigned int localSize[3];
|
||||
unsigned int tileShadingRateQCOM[3];
|
||||
};
|
||||
|
||||
} // end namespace glslang
|
||||
|
||||
@@ -156,8 +156,9 @@ typedef enum {
|
||||
EShTargetVulkan_1_1 = (1 << 22) | (1 << 12), // Vulkan 1.1
|
||||
EShTargetVulkan_1_2 = (1 << 22) | (2 << 12), // Vulkan 1.2
|
||||
EShTargetVulkan_1_3 = (1 << 22) | (3 << 12), // Vulkan 1.3
|
||||
EShTargetVulkan_1_4 = (1 << 22) | (4 << 12), // Vulkan 1.4
|
||||
EShTargetOpenGL_450 = 450, // OpenGL
|
||||
LAST_ELEMENT_MARKER(EShTargetClientVersionCount = 5),
|
||||
LAST_ELEMENT_MARKER(EShTargetClientVersionCount = 6),
|
||||
} EShTargetClientVersion;
|
||||
|
||||
typedef EShTargetClientVersion EshTargetClientVersion;
|
||||
@@ -272,6 +273,7 @@ enum EShMessages : unsigned {
|
||||
EShMsgAbsolutePath = (1 << 16), // Output Absolute path for messages
|
||||
EShMsgDisplayErrorColumn = (1 << 17), // Display error message column aswell as line
|
||||
EShMsgLinkTimeOptimization = (1 << 18), // perform cross-stage optimizations during linking
|
||||
EShMsgValidateCrossStageIO = (1 << 19), // validate shader inputs have matching outputs in previous stage
|
||||
LAST_ELEMENT_MARKER(EShMsgCount),
|
||||
};
|
||||
|
||||
@@ -893,6 +895,7 @@ public:
|
||||
// call first, to do liveness analysis, index mapping, etc.; returns false on failure
|
||||
GLSLANG_EXPORT bool buildReflection(int opts = EShReflectionDefault);
|
||||
GLSLANG_EXPORT unsigned getLocalSize(int dim) const; // return dim'th local size
|
||||
GLSLANG_EXPORT unsigned getTileShadingRateQCOM(int dim) const; // return dim'th tile shading rate QCOM
|
||||
GLSLANG_EXPORT int getReflectionIndex(const char *name) const;
|
||||
GLSLANG_EXPORT int getReflectionPipeIOIndex(const char* name, const bool inOrOut) const;
|
||||
GLSLANG_EXPORT int getNumUniformVariables() const;
|
||||
|
||||
@@ -91,7 +91,7 @@ public:
|
||||
#include <set>
|
||||
#include <cassert>
|
||||
|
||||
#include "spirv.hpp"
|
||||
#include "spirv.hpp11"
|
||||
|
||||
namespace spv {
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -35,7 +35,7 @@
|
||||
#define GLSLANG_BUILD_INFO
|
||||
|
||||
#define GLSLANG_VERSION_MAJOR 15
|
||||
#define GLSLANG_VERSION_MINOR 0
|
||||
#define GLSLANG_VERSION_MINOR 4
|
||||
#define GLSLANG_VERSION_PATCH 0
|
||||
#define GLSLANG_VERSION_FLAVOR ""
|
||||
|
||||
|
||||
Reference in New Issue
Block a user