GL_NV_integer_cooperative_matrix support
This commit is contained in:
parent
a3bc04b278
commit
387657e4cf
15 changed files with 3580 additions and 2797 deletions
|
|
@ -1433,11 +1433,18 @@ public:
|
|||
}
|
||||
typeName = NewPoolTString(p.userDef->getTypeName().c_str());
|
||||
}
|
||||
if (p.isCoopmat() && p.basicType == EbtFloat &&
|
||||
p.typeParameters && p.typeParameters->getNumDims() > 0 &&
|
||||
p.typeParameters->getDimSize(0) == 16) {
|
||||
basicType = EbtFloat16;
|
||||
qualifier.precision = EpqNone;
|
||||
if (p.isCoopmat() && p.typeParameters && p.typeParameters->getNumDims() > 0) {
|
||||
int numBits = p.typeParameters->getDimSize(0);
|
||||
if (p.basicType == EbtFloat && numBits == 16) {
|
||||
basicType = EbtFloat16;
|
||||
qualifier.precision = EpqNone;
|
||||
} else if (p.basicType == EbtUint && numBits == 8) {
|
||||
basicType = EbtUint8;
|
||||
qualifier.precision = EpqNone;
|
||||
} else if (p.basicType == EbtInt && numBits == 8) {
|
||||
basicType = EbtInt8;
|
||||
qualifier.precision = EpqNone;
|
||||
}
|
||||
}
|
||||
}
|
||||
// for construction of sampler types
|
||||
|
|
@ -2301,10 +2308,24 @@ public:
|
|||
// an OK function parameter
|
||||
bool coopMatParameterOK(const TType& right) const
|
||||
{
|
||||
return isCoopMat() && right.isCoopMat() &&
|
||||
return isCoopMat() && right.isCoopMat() && (getBasicType() == right.getBasicType()) &&
|
||||
typeParameters == nullptr && right.typeParameters != nullptr;
|
||||
}
|
||||
|
||||
bool sameCoopMatBaseType(const TType &right) const {
|
||||
bool rv = coopmat && right.coopmat;
|
||||
if (getBasicType() == EbtFloat || getBasicType() == EbtFloat16)
|
||||
rv = right.getBasicType() == EbtFloat || right.getBasicType() == EbtFloat16;
|
||||
else if (getBasicType() == EbtUint || getBasicType() == EbtUint8)
|
||||
rv = right.getBasicType() == EbtUint || right.getBasicType() == EbtUint8;
|
||||
else if (getBasicType() == EbtInt || getBasicType() == EbtInt8)
|
||||
rv = right.getBasicType() == EbtInt || right.getBasicType() == EbtInt8;
|
||||
else
|
||||
rv = false;
|
||||
return rv;
|
||||
}
|
||||
|
||||
|
||||
// See if two types match in all ways (just the actual type, not qualification)
|
||||
bool operator==(const TType& right) const
|
||||
{
|
||||
|
|
|
|||
|
|
@ -4797,6 +4797,60 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
|
|||
"void coopMatStoreNV(fcoopmatNV m, volatile coherent uvec4[] buf, uint element, uint stride, bool colMajor);\n"
|
||||
|
||||
"fcoopmatNV coopMatMulAddNV(fcoopmatNV A, fcoopmatNV B, fcoopmatNV C);\n"
|
||||
"void coopMatLoadNV(out icoopmatNV m, volatile coherent int8_t[] buf, uint element, uint stride, bool colMajor);\n"
|
||||
"void coopMatLoadNV(out icoopmatNV m, volatile coherent int16_t[] buf, uint element, uint stride, bool colMajor);\n"
|
||||
"void coopMatLoadNV(out icoopmatNV m, volatile coherent int[] buf, uint element, uint stride, bool colMajor);\n"
|
||||
"void coopMatLoadNV(out icoopmatNV m, volatile coherent int64_t[] buf, uint element, uint stride, bool colMajor);\n"
|
||||
"void coopMatLoadNV(out icoopmatNV m, volatile coherent ivec2[] buf, uint element, uint stride, bool colMajor);\n"
|
||||
"void coopMatLoadNV(out icoopmatNV m, volatile coherent ivec4[] buf, uint element, uint stride, bool colMajor);\n"
|
||||
"void coopMatLoadNV(out icoopmatNV m, volatile coherent uint8_t[] buf, uint element, uint stride, bool colMajor);\n"
|
||||
"void coopMatLoadNV(out icoopmatNV m, volatile coherent uint16_t[] buf, uint element, uint stride, bool colMajor);\n"
|
||||
"void coopMatLoadNV(out icoopmatNV m, volatile coherent uint[] buf, uint element, uint stride, bool colMajor);\n"
|
||||
"void coopMatLoadNV(out icoopmatNV m, volatile coherent uint64_t[] buf, uint element, uint stride, bool colMajor);\n"
|
||||
"void coopMatLoadNV(out icoopmatNV m, volatile coherent uvec2[] buf, uint element, uint stride, bool colMajor);\n"
|
||||
"void coopMatLoadNV(out icoopmatNV m, volatile coherent uvec4[] buf, uint element, uint stride, bool colMajor);\n"
|
||||
|
||||
"void coopMatLoadNV(out ucoopmatNV m, volatile coherent int8_t[] buf, uint element, uint stride, bool colMajor);\n"
|
||||
"void coopMatLoadNV(out ucoopmatNV m, volatile coherent int16_t[] buf, uint element, uint stride, bool colMajor);\n"
|
||||
"void coopMatLoadNV(out ucoopmatNV m, volatile coherent int[] buf, uint element, uint stride, bool colMajor);\n"
|
||||
"void coopMatLoadNV(out ucoopmatNV m, volatile coherent int64_t[] buf, uint element, uint stride, bool colMajor);\n"
|
||||
"void coopMatLoadNV(out ucoopmatNV m, volatile coherent ivec2[] buf, uint element, uint stride, bool colMajor);\n"
|
||||
"void coopMatLoadNV(out ucoopmatNV m, volatile coherent ivec4[] buf, uint element, uint stride, bool colMajor);\n"
|
||||
"void coopMatLoadNV(out ucoopmatNV m, volatile coherent uint8_t[] buf, uint element, uint stride, bool colMajor);\n"
|
||||
"void coopMatLoadNV(out ucoopmatNV m, volatile coherent uint16_t[] buf, uint element, uint stride, bool colMajor);\n"
|
||||
"void coopMatLoadNV(out ucoopmatNV m, volatile coherent uint[] buf, uint element, uint stride, bool colMajor);\n"
|
||||
"void coopMatLoadNV(out ucoopmatNV m, volatile coherent uint64_t[] buf, uint element, uint stride, bool colMajor);\n"
|
||||
"void coopMatLoadNV(out ucoopmatNV m, volatile coherent uvec2[] buf, uint element, uint stride, bool colMajor);\n"
|
||||
"void coopMatLoadNV(out ucoopmatNV m, volatile coherent uvec4[] buf, uint element, uint stride, bool colMajor);\n"
|
||||
|
||||
"void coopMatStoreNV(icoopmatNV m, volatile coherent int8_t[] buf, uint element, uint stride, bool colMajor);\n"
|
||||
"void coopMatStoreNV(icoopmatNV m, volatile coherent int16_t[] buf, uint element, uint stride, bool colMajor);\n"
|
||||
"void coopMatStoreNV(icoopmatNV m, volatile coherent int[] buf, uint element, uint stride, bool colMajor);\n"
|
||||
"void coopMatStoreNV(icoopmatNV m, volatile coherent int64_t[] buf, uint element, uint stride, bool colMajor);\n"
|
||||
"void coopMatStoreNV(icoopmatNV m, volatile coherent ivec2[] buf, uint element, uint stride, bool colMajor);\n"
|
||||
"void coopMatStoreNV(icoopmatNV m, volatile coherent ivec4[] buf, uint element, uint stride, bool colMajor);\n"
|
||||
"void coopMatStoreNV(icoopmatNV m, volatile coherent uint8_t[] buf, uint element, uint stride, bool colMajor);\n"
|
||||
"void coopMatStoreNV(icoopmatNV m, volatile coherent uint16_t[] buf, uint element, uint stride, bool colMajor);\n"
|
||||
"void coopMatStoreNV(icoopmatNV m, volatile coherent uint[] buf, uint element, uint stride, bool colMajor);\n"
|
||||
"void coopMatStoreNV(icoopmatNV m, volatile coherent uint64_t[] buf, uint element, uint stride, bool colMajor);\n"
|
||||
"void coopMatStoreNV(icoopmatNV m, volatile coherent uvec2[] buf, uint element, uint stride, bool colMajor);\n"
|
||||
"void coopMatStoreNV(icoopmatNV m, volatile coherent uvec4[] buf, uint element, uint stride, bool colMajor);\n"
|
||||
|
||||
"void coopMatStoreNV(ucoopmatNV m, volatile coherent int8_t[] buf, uint element, uint stride, bool colMajor);\n"
|
||||
"void coopMatStoreNV(ucoopmatNV m, volatile coherent int16_t[] buf, uint element, uint stride, bool colMajor);\n"
|
||||
"void coopMatStoreNV(ucoopmatNV m, volatile coherent int[] buf, uint element, uint stride, bool colMajor);\n"
|
||||
"void coopMatStoreNV(ucoopmatNV m, volatile coherent int64_t[] buf, uint element, uint stride, bool colMajor);\n"
|
||||
"void coopMatStoreNV(ucoopmatNV m, volatile coherent ivec2[] buf, uint element, uint stride, bool colMajor);\n"
|
||||
"void coopMatStoreNV(ucoopmatNV m, volatile coherent ivec4[] buf, uint element, uint stride, bool colMajor);\n"
|
||||
"void coopMatStoreNV(ucoopmatNV m, volatile coherent uint8_t[] buf, uint element, uint stride, bool colMajor);\n"
|
||||
"void coopMatStoreNV(ucoopmatNV m, volatile coherent uint16_t[] buf, uint element, uint stride, bool colMajor);\n"
|
||||
"void coopMatStoreNV(ucoopmatNV m, volatile coherent uint[] buf, uint element, uint stride, bool colMajor);\n"
|
||||
"void coopMatStoreNV(ucoopmatNV m, volatile coherent uint64_t[] buf, uint element, uint stride, bool colMajor);\n"
|
||||
"void coopMatStoreNV(ucoopmatNV m, volatile coherent uvec2[] buf, uint element, uint stride, bool colMajor);\n"
|
||||
"void coopMatStoreNV(ucoopmatNV m, volatile coherent uvec4[] buf, uint element, uint stride, bool colMajor);\n"
|
||||
|
||||
"icoopmatNV coopMatMulAddNV(icoopmatNV A, icoopmatNV B, icoopmatNV C);\n"
|
||||
"ucoopmatNV coopMatMulAddNV(ucoopmatNV A, ucoopmatNV B, ucoopmatNV C);\n"
|
||||
);
|
||||
}
|
||||
|
||||
|
|
@ -8527,9 +8581,12 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
|
|||
symbolTable.setFunctionExtensions("subgroupMemoryBarrierShared", 1, &E_GL_KHR_shader_subgroup_basic);
|
||||
}
|
||||
|
||||
symbolTable.setFunctionExtensions("coopMatLoadNV", 1, &E_GL_NV_cooperative_matrix);
|
||||
symbolTable.setFunctionExtensions("coopMatStoreNV", 1, &E_GL_NV_cooperative_matrix);
|
||||
symbolTable.setFunctionExtensions("coopMatMulAddNV", 1, &E_GL_NV_cooperative_matrix);
|
||||
{
|
||||
const char *coopExt[2] = { E_GL_NV_cooperative_matrix, E_GL_NV_integer_cooperative_matrix };
|
||||
symbolTable.setFunctionExtensions("coopMatLoadNV", 2, coopExt);
|
||||
symbolTable.setFunctionExtensions("coopMatStoreNV", 2, coopExt);
|
||||
symbolTable.setFunctionExtensions("coopMatMulAddNV", 2, coopExt);
|
||||
}
|
||||
|
||||
if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 320)) {
|
||||
symbolTable.setFunctionExtensions("dFdx", 1, &E_GL_NV_compute_shader_derivatives);
|
||||
|
|
|
|||
|
|
@ -6192,6 +6192,8 @@ const TFunction* TParseContext::findFunction400(const TSourceLoc& loc, const TFu
|
|||
}
|
||||
if (from.isArray() || to.isArray() || ! from.sameElementShape(to))
|
||||
return false;
|
||||
if (from.isCoopMat() && to.isCoopMat())
|
||||
return from.sameCoopMatBaseType(to);
|
||||
return intermediate.canImplicitlyPromote(from.getBasicType(), to.getBasicType());
|
||||
};
|
||||
|
||||
|
|
@ -6266,6 +6268,8 @@ const TFunction* TParseContext::findFunctionExplicitTypes(const TSourceLoc& loc,
|
|||
}
|
||||
if (from.isArray() || to.isArray() || ! from.sameElementShape(to))
|
||||
return false;
|
||||
if (from.isCoopMat() && to.isCoopMat())
|
||||
return from.sameCoopMatBaseType(to);
|
||||
return intermediate.canImplicitlyPromote(from.getBasicType(), to.getBasicType());
|
||||
};
|
||||
|
||||
|
|
@ -6365,12 +6369,20 @@ TIntermNode* TParseContext::declareVariable(const TSourceLoc& loc, TString& iden
|
|||
if (!publicType.typeParameters || publicType.typeParameters->getNumDims() != 4) {
|
||||
error(loc, "expected four type parameters", identifier.c_str(), "");
|
||||
}
|
||||
if (publicType.typeParameters &&
|
||||
publicType.typeParameters->getDimSize(0) != 16 &&
|
||||
publicType.typeParameters->getDimSize(0) != 32 &&
|
||||
publicType.typeParameters->getDimSize(0) != 64) {
|
||||
error(loc, "expected 16, 32, or 64 bits for first type parameter", identifier.c_str(), "");
|
||||
if (publicType.typeParameters) {
|
||||
if (isTypeFloat(publicType.basicType) &&
|
||||
publicType.typeParameters->getDimSize(0) != 16 &&
|
||||
publicType.typeParameters->getDimSize(0) != 32 &&
|
||||
publicType.typeParameters->getDimSize(0) != 64) {
|
||||
error(loc, "expected 16, 32, or 64 bits for first type parameter", identifier.c_str(), "");
|
||||
}
|
||||
if (isTypeInt(publicType.basicType) &&
|
||||
publicType.typeParameters->getDimSize(0) != 8 &&
|
||||
publicType.typeParameters->getDimSize(0) != 32) {
|
||||
error(loc, "expected 8 or 32 bits for first type parameter", identifier.c_str(), "");
|
||||
}
|
||||
}
|
||||
|
||||
} else {
|
||||
if (publicType.typeParameters && publicType.typeParameters->getNumDims() != 0) {
|
||||
error(loc, "unexpected type parameters", identifier.c_str(), "");
|
||||
|
|
@ -7065,19 +7077,90 @@ TIntermTyped* TParseContext::constructBuiltIn(const TType& type, TOperator op, T
|
|||
}
|
||||
node = intermediate.setAggregateOperator(node, EOpConstructCooperativeMatrix, type, node->getLoc());
|
||||
} else {
|
||||
TOperator op;
|
||||
switch (type.getBasicType()) {
|
||||
default:
|
||||
assert(0);
|
||||
break;
|
||||
case EbtInt:
|
||||
{
|
||||
switch (node->getType().getBasicType()) {
|
||||
case EbtFloat: op = EOpConvFloatToInt; break;
|
||||
case EbtFloat16: op = EOpConvFloat16ToInt; break;
|
||||
case EbtUint8: op = EOpConvUint8ToInt; break;
|
||||
case EbtInt8: op = EOpConvInt8ToInt; break;
|
||||
case EbtUint: op = EOpConvUintToInt; break;
|
||||
default: assert(0);
|
||||
}
|
||||
|
||||
}
|
||||
break;
|
||||
case EbtUint:
|
||||
{
|
||||
switch (node->getType().getBasicType()) {
|
||||
case EbtFloat: op = EOpConvFloatToUint; break;
|
||||
case EbtFloat16: op = EOpConvFloat16ToUint; break;
|
||||
case EbtUint8: op = EOpConvUint8ToUint; break;
|
||||
case EbtInt8: op = EOpConvInt8ToUint; break;
|
||||
case EbtInt: op = EOpConvIntToUint; break;
|
||||
case EbtUint: op = EOpConvUintToInt8; break;
|
||||
default: assert(0);
|
||||
}
|
||||
|
||||
}
|
||||
break;
|
||||
|
||||
case EbtInt8:
|
||||
{
|
||||
switch (node->getType().getBasicType()) {
|
||||
case EbtFloat: op = EOpConvFloatToInt8; break;
|
||||
case EbtFloat16: op = EOpConvFloat16ToInt8; break;
|
||||
case EbtUint8: op = EOpConvUint8ToInt8; break;
|
||||
case EbtInt: op = EOpConvIntToInt8; break;
|
||||
case EbtUint: op = EOpConvUintToInt8; break;
|
||||
default: assert(0);
|
||||
}
|
||||
|
||||
}
|
||||
break;
|
||||
case EbtUint8: {
|
||||
switch (node->getType().getBasicType()) {
|
||||
case EbtFloat: op = EOpConvFloatToUint8; break;
|
||||
case EbtFloat16: op = EOpConvFloat16ToUint8; break;
|
||||
case EbtInt8: op = EOpConvInt8ToUint8; break;
|
||||
case EbtInt: op = EOpConvIntToUint8; break;
|
||||
case EbtUint: op = EOpConvUintToUint8; break;
|
||||
default: assert(0);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case EbtFloat:
|
||||
assert(node->getType().getBasicType() == EbtFloat16);
|
||||
node = intermediate.addUnaryNode(EOpConvFloat16ToFloat, node, node->getLoc(), type);
|
||||
{
|
||||
switch (node->getType().getBasicType()) {
|
||||
case EbtFloat16: op = EOpConvFloat16ToFloat; break;
|
||||
case EbtInt8: op = EOpConvInt8ToFloat; break;
|
||||
case EbtUint8: op = EOpConvUint8ToFloat; break;
|
||||
case EbtInt: op = EOpConvIntToFloat; break;
|
||||
case EbtUint: op = EOpConvUintToFloat; break;
|
||||
default: assert(0);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case EbtFloat16:
|
||||
assert(node->getType().getBasicType() == EbtFloat);
|
||||
node = intermediate.addUnaryNode(EOpConvFloatToFloat16, node, node->getLoc(), type);
|
||||
{
|
||||
switch (node->getType().getBasicType()) {
|
||||
case EbtFloat: op = EOpConvFloatToFloat16; break;
|
||||
case EbtInt8: op = EOpConvInt8ToFloat16; break;
|
||||
case EbtUint8: op = EOpConvUint8ToFloat16; break;
|
||||
case EbtInt: op = EOpConvIntToFloat16; break;
|
||||
case EbtUint: op = EOpConvUintToFloat16; break;
|
||||
default: assert(0);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
node = intermediate.addUnaryNode(op, node, node->getLoc(), type);
|
||||
// If it's a (non-specialization) constant, it must be folded.
|
||||
if (node->getAsUnaryNode()->getOperand()->getAsConstantUnion())
|
||||
return node->getAsUnaryNode()->getOperand()->getAsConstantUnion()->fold(op, node->getType());
|
||||
|
|
|
|||
|
|
@ -713,6 +713,8 @@ void TScanContext::fillInKeywordMap()
|
|||
(*KeywordMap)["taskNV"] = PERTASKNV;
|
||||
|
||||
(*KeywordMap)["fcoopmatNV"] = FCOOPMATNV;
|
||||
(*KeywordMap)["icoopmatNV"] = ICOOPMATNV;
|
||||
(*KeywordMap)["ucoopmatNV"] = UCOOPMATNV;
|
||||
|
||||
ReservedSet = new std::unordered_set<const char*, str_hash, str_eq>;
|
||||
|
||||
|
|
@ -1599,6 +1601,14 @@ int TScanContext::tokenizeIdentifier()
|
|||
return keyword;
|
||||
return identifierOrType();
|
||||
|
||||
case UCOOPMATNV:
|
||||
case ICOOPMATNV:
|
||||
afterType = true;
|
||||
if (parseContext.symbolTable.atBuiltInLevel() ||
|
||||
parseContext.extensionTurnedOn(E_GL_NV_integer_cooperative_matrix))
|
||||
return keyword;
|
||||
return identifierOrType();
|
||||
|
||||
case DEMOTE:
|
||||
if (parseContext.extensionTurnedOn(E_GL_EXT_demote_to_helper_invocation))
|
||||
return keyword;
|
||||
|
|
|
|||
|
|
@ -252,6 +252,7 @@ void TParseVersions::initializeExtensionBehavior()
|
|||
|
||||
extensionBehavior[E_GL_NV_cooperative_matrix] = EBhDisable;
|
||||
extensionBehavior[E_GL_NV_shader_sm_builtins] = EBhDisable;
|
||||
extensionBehavior[E_GL_NV_integer_cooperative_matrix] = EBhDisable;
|
||||
|
||||
// AEP
|
||||
extensionBehavior[E_GL_ANDROID_extension_pack_es31a] = EBhDisable;
|
||||
|
|
@ -436,6 +437,7 @@ void TParseVersions::getPreamble(std::string& preamble)
|
|||
"#define GL_NV_shader_texture_footprint 1\n"
|
||||
"#define GL_NV_mesh_shader 1\n"
|
||||
"#define GL_NV_cooperative_matrix 1\n"
|
||||
"#define GL_NV_integer_cooperative_matrix 1\n"
|
||||
|
||||
"#define GL_EXT_shader_explicit_arithmetic_types 1\n"
|
||||
"#define GL_EXT_shader_explicit_arithmetic_types_int8 1\n"
|
||||
|
|
@ -822,6 +824,8 @@ void TParseVersions::updateExtensionBehavior(int line, const char* extension, co
|
|||
updateExtensionBehavior(line, "GL_KHR_shader_subgroup_basic", behaviorString);
|
||||
else if (strcmp(extension, "GL_EXT_buffer_reference2") == 0)
|
||||
updateExtensionBehavior(line, "GL_EXT_buffer_reference", behaviorString);
|
||||
else if (strcmp(extension, "GL_NV_integer_cooperative_matrix") == 0)
|
||||
updateExtensionBehavior(line, "GL_NV_cooperative_matrix", behaviorString);
|
||||
}
|
||||
|
||||
void TParseVersions::updateExtensionBehavior(const char* extension, TExtensionBehavior behavior)
|
||||
|
|
@ -1088,8 +1092,15 @@ void TParseVersions::fcoopmatCheck(const TSourceLoc& loc, const char* op, bool b
|
|||
requireExtensions(loc, sizeof(extensions)/sizeof(extensions[0]), extensions, op);
|
||||
}
|
||||
}
|
||||
#endif // GLSLANG_WEB
|
||||
|
||||
void TParseVersions::intcoopmatCheck(const TSourceLoc& loc, const char* op, bool builtIn)
|
||||
{
|
||||
if (!builtIn) {
|
||||
const char* const extensions[] = {E_GL_NV_integer_cooperative_matrix};
|
||||
requireExtensions(loc, sizeof(extensions)/sizeof(extensions[0]), extensions, op);
|
||||
}
|
||||
}
|
||||
#endif // GLSLANG_WEB
|
||||
// Call for any operation removed because SPIR-V is in use.
|
||||
void TParseVersions::spvRemoved(const TSourceLoc& loc, const char* op)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -227,6 +227,7 @@ const int Num_viewportEXTs = sizeof(viewportEXTs) / sizeof(viewportEXTs[0]);
|
|||
|
||||
const char* const E_GL_NV_cooperative_matrix = "GL_NV_cooperative_matrix";
|
||||
const char* const E_GL_NV_shader_sm_builtins = "GL_NV_shader_sm_builtins";
|
||||
const char* const E_GL_NV_integer_cooperative_matrix = "GL_NV_integer_cooperative_matrix";
|
||||
|
||||
// AEP
|
||||
const char* const E_GL_ANDROID_extension_pack_es31a = "GL_ANDROID_extension_pack_es31a";
|
||||
|
|
|
|||
|
|
@ -200,7 +200,7 @@ GLSLANG_WEB_EXCLUDE_ON
|
|||
%token <lex> F64MAT4X2 F64MAT4X3 F64MAT4X4
|
||||
%token <lex> ATOMIC_UINT
|
||||
%token <lex> ACCSTRUCTNV
|
||||
%token <lex> FCOOPMATNV
|
||||
%token <lex> FCOOPMATNV ICOOPMATNV UCOOPMATNV
|
||||
|
||||
// combined image/sampler
|
||||
%token <lex> SAMPLER1D SAMPLER1DARRAY SAMPLER1DARRAYSHADOW ISAMPLER1D SAMPLER1DSHADOW
|
||||
|
|
@ -3183,6 +3183,18 @@ GLSLANG_WEB_EXCLUDE_ON
|
|||
$$.basicType = EbtFloat;
|
||||
$$.coopmat = true;
|
||||
}
|
||||
| ICOOPMATNV {
|
||||
parseContext.intcoopmatCheck($1.loc, "icoopmatNV", parseContext.symbolTable.atBuiltInLevel());
|
||||
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
|
||||
$$.basicType = EbtInt;
|
||||
$$.coopmat = true;
|
||||
}
|
||||
| UCOOPMATNV {
|
||||
parseContext.intcoopmatCheck($1.loc, "ucoopmatNV", parseContext.symbolTable.atBuiltInLevel());
|
||||
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
|
||||
$$.basicType = EbtUint;
|
||||
$$.coopmat = true;
|
||||
}
|
||||
GLSLANG_WEB_EXCLUDE_OFF
|
||||
| struct_specifier {
|
||||
$$ = $1;
|
||||
|
|
|
|||
|
|
@ -200,7 +200,7 @@ extern int yylex(YYSTYPE*, TParseContext&);
|
|||
%token <lex> F64MAT4X2 F64MAT4X3 F64MAT4X4
|
||||
%token <lex> ATOMIC_UINT
|
||||
%token <lex> ACCSTRUCTNV
|
||||
%token <lex> FCOOPMATNV
|
||||
%token <lex> FCOOPMATNV ICOOPMATNV UCOOPMATNV
|
||||
|
||||
// combined image/sampler
|
||||
%token <lex> SAMPLER1D SAMPLER1DARRAY SAMPLER1DARRAYSHADOW ISAMPLER1D SAMPLER1DSHADOW
|
||||
|
|
@ -3183,6 +3183,18 @@ type_specifier_nonarray
|
|||
$$.basicType = EbtFloat;
|
||||
$$.coopmat = true;
|
||||
}
|
||||
| ICOOPMATNV {
|
||||
parseContext.intcoopmatCheck($1.loc, "icoopmatNV", parseContext.symbolTable.atBuiltInLevel());
|
||||
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
|
||||
$$.basicType = EbtInt;
|
||||
$$.coopmat = true;
|
||||
}
|
||||
| UCOOPMATNV {
|
||||
parseContext.intcoopmatCheck($1.loc, "ucoopmatNV", parseContext.symbolTable.atBuiltInLevel());
|
||||
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
|
||||
$$.basicType = EbtUint;
|
||||
$$.coopmat = true;
|
||||
}
|
||||
|
||||
| struct_specifier {
|
||||
$$ = $1;
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -194,263 +194,265 @@ extern int yydebug;
|
|||
ATOMIC_UINT = 404,
|
||||
ACCSTRUCTNV = 405,
|
||||
FCOOPMATNV = 406,
|
||||
SAMPLER1D = 407,
|
||||
SAMPLER1DARRAY = 408,
|
||||
SAMPLER1DARRAYSHADOW = 409,
|
||||
ISAMPLER1D = 410,
|
||||
SAMPLER1DSHADOW = 411,
|
||||
SAMPLER2DRECT = 412,
|
||||
SAMPLER2DRECTSHADOW = 413,
|
||||
ISAMPLER2DRECT = 414,
|
||||
USAMPLER2DRECT = 415,
|
||||
SAMPLERBUFFER = 416,
|
||||
ISAMPLERBUFFER = 417,
|
||||
USAMPLERBUFFER = 418,
|
||||
SAMPLER2DMS = 419,
|
||||
ISAMPLER2DMS = 420,
|
||||
USAMPLER2DMS = 421,
|
||||
SAMPLER2DMSARRAY = 422,
|
||||
ISAMPLER2DMSARRAY = 423,
|
||||
USAMPLER2DMSARRAY = 424,
|
||||
SAMPLEREXTERNALOES = 425,
|
||||
SAMPLEREXTERNAL2DY2YEXT = 426,
|
||||
ISAMPLER1DARRAY = 427,
|
||||
USAMPLER1D = 428,
|
||||
USAMPLER1DARRAY = 429,
|
||||
F16SAMPLER1D = 430,
|
||||
F16SAMPLER2D = 431,
|
||||
F16SAMPLER3D = 432,
|
||||
F16SAMPLER2DRECT = 433,
|
||||
F16SAMPLERCUBE = 434,
|
||||
F16SAMPLER1DARRAY = 435,
|
||||
F16SAMPLER2DARRAY = 436,
|
||||
F16SAMPLERCUBEARRAY = 437,
|
||||
F16SAMPLERBUFFER = 438,
|
||||
F16SAMPLER2DMS = 439,
|
||||
F16SAMPLER2DMSARRAY = 440,
|
||||
F16SAMPLER1DSHADOW = 441,
|
||||
F16SAMPLER2DSHADOW = 442,
|
||||
F16SAMPLER1DARRAYSHADOW = 443,
|
||||
F16SAMPLER2DARRAYSHADOW = 444,
|
||||
F16SAMPLER2DRECTSHADOW = 445,
|
||||
F16SAMPLERCUBESHADOW = 446,
|
||||
F16SAMPLERCUBEARRAYSHADOW = 447,
|
||||
IMAGE1D = 448,
|
||||
IIMAGE1D = 449,
|
||||
UIMAGE1D = 450,
|
||||
IMAGE2D = 451,
|
||||
IIMAGE2D = 452,
|
||||
UIMAGE2D = 453,
|
||||
IMAGE3D = 454,
|
||||
IIMAGE3D = 455,
|
||||
UIMAGE3D = 456,
|
||||
IMAGE2DRECT = 457,
|
||||
IIMAGE2DRECT = 458,
|
||||
UIMAGE2DRECT = 459,
|
||||
IMAGECUBE = 460,
|
||||
IIMAGECUBE = 461,
|
||||
UIMAGECUBE = 462,
|
||||
IMAGEBUFFER = 463,
|
||||
IIMAGEBUFFER = 464,
|
||||
UIMAGEBUFFER = 465,
|
||||
IMAGE1DARRAY = 466,
|
||||
IIMAGE1DARRAY = 467,
|
||||
UIMAGE1DARRAY = 468,
|
||||
IMAGE2DARRAY = 469,
|
||||
IIMAGE2DARRAY = 470,
|
||||
UIMAGE2DARRAY = 471,
|
||||
IMAGECUBEARRAY = 472,
|
||||
IIMAGECUBEARRAY = 473,
|
||||
UIMAGECUBEARRAY = 474,
|
||||
IMAGE2DMS = 475,
|
||||
IIMAGE2DMS = 476,
|
||||
UIMAGE2DMS = 477,
|
||||
IMAGE2DMSARRAY = 478,
|
||||
IIMAGE2DMSARRAY = 479,
|
||||
UIMAGE2DMSARRAY = 480,
|
||||
F16IMAGE1D = 481,
|
||||
F16IMAGE2D = 482,
|
||||
F16IMAGE3D = 483,
|
||||
F16IMAGE2DRECT = 484,
|
||||
F16IMAGECUBE = 485,
|
||||
F16IMAGE1DARRAY = 486,
|
||||
F16IMAGE2DARRAY = 487,
|
||||
F16IMAGECUBEARRAY = 488,
|
||||
F16IMAGEBUFFER = 489,
|
||||
F16IMAGE2DMS = 490,
|
||||
F16IMAGE2DMSARRAY = 491,
|
||||
SAMPLER = 492,
|
||||
SAMPLERSHADOW = 493,
|
||||
TEXTURE1D = 494,
|
||||
TEXTURE2D = 495,
|
||||
TEXTURE3D = 496,
|
||||
TEXTURECUBE = 497,
|
||||
TEXTURE1DARRAY = 498,
|
||||
TEXTURE2DARRAY = 499,
|
||||
ITEXTURE1D = 500,
|
||||
ITEXTURE2D = 501,
|
||||
ITEXTURE3D = 502,
|
||||
ITEXTURECUBE = 503,
|
||||
ITEXTURE1DARRAY = 504,
|
||||
ITEXTURE2DARRAY = 505,
|
||||
UTEXTURE1D = 506,
|
||||
UTEXTURE2D = 507,
|
||||
UTEXTURE3D = 508,
|
||||
UTEXTURECUBE = 509,
|
||||
UTEXTURE1DARRAY = 510,
|
||||
UTEXTURE2DARRAY = 511,
|
||||
TEXTURE2DRECT = 512,
|
||||
ITEXTURE2DRECT = 513,
|
||||
UTEXTURE2DRECT = 514,
|
||||
TEXTUREBUFFER = 515,
|
||||
ITEXTUREBUFFER = 516,
|
||||
UTEXTUREBUFFER = 517,
|
||||
TEXTURECUBEARRAY = 518,
|
||||
ITEXTURECUBEARRAY = 519,
|
||||
UTEXTURECUBEARRAY = 520,
|
||||
TEXTURE2DMS = 521,
|
||||
ITEXTURE2DMS = 522,
|
||||
UTEXTURE2DMS = 523,
|
||||
TEXTURE2DMSARRAY = 524,
|
||||
ITEXTURE2DMSARRAY = 525,
|
||||
UTEXTURE2DMSARRAY = 526,
|
||||
F16TEXTURE1D = 527,
|
||||
F16TEXTURE2D = 528,
|
||||
F16TEXTURE3D = 529,
|
||||
F16TEXTURE2DRECT = 530,
|
||||
F16TEXTURECUBE = 531,
|
||||
F16TEXTURE1DARRAY = 532,
|
||||
F16TEXTURE2DARRAY = 533,
|
||||
F16TEXTURECUBEARRAY = 534,
|
||||
F16TEXTUREBUFFER = 535,
|
||||
F16TEXTURE2DMS = 536,
|
||||
F16TEXTURE2DMSARRAY = 537,
|
||||
SUBPASSINPUT = 538,
|
||||
SUBPASSINPUTMS = 539,
|
||||
ISUBPASSINPUT = 540,
|
||||
ISUBPASSINPUTMS = 541,
|
||||
USUBPASSINPUT = 542,
|
||||
USUBPASSINPUTMS = 543,
|
||||
F16SUBPASSINPUT = 544,
|
||||
F16SUBPASSINPUTMS = 545,
|
||||
LEFT_OP = 546,
|
||||
RIGHT_OP = 547,
|
||||
INC_OP = 548,
|
||||
DEC_OP = 549,
|
||||
LE_OP = 550,
|
||||
GE_OP = 551,
|
||||
EQ_OP = 552,
|
||||
NE_OP = 553,
|
||||
AND_OP = 554,
|
||||
OR_OP = 555,
|
||||
XOR_OP = 556,
|
||||
MUL_ASSIGN = 557,
|
||||
DIV_ASSIGN = 558,
|
||||
ADD_ASSIGN = 559,
|
||||
MOD_ASSIGN = 560,
|
||||
LEFT_ASSIGN = 561,
|
||||
RIGHT_ASSIGN = 562,
|
||||
AND_ASSIGN = 563,
|
||||
XOR_ASSIGN = 564,
|
||||
OR_ASSIGN = 565,
|
||||
SUB_ASSIGN = 566,
|
||||
LEFT_PAREN = 567,
|
||||
RIGHT_PAREN = 568,
|
||||
LEFT_BRACKET = 569,
|
||||
RIGHT_BRACKET = 570,
|
||||
LEFT_BRACE = 571,
|
||||
RIGHT_BRACE = 572,
|
||||
DOT = 573,
|
||||
COMMA = 574,
|
||||
COLON = 575,
|
||||
EQUAL = 576,
|
||||
SEMICOLON = 577,
|
||||
BANG = 578,
|
||||
DASH = 579,
|
||||
TILDE = 580,
|
||||
PLUS = 581,
|
||||
STAR = 582,
|
||||
SLASH = 583,
|
||||
PERCENT = 584,
|
||||
LEFT_ANGLE = 585,
|
||||
RIGHT_ANGLE = 586,
|
||||
VERTICAL_BAR = 587,
|
||||
CARET = 588,
|
||||
AMPERSAND = 589,
|
||||
QUESTION = 590,
|
||||
INVARIANT = 591,
|
||||
HIGH_PRECISION = 592,
|
||||
MEDIUM_PRECISION = 593,
|
||||
LOW_PRECISION = 594,
|
||||
PRECISION = 595,
|
||||
PACKED = 596,
|
||||
RESOURCE = 597,
|
||||
SUPERP = 598,
|
||||
FLOATCONSTANT = 599,
|
||||
INTCONSTANT = 600,
|
||||
UINTCONSTANT = 601,
|
||||
BOOLCONSTANT = 602,
|
||||
IDENTIFIER = 603,
|
||||
TYPE_NAME = 604,
|
||||
CENTROID = 605,
|
||||
IN = 606,
|
||||
OUT = 607,
|
||||
INOUT = 608,
|
||||
STRUCT = 609,
|
||||
VOID = 610,
|
||||
WHILE = 611,
|
||||
BREAK = 612,
|
||||
CONTINUE = 613,
|
||||
DO = 614,
|
||||
ELSE = 615,
|
||||
FOR = 616,
|
||||
IF = 617,
|
||||
DISCARD = 618,
|
||||
RETURN = 619,
|
||||
SWITCH = 620,
|
||||
CASE = 621,
|
||||
DEFAULT = 622,
|
||||
UNIFORM = 623,
|
||||
SHARED = 624,
|
||||
FLAT = 625,
|
||||
SMOOTH = 626,
|
||||
LAYOUT = 627,
|
||||
DOUBLECONSTANT = 628,
|
||||
INT16CONSTANT = 629,
|
||||
UINT16CONSTANT = 630,
|
||||
FLOAT16CONSTANT = 631,
|
||||
INT32CONSTANT = 632,
|
||||
UINT32CONSTANT = 633,
|
||||
INT64CONSTANT = 634,
|
||||
UINT64CONSTANT = 635,
|
||||
SUBROUTINE = 636,
|
||||
DEMOTE = 637,
|
||||
PAYLOADNV = 638,
|
||||
PAYLOADINNV = 639,
|
||||
HITATTRNV = 640,
|
||||
CALLDATANV = 641,
|
||||
CALLDATAINNV = 642,
|
||||
PATCH = 643,
|
||||
SAMPLE = 644,
|
||||
BUFFER = 645,
|
||||
NONUNIFORM = 646,
|
||||
COHERENT = 647,
|
||||
VOLATILE = 648,
|
||||
RESTRICT = 649,
|
||||
READONLY = 650,
|
||||
WRITEONLY = 651,
|
||||
DEVICECOHERENT = 652,
|
||||
QUEUEFAMILYCOHERENT = 653,
|
||||
WORKGROUPCOHERENT = 654,
|
||||
SUBGROUPCOHERENT = 655,
|
||||
NONPRIVATE = 656,
|
||||
NOPERSPECTIVE = 657,
|
||||
EXPLICITINTERPAMD = 658,
|
||||
PERVERTEXNV = 659,
|
||||
PERPRIMITIVENV = 660,
|
||||
PERVIEWNV = 661,
|
||||
PERTASKNV = 662,
|
||||
PRECISE = 663
|
||||
ICOOPMATNV = 407,
|
||||
UCOOPMATNV = 408,
|
||||
SAMPLER1D = 409,
|
||||
SAMPLER1DARRAY = 410,
|
||||
SAMPLER1DARRAYSHADOW = 411,
|
||||
ISAMPLER1D = 412,
|
||||
SAMPLER1DSHADOW = 413,
|
||||
SAMPLER2DRECT = 414,
|
||||
SAMPLER2DRECTSHADOW = 415,
|
||||
ISAMPLER2DRECT = 416,
|
||||
USAMPLER2DRECT = 417,
|
||||
SAMPLERBUFFER = 418,
|
||||
ISAMPLERBUFFER = 419,
|
||||
USAMPLERBUFFER = 420,
|
||||
SAMPLER2DMS = 421,
|
||||
ISAMPLER2DMS = 422,
|
||||
USAMPLER2DMS = 423,
|
||||
SAMPLER2DMSARRAY = 424,
|
||||
ISAMPLER2DMSARRAY = 425,
|
||||
USAMPLER2DMSARRAY = 426,
|
||||
SAMPLEREXTERNALOES = 427,
|
||||
SAMPLEREXTERNAL2DY2YEXT = 428,
|
||||
ISAMPLER1DARRAY = 429,
|
||||
USAMPLER1D = 430,
|
||||
USAMPLER1DARRAY = 431,
|
||||
F16SAMPLER1D = 432,
|
||||
F16SAMPLER2D = 433,
|
||||
F16SAMPLER3D = 434,
|
||||
F16SAMPLER2DRECT = 435,
|
||||
F16SAMPLERCUBE = 436,
|
||||
F16SAMPLER1DARRAY = 437,
|
||||
F16SAMPLER2DARRAY = 438,
|
||||
F16SAMPLERCUBEARRAY = 439,
|
||||
F16SAMPLERBUFFER = 440,
|
||||
F16SAMPLER2DMS = 441,
|
||||
F16SAMPLER2DMSARRAY = 442,
|
||||
F16SAMPLER1DSHADOW = 443,
|
||||
F16SAMPLER2DSHADOW = 444,
|
||||
F16SAMPLER1DARRAYSHADOW = 445,
|
||||
F16SAMPLER2DARRAYSHADOW = 446,
|
||||
F16SAMPLER2DRECTSHADOW = 447,
|
||||
F16SAMPLERCUBESHADOW = 448,
|
||||
F16SAMPLERCUBEARRAYSHADOW = 449,
|
||||
IMAGE1D = 450,
|
||||
IIMAGE1D = 451,
|
||||
UIMAGE1D = 452,
|
||||
IMAGE2D = 453,
|
||||
IIMAGE2D = 454,
|
||||
UIMAGE2D = 455,
|
||||
IMAGE3D = 456,
|
||||
IIMAGE3D = 457,
|
||||
UIMAGE3D = 458,
|
||||
IMAGE2DRECT = 459,
|
||||
IIMAGE2DRECT = 460,
|
||||
UIMAGE2DRECT = 461,
|
||||
IMAGECUBE = 462,
|
||||
IIMAGECUBE = 463,
|
||||
UIMAGECUBE = 464,
|
||||
IMAGEBUFFER = 465,
|
||||
IIMAGEBUFFER = 466,
|
||||
UIMAGEBUFFER = 467,
|
||||
IMAGE1DARRAY = 468,
|
||||
IIMAGE1DARRAY = 469,
|
||||
UIMAGE1DARRAY = 470,
|
||||
IMAGE2DARRAY = 471,
|
||||
IIMAGE2DARRAY = 472,
|
||||
UIMAGE2DARRAY = 473,
|
||||
IMAGECUBEARRAY = 474,
|
||||
IIMAGECUBEARRAY = 475,
|
||||
UIMAGECUBEARRAY = 476,
|
||||
IMAGE2DMS = 477,
|
||||
IIMAGE2DMS = 478,
|
||||
UIMAGE2DMS = 479,
|
||||
IMAGE2DMSARRAY = 480,
|
||||
IIMAGE2DMSARRAY = 481,
|
||||
UIMAGE2DMSARRAY = 482,
|
||||
F16IMAGE1D = 483,
|
||||
F16IMAGE2D = 484,
|
||||
F16IMAGE3D = 485,
|
||||
F16IMAGE2DRECT = 486,
|
||||
F16IMAGECUBE = 487,
|
||||
F16IMAGE1DARRAY = 488,
|
||||
F16IMAGE2DARRAY = 489,
|
||||
F16IMAGECUBEARRAY = 490,
|
||||
F16IMAGEBUFFER = 491,
|
||||
F16IMAGE2DMS = 492,
|
||||
F16IMAGE2DMSARRAY = 493,
|
||||
SAMPLER = 494,
|
||||
SAMPLERSHADOW = 495,
|
||||
TEXTURE1D = 496,
|
||||
TEXTURE2D = 497,
|
||||
TEXTURE3D = 498,
|
||||
TEXTURECUBE = 499,
|
||||
TEXTURE1DARRAY = 500,
|
||||
TEXTURE2DARRAY = 501,
|
||||
ITEXTURE1D = 502,
|
||||
ITEXTURE2D = 503,
|
||||
ITEXTURE3D = 504,
|
||||
ITEXTURECUBE = 505,
|
||||
ITEXTURE1DARRAY = 506,
|
||||
ITEXTURE2DARRAY = 507,
|
||||
UTEXTURE1D = 508,
|
||||
UTEXTURE2D = 509,
|
||||
UTEXTURE3D = 510,
|
||||
UTEXTURECUBE = 511,
|
||||
UTEXTURE1DARRAY = 512,
|
||||
UTEXTURE2DARRAY = 513,
|
||||
TEXTURE2DRECT = 514,
|
||||
ITEXTURE2DRECT = 515,
|
||||
UTEXTURE2DRECT = 516,
|
||||
TEXTUREBUFFER = 517,
|
||||
ITEXTUREBUFFER = 518,
|
||||
UTEXTUREBUFFER = 519,
|
||||
TEXTURECUBEARRAY = 520,
|
||||
ITEXTURECUBEARRAY = 521,
|
||||
UTEXTURECUBEARRAY = 522,
|
||||
TEXTURE2DMS = 523,
|
||||
ITEXTURE2DMS = 524,
|
||||
UTEXTURE2DMS = 525,
|
||||
TEXTURE2DMSARRAY = 526,
|
||||
ITEXTURE2DMSARRAY = 527,
|
||||
UTEXTURE2DMSARRAY = 528,
|
||||
F16TEXTURE1D = 529,
|
||||
F16TEXTURE2D = 530,
|
||||
F16TEXTURE3D = 531,
|
||||
F16TEXTURE2DRECT = 532,
|
||||
F16TEXTURECUBE = 533,
|
||||
F16TEXTURE1DARRAY = 534,
|
||||
F16TEXTURE2DARRAY = 535,
|
||||
F16TEXTURECUBEARRAY = 536,
|
||||
F16TEXTUREBUFFER = 537,
|
||||
F16TEXTURE2DMS = 538,
|
||||
F16TEXTURE2DMSARRAY = 539,
|
||||
SUBPASSINPUT = 540,
|
||||
SUBPASSINPUTMS = 541,
|
||||
ISUBPASSINPUT = 542,
|
||||
ISUBPASSINPUTMS = 543,
|
||||
USUBPASSINPUT = 544,
|
||||
USUBPASSINPUTMS = 545,
|
||||
F16SUBPASSINPUT = 546,
|
||||
F16SUBPASSINPUTMS = 547,
|
||||
LEFT_OP = 548,
|
||||
RIGHT_OP = 549,
|
||||
INC_OP = 550,
|
||||
DEC_OP = 551,
|
||||
LE_OP = 552,
|
||||
GE_OP = 553,
|
||||
EQ_OP = 554,
|
||||
NE_OP = 555,
|
||||
AND_OP = 556,
|
||||
OR_OP = 557,
|
||||
XOR_OP = 558,
|
||||
MUL_ASSIGN = 559,
|
||||
DIV_ASSIGN = 560,
|
||||
ADD_ASSIGN = 561,
|
||||
MOD_ASSIGN = 562,
|
||||
LEFT_ASSIGN = 563,
|
||||
RIGHT_ASSIGN = 564,
|
||||
AND_ASSIGN = 565,
|
||||
XOR_ASSIGN = 566,
|
||||
OR_ASSIGN = 567,
|
||||
SUB_ASSIGN = 568,
|
||||
LEFT_PAREN = 569,
|
||||
RIGHT_PAREN = 570,
|
||||
LEFT_BRACKET = 571,
|
||||
RIGHT_BRACKET = 572,
|
||||
LEFT_BRACE = 573,
|
||||
RIGHT_BRACE = 574,
|
||||
DOT = 575,
|
||||
COMMA = 576,
|
||||
COLON = 577,
|
||||
EQUAL = 578,
|
||||
SEMICOLON = 579,
|
||||
BANG = 580,
|
||||
DASH = 581,
|
||||
TILDE = 582,
|
||||
PLUS = 583,
|
||||
STAR = 584,
|
||||
SLASH = 585,
|
||||
PERCENT = 586,
|
||||
LEFT_ANGLE = 587,
|
||||
RIGHT_ANGLE = 588,
|
||||
VERTICAL_BAR = 589,
|
||||
CARET = 590,
|
||||
AMPERSAND = 591,
|
||||
QUESTION = 592,
|
||||
INVARIANT = 593,
|
||||
HIGH_PRECISION = 594,
|
||||
MEDIUM_PRECISION = 595,
|
||||
LOW_PRECISION = 596,
|
||||
PRECISION = 597,
|
||||
PACKED = 598,
|
||||
RESOURCE = 599,
|
||||
SUPERP = 600,
|
||||
FLOATCONSTANT = 601,
|
||||
INTCONSTANT = 602,
|
||||
UINTCONSTANT = 603,
|
||||
BOOLCONSTANT = 604,
|
||||
IDENTIFIER = 605,
|
||||
TYPE_NAME = 606,
|
||||
CENTROID = 607,
|
||||
IN = 608,
|
||||
OUT = 609,
|
||||
INOUT = 610,
|
||||
STRUCT = 611,
|
||||
VOID = 612,
|
||||
WHILE = 613,
|
||||
BREAK = 614,
|
||||
CONTINUE = 615,
|
||||
DO = 616,
|
||||
ELSE = 617,
|
||||
FOR = 618,
|
||||
IF = 619,
|
||||
DISCARD = 620,
|
||||
RETURN = 621,
|
||||
SWITCH = 622,
|
||||
CASE = 623,
|
||||
DEFAULT = 624,
|
||||
UNIFORM = 625,
|
||||
SHARED = 626,
|
||||
FLAT = 627,
|
||||
SMOOTH = 628,
|
||||
LAYOUT = 629,
|
||||
DOUBLECONSTANT = 630,
|
||||
INT16CONSTANT = 631,
|
||||
UINT16CONSTANT = 632,
|
||||
FLOAT16CONSTANT = 633,
|
||||
INT32CONSTANT = 634,
|
||||
UINT32CONSTANT = 635,
|
||||
INT64CONSTANT = 636,
|
||||
UINT64CONSTANT = 637,
|
||||
SUBROUTINE = 638,
|
||||
DEMOTE = 639,
|
||||
PAYLOADNV = 640,
|
||||
PAYLOADINNV = 641,
|
||||
HITATTRNV = 642,
|
||||
CALLDATANV = 643,
|
||||
CALLDATAINNV = 644,
|
||||
PATCH = 645,
|
||||
SAMPLE = 646,
|
||||
BUFFER = 647,
|
||||
NONUNIFORM = 648,
|
||||
COHERENT = 649,
|
||||
VOLATILE = 650,
|
||||
RESTRICT = 651,
|
||||
READONLY = 652,
|
||||
WRITEONLY = 653,
|
||||
DEVICECOHERENT = 654,
|
||||
QUEUEFAMILYCOHERENT = 655,
|
||||
WORKGROUPCOHERENT = 656,
|
||||
SUBGROUPCOHERENT = 657,
|
||||
NONPRIVATE = 658,
|
||||
NOPERSPECTIVE = 659,
|
||||
EXPLICITINTERPAMD = 660,
|
||||
PERVERTEXNV = 661,
|
||||
PERPRIMITIVENV = 662,
|
||||
PERVIEWNV = 663,
|
||||
PERTASKNV = 664,
|
||||
PRECISE = 665
|
||||
};
|
||||
#endif
|
||||
|
||||
|
|
@ -495,7 +497,7 @@ union YYSTYPE
|
|||
glslang::TArraySizes* typeParameters;
|
||||
} interm;
|
||||
|
||||
#line 499 "MachineIndependent/glslang_tab.cpp.h" /* yacc.c:1909 */
|
||||
#line 501 "MachineIndependent/glslang_tab.cpp.h" /* yacc.c:1909 */
|
||||
};
|
||||
|
||||
typedef union YYSTYPE YYSTYPE;
|
||||
|
|
|
|||
|
|
@ -161,6 +161,7 @@ public:
|
|||
virtual void explicitFloat32Check(const TSourceLoc&, const char* op, bool builtIn = false);
|
||||
virtual void explicitFloat64Check(const TSourceLoc&, const char* op, bool builtIn = false);
|
||||
virtual void fcoopmatCheck(const TSourceLoc&, const char* op, bool builtIn = false);
|
||||
virtual void intcoopmatCheck(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; }
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue