Web: Prune grammar and lexor down to needed subset.

About 60K smaller (20% the target size is these units of 300K).
Over 300 fewer #ifdef.

This adds a new glslang.m4 file that needs to be processed by m4 to get
the glslang.y file needed by bison.  See comment in glslang.m4 for more
detail.

This updates the updateGrammar script to do the .m4 -> .y processing,
to conditionally exclude grammar not needed for the web build.
This commit is contained in:
John Kessenich 2019-08-06 23:16:35 -06:00
parent a28f7a75d1
commit 441b2ac4d1
7 changed files with 9107 additions and 5829 deletions

View File

@ -7,6 +7,7 @@ else(WIN32)
endif(WIN32)
set(SOURCES
MachineIndependent/glslang.m4
MachineIndependent/glslang.y
MachineIndependent/glslang_tab.cpp
MachineIndependent/attribute.cpp
@ -71,15 +72,6 @@ set(HEADERS
MachineIndependent/preprocessor/PpContext.h
MachineIndependent/preprocessor/PpTokens.h)
# This might be useful for making grammar changes:
#
# find_package(BISON)
# add_custom_command(OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/MachineIndependent/glslang_tab.cpp ${CMAKE_CURRENT_SOURCE_DIR}/MachineIndependent/glslang_tab.cpp.h
# COMMAND ${BISON_EXECUTABLE} --defines=${CMAKE_CURRENT_SOURCE_DIR}/MachineIndependent/glslang_tab.cpp.h -t ${CMAKE_CURRENT_SOURCE_DIR}/MachineIndependent/glslang.y -o ${CMAKE_CURRENT_SOURCE_DIR}/MachineIndependent/glslang_tab.cpp
# MAIN_DEPENDENCY MachineIndependent/glslang.y
# WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
# set(BISON_GLSLParser_OUTPUT_SOURCE ${CMAKE_CURRENT_SOURCE_DIR}/MachineIndependent/glslang_tab.cpp)
glslang_pch(SOURCES MachineIndependent/pch.cpp)
add_library(glslang ${LIB_TYPE} ${BISON_GLSLParser_OUTPUT_SOURCE} ${SOURCES} ${HEADERS})

View File

@ -341,9 +341,14 @@ void TScanContext::fillInKeywordMap()
(*KeywordMap)["const"] = CONST;
(*KeywordMap)["uniform"] = UNIFORM;
(*KeywordMap)["nonuniformEXT"] = NONUNIFORM;
(*KeywordMap)["in"] = IN;
(*KeywordMap)["out"] = OUT;
(*KeywordMap)["smooth"] = SMOOTH;
(*KeywordMap)["flat"] = FLAT;
(*KeywordMap)["centroid"] = CENTROID;
(*KeywordMap)["invariant"] = INVARIANT;
(*KeywordMap)["packed"] = PACKED;
(*KeywordMap)["resource"] = RESOURCE;
(*KeywordMap)["inout"] = INOUT;
(*KeywordMap)["struct"] = STRUCT;
(*KeywordMap)["break"] = BREAK;
@ -356,7 +361,6 @@ void TScanContext::fillInKeywordMap()
(*KeywordMap)["default"] = DEFAULT;
(*KeywordMap)["if"] = IF;
(*KeywordMap)["else"] = ELSE;
(*KeywordMap)["demote"] = DEMOTE;
(*KeywordMap)["discard"] = DISCARD;
(*KeywordMap)["return"] = RETURN;
(*KeywordMap)["void"] = VOID;
@ -377,8 +381,33 @@ void TScanContext::fillInKeywordMap()
(*KeywordMap)["mat4"] = MAT4;
(*KeywordMap)["true"] = BOOLCONSTANT;
(*KeywordMap)["false"] = BOOLCONSTANT;
(*KeywordMap)["layout"] = LAYOUT;
(*KeywordMap)["shared"] = SHARED;
(*KeywordMap)["highp"] = HIGH_PRECISION;
(*KeywordMap)["mediump"] = MEDIUM_PRECISION;
(*KeywordMap)["lowp"] = LOW_PRECISION;
(*KeywordMap)["superp"] = SUPERP;
(*KeywordMap)["precision"] = PRECISION;
(*KeywordMap)["mat2x2"] = MAT2X2;
(*KeywordMap)["mat2x3"] = MAT2X3;
(*KeywordMap)["mat2x4"] = MAT2X4;
(*KeywordMap)["mat3x2"] = MAT3X2;
(*KeywordMap)["mat3x3"] = MAT3X3;
(*KeywordMap)["mat3x4"] = MAT3X4;
(*KeywordMap)["mat4x2"] = MAT4X2;
(*KeywordMap)["mat4x3"] = MAT4X3;
(*KeywordMap)["mat4x4"] = MAT4X4;
(*KeywordMap)["uint"] = UINT;
(*KeywordMap)["uvec2"] = UVEC2;
(*KeywordMap)["uvec3"] = UVEC3;
(*KeywordMap)["uvec4"] = UVEC4;
#ifndef GLSLANG_WEB
(*KeywordMap)["nonuniformEXT"] = NONUNIFORM;
(*KeywordMap)["demote"] = DEMOTE;
(*KeywordMap)["attribute"] = ATTRIBUTE;
(*KeywordMap)["varying"] = VARYING;
(*KeywordMap)["noperspective"] = NOPERSPECTIVE;
(*KeywordMap)["buffer"] = BUFFER;
(*KeywordMap)["coherent"] = COHERENT;
(*KeywordMap)["devicecoherent"] = DEVICECOHERENT;
@ -391,24 +420,9 @@ void TScanContext::fillInKeywordMap()
(*KeywordMap)["writeonly"] = WRITEONLY;
(*KeywordMap)["atomic_uint"] = ATOMIC_UINT;
(*KeywordMap)["volatile"] = VOLATILE;
(*KeywordMap)["layout"] = LAYOUT;
(*KeywordMap)["shared"] = SHARED;
(*KeywordMap)["patch"] = PATCH;
(*KeywordMap)["sample"] = SAMPLE;
(*KeywordMap)["subroutine"] = SUBROUTINE;
(*KeywordMap)["highp"] = HIGH_PRECISION;
(*KeywordMap)["mediump"] = MEDIUM_PRECISION;
(*KeywordMap)["lowp"] = LOW_PRECISION;
(*KeywordMap)["precision"] = PRECISION;
(*KeywordMap)["mat2x2"] = MAT2X2;
(*KeywordMap)["mat2x3"] = MAT2X3;
(*KeywordMap)["mat2x4"] = MAT2X4;
(*KeywordMap)["mat3x2"] = MAT3X2;
(*KeywordMap)["mat3x3"] = MAT3X3;
(*KeywordMap)["mat3x4"] = MAT3X4;
(*KeywordMap)["mat4x2"] = MAT4X2;
(*KeywordMap)["mat4x3"] = MAT4X3;
(*KeywordMap)["mat4x4"] = MAT4X4;
(*KeywordMap)["dmat2"] = DMAT2;
(*KeywordMap)["dmat3"] = DMAT3;
(*KeywordMap)["dmat4"] = DMAT4;
@ -458,11 +472,6 @@ void TScanContext::fillInKeywordMap()
(*KeywordMap)["dvec2"] = DVEC2;
(*KeywordMap)["dvec3"] = DVEC3;
(*KeywordMap)["dvec4"] = DVEC4;
(*KeywordMap)["uint"] = UINT;
(*KeywordMap)["uvec2"] = UVEC2;
(*KeywordMap)["uvec3"] = UVEC3;
(*KeywordMap)["uvec4"] = UVEC4;
(*KeywordMap)["int64_t"] = INT64_T;
(*KeywordMap)["uint64_t"] = UINT64_T;
(*KeywordMap)["i64vec2"] = I64VEC2;
@ -549,6 +558,7 @@ void TScanContext::fillInKeywordMap()
(*KeywordMap)["f64mat4x2"] = F64MAT4X2;
(*KeywordMap)["f64mat4x3"] = F64MAT4X3;
(*KeywordMap)["f64mat4x4"] = F64MAT4X4;
#endif
(*KeywordMap)["sampler2D"] = SAMPLER2D;
(*KeywordMap)["samplerCube"] = SAMPLERCUBE;
@ -556,12 +566,6 @@ void TScanContext::fillInKeywordMap()
(*KeywordMap)["samplerCubeArrayShadow"] = SAMPLERCUBEARRAYSHADOW;
(*KeywordMap)["isamplerCubeArray"] = ISAMPLERCUBEARRAY;
(*KeywordMap)["usamplerCubeArray"] = USAMPLERCUBEARRAY;
(*KeywordMap)["sampler1DArrayShadow"] = SAMPLER1DARRAYSHADOW;
(*KeywordMap)["isampler1DArray"] = ISAMPLER1DARRAY;
(*KeywordMap)["usampler1D"] = USAMPLER1D;
(*KeywordMap)["isampler1D"] = ISAMPLER1D;
(*KeywordMap)["usampler1DArray"] = USAMPLER1DARRAY;
(*KeywordMap)["samplerBuffer"] = SAMPLERBUFFER;
(*KeywordMap)["samplerCubeShadow"] = SAMPLERCUBESHADOW;
(*KeywordMap)["sampler2DArray"] = SAMPLER2DARRAY;
(*KeywordMap)["sampler2DArrayShadow"] = SAMPLER2DARRAYSHADOW;
@ -573,6 +577,16 @@ void TScanContext::fillInKeywordMap()
(*KeywordMap)["usampler3D"] = USAMPLER3D;
(*KeywordMap)["usamplerCube"] = USAMPLERCUBE;
(*KeywordMap)["usampler2DArray"] = USAMPLER2DARRAY;
(*KeywordMap)["sampler3D"] = SAMPLER3D;
(*KeywordMap)["sampler2DShadow"] = SAMPLER2DSHADOW;
#ifndef GLSLANG_WEB
(*KeywordMap)["sampler1DArrayShadow"] = SAMPLER1DARRAYSHADOW;
(*KeywordMap)["isampler1DArray"] = ISAMPLER1DARRAY;
(*KeywordMap)["usampler1D"] = USAMPLER1D;
(*KeywordMap)["isampler1D"] = ISAMPLER1D;
(*KeywordMap)["usampler1DArray"] = USAMPLER1DARRAY;
(*KeywordMap)["samplerBuffer"] = SAMPLERBUFFER;
(*KeywordMap)["isampler2DRect"] = ISAMPLER2DRECT;
(*KeywordMap)["usampler2DRect"] = USAMPLER2DRECT;
(*KeywordMap)["isamplerBuffer"] = ISAMPLERBUFFER;
@ -585,8 +599,6 @@ void TScanContext::fillInKeywordMap()
(*KeywordMap)["usampler2DMSArray"] = USAMPLER2DMSARRAY;
(*KeywordMap)["sampler1D"] = SAMPLER1D;
(*KeywordMap)["sampler1DShadow"] = SAMPLER1DSHADOW;
(*KeywordMap)["sampler3D"] = SAMPLER3D;
(*KeywordMap)["sampler2DShadow"] = SAMPLER2DSHADOW;
(*KeywordMap)["sampler2DRect"] = SAMPLER2DRECT;
(*KeywordMap)["sampler2DRectShadow"] = SAMPLER2DRECTSHADOW;
(*KeywordMap)["sampler1DArray"] = SAMPLER1DARRAY;
@ -639,7 +651,6 @@ void TScanContext::fillInKeywordMap()
(*KeywordMap)["usubpassInput"] = USUBPASSINPUT;
(*KeywordMap)["usubpassInputMS"] = USUBPASSINPUTMS;
#ifdef AMD_EXTENSIONS
(*KeywordMap)["f16sampler1D"] = F16SAMPLER1D;
(*KeywordMap)["f16sampler2D"] = F16SAMPLER2D;
(*KeywordMap)["f16sampler3D"] = F16SAMPLER3D;
@ -685,25 +696,10 @@ void TScanContext::fillInKeywordMap()
(*KeywordMap)["f16subpassInput"] = F16SUBPASSINPUT;
(*KeywordMap)["f16subpassInputMS"] = F16SUBPASSINPUTMS;
#endif
(*KeywordMap)["noperspective"] = NOPERSPECTIVE;
(*KeywordMap)["smooth"] = SMOOTH;
(*KeywordMap)["flat"] = FLAT;
#ifdef AMD_EXTENSIONS
(*KeywordMap)["__explicitInterpAMD"] = EXPLICITINTERPAMD;
#endif
(*KeywordMap)["centroid"] = CENTROID;
#ifdef NV_EXTENSIONS
(*KeywordMap)["pervertexNV"] = PERVERTEXNV;
#endif
(*KeywordMap)["precise"] = PRECISE;
(*KeywordMap)["invariant"] = INVARIANT;
(*KeywordMap)["packed"] = PACKED;
(*KeywordMap)["resource"] = RESOURCE;
(*KeywordMap)["superp"] = SUPERP;
#ifdef NV_EXTENSIONS
(*KeywordMap)["rayPayloadNV"] = PAYLOADNV;
(*KeywordMap)["rayPayloadInNV"] = PAYLOADINNV;
(*KeywordMap)["hitAttributeNV"] = HITATTRNV;
@ -713,7 +709,6 @@ void TScanContext::fillInKeywordMap()
(*KeywordMap)["perprimitiveNV"] = PERPRIMITIVENV;
(*KeywordMap)["perviewNV"] = PERVIEWNV;
(*KeywordMap)["taskNV"] = PERTASKNV;
#endif
(*KeywordMap)["fcoopmatNV"] = FCOOPMATNV;
@ -756,6 +751,7 @@ void TScanContext::fillInKeywordMap()
ReservedSet->insert("cast");
ReservedSet->insert("namespace");
ReservedSet->insert("using");
#endif
}
void TScanContext::deleteKeywordMap()
@ -842,13 +838,15 @@ int TScanContext::tokenize(TPpContext* pp, TParserToken& token)
case PpAtomConstInt: parserToken->sType.lex.i = ppToken.ival; return INTCONSTANT;
case PpAtomConstUint: parserToken->sType.lex.i = ppToken.ival; return UINTCONSTANT;
case PpAtomConstFloat: parserToken->sType.lex.d = ppToken.dval; return FLOATCONSTANT;
#ifndef GLSLANG_WEB
case PpAtomConstInt16: parserToken->sType.lex.i = ppToken.ival; return INT16CONSTANT;
case PpAtomConstUint16: parserToken->sType.lex.i = ppToken.ival; return UINT16CONSTANT;
case PpAtomConstInt64: parserToken->sType.lex.i64 = ppToken.i64val; return INT64CONSTANT;
case PpAtomConstUint64: parserToken->sType.lex.i64 = ppToken.i64val; return UINT64CONSTANT;
case PpAtomConstFloat: parserToken->sType.lex.d = ppToken.dval; return FLOATCONSTANT;
case PpAtomConstDouble: parserToken->sType.lex.d = ppToken.dval; return DOUBLECONSTANT;
case PpAtomConstFloat16: parserToken->sType.lex.d = ppToken.dval; return FLOAT16CONSTANT;
#endif
case PpAtomIdentifier:
{
int token = tokenizeIdentifier();
@ -870,8 +868,10 @@ int TScanContext::tokenize(TPpContext* pp, TParserToken& token)
int TScanContext::tokenizeIdentifier()
{
#ifndef GLSLANG_WEB
if (ReservedSet->find(tokenText) != ReservedSet->end())
return reservedWord();
#endif
auto it = KeywordMap->find(tokenText);
if (it == KeywordMap->end()) {
@ -902,12 +902,6 @@ int TScanContext::tokenizeIdentifier()
afterStruct = true;
return keyword;
case NONUNIFORM:
if (parseContext.extensionTurnedOn(E_GL_EXT_nonuniform_qualifier))
return keyword;
else
return identifierOrType();
case SWITCH:
case DEFAULT:
if ((parseContext.profile == EEsProfile && parseContext.version < 300) ||
@ -943,20 +937,66 @@ int TScanContext::tokenizeIdentifier()
parserToken->sType.lex.b = false;
return keyword;
case SMOOTH:
if ((parseContext.profile == EEsProfile && parseContext.version < 300) ||
(parseContext.profile != EEsProfile && parseContext.version < 130))
return identifierOrType();
return keyword;
case FLAT:
if (parseContext.profile == EEsProfile && parseContext.version < 300)
reservedWord();
else if (parseContext.profile != EEsProfile && parseContext.version < 130)
return identifierOrType();
return keyword;
case CENTROID:
if (parseContext.version < 120)
return identifierOrType();
return keyword;
case INVARIANT:
if (parseContext.profile != EEsProfile && parseContext.version < 120)
return identifierOrType();
return keyword;
case PACKED:
if ((parseContext.profile == EEsProfile && parseContext.version < 300) ||
(parseContext.profile != EEsProfile && parseContext.version < 330))
return reservedWord();
return identifierOrType();
case RESOURCE:
{
bool reserved = (parseContext.profile == EEsProfile && parseContext.version >= 300) ||
(parseContext.profile != EEsProfile && parseContext.version >= 420);
return identifierOrReserved(reserved);
}
case SUPERP:
{
bool reserved = parseContext.profile == EEsProfile || parseContext.version >= 130;
return identifierOrReserved(reserved);
}
#ifndef GLSLANG_WEB
case NOPERSPECTIVE:
if (parseContext.profile == EEsProfile && parseContext.version >= 300 &&
parseContext.extensionTurnedOn(E_GL_NV_shader_noperspective_interpolation))
return keyword;
return es30ReservedFromGLSL(130);
case NONUNIFORM:
if (parseContext.extensionTurnedOn(E_GL_EXT_nonuniform_qualifier))
return keyword;
else
return identifierOrType();
case ATTRIBUTE:
case VARYING:
if (parseContext.profile == EEsProfile && parseContext.version >= 300)
reservedWord();
return keyword;
case BUFFER:
afterBuffer = true;
if ((parseContext.profile == EEsProfile && parseContext.version < 310) ||
(parseContext.profile != EEsProfile && parseContext.version < 430))
return identifierOrType();
return keyword;
#ifdef NV_EXTENSIONS
case PAYLOADNV:
case PAYLOADINNV:
case HITATTRNV:
@ -968,8 +1008,6 @@ int TScanContext::tokenizeIdentifier()
&& parseContext.extensionTurnedOn(E_GL_NV_ray_tracing)))
return keyword;
return identifierOrType();
#endif
case ATOMIC_UINT:
if ((parseContext.profile == EEsProfile && parseContext.version >= 310) ||
parseContext.extensionTurnedOn(E_GL_ARB_shader_atomic_counters))
@ -988,7 +1026,6 @@ int TScanContext::tokenizeIdentifier()
if (parseContext.profile == EEsProfile && parseContext.version >= 310)
return keyword;
return es30ReservedFromGLSL(parseContext.extensionTurnedOn(E_GL_ARB_shader_image_load_store) ? 130 : 420);
case VOLATILE:
if (parseContext.profile == EEsProfile && parseContext.version >= 310)
return keyword;
@ -996,24 +1033,6 @@ int TScanContext::tokenizeIdentifier()
(parseContext.version < 420 && ! parseContext.extensionTurnedOn(E_GL_ARB_shader_image_load_store))))
reservedWord();
return keyword;
case LAYOUT:
{
const int numLayoutExts = 2;
const char* layoutExts[numLayoutExts] = { E_GL_ARB_shading_language_420pack,
E_GL_ARB_explicit_attrib_location };
if ((parseContext.profile == EEsProfile && parseContext.version < 300) ||
(parseContext.profile != EEsProfile && parseContext.version < 140 &&
! parseContext.extensionsTurnedOn(numLayoutExts, layoutExts)))
return identifierOrType();
return keyword;
}
case SHARED:
if ((parseContext.profile == EEsProfile && parseContext.version < 300) ||
(parseContext.profile != EEsProfile && parseContext.version < 140))
return identifierOrType();
return keyword;
case PATCH:
if (parseContext.symbolTable.atBuiltInLevel() ||
(parseContext.profile == EEsProfile &&
@ -1032,6 +1051,24 @@ int TScanContext::tokenizeIdentifier()
case SUBROUTINE:
return es30ReservedFromGLSL(400);
#endif
case LAYOUT:
{
const int numLayoutExts = 2;
const char* layoutExts[numLayoutExts] = { E_GL_ARB_shading_language_420pack,
E_GL_ARB_explicit_attrib_location };
if ((parseContext.profile == EEsProfile && parseContext.version < 300) ||
(parseContext.profile != EEsProfile && parseContext.version < 140 &&
! parseContext.extensionsTurnedOn(numLayoutExts, layoutExts)))
return identifierOrType();
return keyword;
}
case SHARED:
if ((parseContext.profile == EEsProfile && parseContext.version < 300) ||
(parseContext.profile != EEsProfile && parseContext.version < 140))
return identifierOrType();
return keyword;
case HIGH_PRECISION:
case MEDIUM_PRECISION:
@ -1050,6 +1087,7 @@ int TScanContext::tokenizeIdentifier()
case MAT4X4:
return matNxM();
#ifndef GLSLANG_WEB
case DMAT2:
case DMAT3:
case DMAT4:
@ -1172,10 +1210,7 @@ int TScanContext::tokenizeIdentifier()
afterType = true;
if (parseContext.symbolTable.atBuiltInLevel() ||
(parseContext.profile != EEsProfile && parseContext.version >= 450 &&
(
#ifdef AMD_EXTENSIONS
parseContext.extensionTurnedOn(E_GL_AMD_gpu_shader_int16) ||
#endif
(parseContext.extensionTurnedOn(E_GL_AMD_gpu_shader_int16) ||
parseContext.extensionTurnedOn(E_GL_EXT_shader_16bit_storage) ||
parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types) ||
parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types_int16))))
@ -1251,10 +1286,7 @@ int TScanContext::tokenizeIdentifier()
afterType = true;
if (parseContext.symbolTable.atBuiltInLevel() ||
(parseContext.profile != EEsProfile && parseContext.version >= 450 &&
(
#ifdef AMD_EXTENSIONS
parseContext.extensionTurnedOn(E_GL_AMD_gpu_shader_half_float) ||
#endif
(parseContext.extensionTurnedOn(E_GL_AMD_gpu_shader_half_float) ||
parseContext.extensionTurnedOn(E_GL_EXT_shader_16bit_storage) ||
parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types) ||
parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types_float16))))
@ -1277,15 +1309,13 @@ int TScanContext::tokenizeIdentifier()
afterType = true;
if (parseContext.symbolTable.atBuiltInLevel() ||
(parseContext.profile != EEsProfile && parseContext.version >= 450 &&
(
#ifdef AMD_EXTENSIONS
parseContext.extensionTurnedOn(E_GL_AMD_gpu_shader_half_float) ||
#endif
(parseContext.extensionTurnedOn(E_GL_AMD_gpu_shader_half_float) ||
parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types) ||
parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types_float16))))
return keyword;
return identifierOrType();
#endif
case SAMPLERCUBEARRAY:
case SAMPLERCUBEARRAYSHADOW:
@ -1299,14 +1329,6 @@ int TScanContext::tokenizeIdentifier()
reservedWord();
return keyword;
case ISAMPLER1D:
case ISAMPLER1DARRAY:
case SAMPLER1DARRAYSHADOW:
case USAMPLER1D:
case USAMPLER1DARRAY:
afterType = true;
return es30ReservedFromGLSL(130);
case UINT:
case UVEC2:
case UVEC3:
@ -1325,6 +1347,30 @@ int TScanContext::tokenizeIdentifier()
afterType = true;
return nonreservedKeyword(300, 130);
case SAMPLER3D:
afterType = true;
if (parseContext.profile == EEsProfile && parseContext.version < 300) {
if (!parseContext.extensionTurnedOn(E_GL_OES_texture_3D))
reservedWord();
}
return keyword;
case SAMPLER2DSHADOW:
afterType = true;
if (parseContext.profile == EEsProfile && parseContext.version < 300) {
if (!parseContext.extensionTurnedOn(E_GL_EXT_shadow_samplers))
reservedWord();
}
return keyword;
#ifndef GLSLANG_WEB
case ISAMPLER1D:
case ISAMPLER1DARRAY:
case SAMPLER1DARRAYSHADOW:
case USAMPLER1D:
case USAMPLER1DARRAY:
afterType = true;
return es30ReservedFromGLSL(130);
case ISAMPLER2DRECT:
case USAMPLER2DRECT:
afterType = true;
@ -1369,22 +1415,6 @@ int TScanContext::tokenizeIdentifier()
reservedWord();
return keyword;
case SAMPLER3D:
afterType = true;
if (parseContext.profile == EEsProfile && parseContext.version < 300) {
if (!parseContext.extensionTurnedOn(E_GL_OES_texture_3D))
reservedWord();
}
return keyword;
case SAMPLER2DSHADOW:
afterType = true;
if (parseContext.profile == EEsProfile && parseContext.version < 300) {
if (!parseContext.extensionTurnedOn(E_GL_EXT_shadow_samplers))
reservedWord();
}
return keyword;
case SAMPLER2DRECT:
case SAMPLER2DRECTSHADOW:
afterType = true;
@ -1473,7 +1503,6 @@ int TScanContext::tokenizeIdentifier()
else
return identifierOrType();
#ifdef AMD_EXTENSIONS
case F16SAMPLER1D:
case F16SAMPLER2D:
case F16SAMPLER3D:
@ -1525,50 +1554,19 @@ int TScanContext::tokenizeIdentifier()
parseContext.profile != EEsProfile && parseContext.version >= 450))
return keyword;
return identifierOrType();
#endif
case NOPERSPECTIVE:
#ifdef NV_EXTENSIONS
if (parseContext.profile == EEsProfile && parseContext.version >= 300 &&
parseContext.extensionTurnedOn(E_GL_NV_shader_noperspective_interpolation))
return keyword;
#endif
return es30ReservedFromGLSL(130);
case SMOOTH:
if ((parseContext.profile == EEsProfile && parseContext.version < 300) ||
(parseContext.profile != EEsProfile && parseContext.version < 130))
return identifierOrType();
return keyword;
#ifdef AMD_EXTENSIONS
case EXPLICITINTERPAMD:
if (parseContext.profile != EEsProfile && parseContext.version >= 450 &&
parseContext.extensionTurnedOn(E_GL_AMD_shader_explicit_vertex_parameter))
return keyword;
return identifierOrType();
#endif
#ifdef NV_EXTENSIONS
case PERVERTEXNV:
if (((parseContext.profile != EEsProfile && parseContext.version >= 450) ||
(parseContext.profile == EEsProfile && parseContext.version >= 320)) &&
parseContext.extensionTurnedOn(E_GL_NV_fragment_shader_barycentric))
return keyword;
return identifierOrType();
#endif
case FLAT:
if (parseContext.profile == EEsProfile && parseContext.version < 300)
reservedWord();
else if (parseContext.profile != EEsProfile && parseContext.version < 130)
return identifierOrType();
return keyword;
case CENTROID:
if (parseContext.version < 120)
return identifierOrType();
return keyword;
case PRECISE:
if ((parseContext.profile == EEsProfile &&
@ -1581,30 +1579,6 @@ int TScanContext::tokenizeIdentifier()
}
return identifierOrType();
case INVARIANT:
if (parseContext.profile != EEsProfile && parseContext.version < 120)
return identifierOrType();
return keyword;
case PACKED:
if ((parseContext.profile == EEsProfile && parseContext.version < 300) ||
(parseContext.profile != EEsProfile && parseContext.version < 330))
return reservedWord();
return identifierOrType();
case RESOURCE:
{
bool reserved = (parseContext.profile == EEsProfile && parseContext.version >= 300) ||
(parseContext.profile != EEsProfile && parseContext.version >= 420);
return identifierOrReserved(reserved);
}
case SUPERP:
{
bool reserved = parseContext.profile == EEsProfile || parseContext.version >= 130;
return identifierOrReserved(reserved);
}
#ifdef NV_EXTENSIONS
case PERPRIMITIVENV:
case PERVIEWNV:
case PERTASKNV:
@ -1613,7 +1587,6 @@ int TScanContext::tokenizeIdentifier()
parseContext.extensionTurnedOn(E_GL_NV_mesh_shader))
return keyword;
return identifierOrType();
#endif
case FCOOPMATNV:
afterType = true;
@ -1627,6 +1600,7 @@ int TScanContext::tokenizeIdentifier()
return keyword;
else
return identifierOrType();
#endif
default:
parseContext.infoSink.info.message(EPrefixInternalError, "Unknown glslang keyword", loc);

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -45,412 +45,412 @@ extern int yydebug;
# define YYTOKENTYPE
enum yytokentype
{
ATTRIBUTE = 258,
VARYING = 259,
FLOAT16_T = 260,
FLOAT = 261,
FLOAT32_T = 262,
DOUBLE = 263,
FLOAT64_T = 264,
CONST = 265,
BOOL = 266,
INT = 267,
UINT = 268,
INT64_T = 269,
UINT64_T = 270,
INT32_T = 271,
UINT32_T = 272,
INT16_T = 273,
UINT16_T = 274,
INT8_T = 275,
UINT8_T = 276,
BREAK = 277,
CONTINUE = 278,
DO = 279,
ELSE = 280,
FOR = 281,
IF = 282,
DISCARD = 283,
RETURN = 284,
SWITCH = 285,
CASE = 286,
DEFAULT = 287,
SUBROUTINE = 288,
DEMOTE = 289,
BVEC2 = 290,
BVEC3 = 291,
BVEC4 = 292,
IVEC2 = 293,
IVEC3 = 294,
IVEC4 = 295,
UVEC2 = 296,
UVEC3 = 297,
UVEC4 = 298,
I64VEC2 = 299,
I64VEC3 = 300,
I64VEC4 = 301,
U64VEC2 = 302,
U64VEC3 = 303,
U64VEC4 = 304,
I32VEC2 = 305,
I32VEC3 = 306,
I32VEC4 = 307,
U32VEC2 = 308,
U32VEC3 = 309,
U32VEC4 = 310,
I16VEC2 = 311,
I16VEC3 = 312,
I16VEC4 = 313,
U16VEC2 = 314,
U16VEC3 = 315,
U16VEC4 = 316,
I8VEC2 = 317,
I8VEC3 = 318,
I8VEC4 = 319,
U8VEC2 = 320,
U8VEC3 = 321,
U8VEC4 = 322,
VEC2 = 323,
VEC3 = 324,
VEC4 = 325,
MAT2 = 326,
MAT3 = 327,
MAT4 = 328,
CENTROID = 329,
IN = 330,
OUT = 331,
INOUT = 332,
UNIFORM = 333,
PATCH = 334,
SAMPLE = 335,
BUFFER = 336,
SHARED = 337,
NONUNIFORM = 338,
PAYLOADNV = 339,
PAYLOADINNV = 340,
HITATTRNV = 341,
CALLDATANV = 342,
CALLDATAINNV = 343,
COHERENT = 344,
VOLATILE = 345,
RESTRICT = 346,
READONLY = 347,
WRITEONLY = 348,
DEVICECOHERENT = 349,
QUEUEFAMILYCOHERENT = 350,
WORKGROUPCOHERENT = 351,
SUBGROUPCOHERENT = 352,
NONPRIVATE = 353,
DVEC2 = 354,
DVEC3 = 355,
DVEC4 = 356,
DMAT2 = 357,
DMAT3 = 358,
DMAT4 = 359,
F16VEC2 = 360,
F16VEC3 = 361,
F16VEC4 = 362,
F16MAT2 = 363,
F16MAT3 = 364,
F16MAT4 = 365,
F32VEC2 = 366,
F32VEC3 = 367,
F32VEC4 = 368,
F32MAT2 = 369,
F32MAT3 = 370,
F32MAT4 = 371,
F64VEC2 = 372,
F64VEC3 = 373,
F64VEC4 = 374,
F64MAT2 = 375,
F64MAT3 = 376,
F64MAT4 = 377,
NOPERSPECTIVE = 378,
FLAT = 379,
SMOOTH = 380,
LAYOUT = 381,
EXPLICITINTERPAMD = 382,
PERVERTEXNV = 383,
PERPRIMITIVENV = 384,
PERVIEWNV = 385,
PERTASKNV = 386,
MAT2X2 = 387,
MAT2X3 = 388,
MAT2X4 = 389,
MAT3X2 = 390,
MAT3X3 = 391,
MAT3X4 = 392,
MAT4X2 = 393,
MAT4X3 = 394,
MAT4X4 = 395,
DMAT2X2 = 396,
DMAT2X3 = 397,
DMAT2X4 = 398,
DMAT3X2 = 399,
DMAT3X3 = 400,
DMAT3X4 = 401,
DMAT4X2 = 402,
DMAT4X3 = 403,
DMAT4X4 = 404,
F16MAT2X2 = 405,
F16MAT2X3 = 406,
F16MAT2X4 = 407,
F16MAT3X2 = 408,
F16MAT3X3 = 409,
F16MAT3X4 = 410,
F16MAT4X2 = 411,
F16MAT4X3 = 412,
F16MAT4X4 = 413,
F32MAT2X2 = 414,
F32MAT2X3 = 415,
F32MAT2X4 = 416,
F32MAT3X2 = 417,
F32MAT3X3 = 418,
F32MAT3X4 = 419,
F32MAT4X2 = 420,
F32MAT4X3 = 421,
F32MAT4X4 = 422,
F64MAT2X2 = 423,
F64MAT2X3 = 424,
F64MAT2X4 = 425,
F64MAT3X2 = 426,
F64MAT3X3 = 427,
F64MAT3X4 = 428,
F64MAT4X2 = 429,
F64MAT4X3 = 430,
F64MAT4X4 = 431,
ATOMIC_UINT = 432,
ACCSTRUCTNV = 433,
FCOOPMATNV = 434,
SAMPLER1D = 435,
SAMPLER2D = 436,
SAMPLER3D = 437,
SAMPLERCUBE = 438,
SAMPLER1DSHADOW = 439,
SAMPLER2DSHADOW = 440,
SAMPLERCUBESHADOW = 441,
SAMPLER1DARRAY = 442,
SAMPLER2DARRAY = 443,
SAMPLER1DARRAYSHADOW = 444,
SAMPLER2DARRAYSHADOW = 445,
ISAMPLER1D = 446,
ISAMPLER2D = 447,
ISAMPLER3D = 448,
ISAMPLERCUBE = 449,
ISAMPLER1DARRAY = 450,
ISAMPLER2DARRAY = 451,
USAMPLER1D = 452,
USAMPLER2D = 453,
USAMPLER3D = 454,
USAMPLERCUBE = 455,
USAMPLER1DARRAY = 456,
USAMPLER2DARRAY = 457,
SAMPLER2DRECT = 458,
SAMPLER2DRECTSHADOW = 459,
ISAMPLER2DRECT = 460,
USAMPLER2DRECT = 461,
SAMPLERBUFFER = 462,
ISAMPLERBUFFER = 463,
USAMPLERBUFFER = 464,
SAMPLERCUBEARRAY = 465,
SAMPLERCUBEARRAYSHADOW = 466,
ISAMPLERCUBEARRAY = 467,
USAMPLERCUBEARRAY = 468,
SAMPLER2DMS = 469,
ISAMPLER2DMS = 470,
USAMPLER2DMS = 471,
SAMPLER2DMSARRAY = 472,
ISAMPLER2DMSARRAY = 473,
USAMPLER2DMSARRAY = 474,
SAMPLEREXTERNALOES = 475,
SAMPLEREXTERNAL2DY2YEXT = 476,
F16SAMPLER1D = 477,
F16SAMPLER2D = 478,
F16SAMPLER3D = 479,
F16SAMPLER2DRECT = 480,
F16SAMPLERCUBE = 481,
F16SAMPLER1DARRAY = 482,
F16SAMPLER2DARRAY = 483,
F16SAMPLERCUBEARRAY = 484,
F16SAMPLERBUFFER = 485,
F16SAMPLER2DMS = 486,
F16SAMPLER2DMSARRAY = 487,
F16SAMPLER1DSHADOW = 488,
F16SAMPLER2DSHADOW = 489,
F16SAMPLER1DARRAYSHADOW = 490,
F16SAMPLER2DARRAYSHADOW = 491,
F16SAMPLER2DRECTSHADOW = 492,
F16SAMPLERCUBESHADOW = 493,
F16SAMPLERCUBEARRAYSHADOW = 494,
SAMPLER = 495,
SAMPLERSHADOW = 496,
TEXTURE1D = 497,
TEXTURE2D = 498,
TEXTURE3D = 499,
TEXTURECUBE = 500,
TEXTURE1DARRAY = 501,
TEXTURE2DARRAY = 502,
ITEXTURE1D = 503,
ITEXTURE2D = 504,
ITEXTURE3D = 505,
ITEXTURECUBE = 506,
ITEXTURE1DARRAY = 507,
ITEXTURE2DARRAY = 508,
UTEXTURE1D = 509,
UTEXTURE2D = 510,
UTEXTURE3D = 511,
UTEXTURECUBE = 512,
UTEXTURE1DARRAY = 513,
UTEXTURE2DARRAY = 514,
TEXTURE2DRECT = 515,
ITEXTURE2DRECT = 516,
UTEXTURE2DRECT = 517,
TEXTUREBUFFER = 518,
ITEXTUREBUFFER = 519,
UTEXTUREBUFFER = 520,
TEXTURECUBEARRAY = 521,
ITEXTURECUBEARRAY = 522,
UTEXTURECUBEARRAY = 523,
TEXTURE2DMS = 524,
ITEXTURE2DMS = 525,
UTEXTURE2DMS = 526,
TEXTURE2DMSARRAY = 527,
ITEXTURE2DMSARRAY = 528,
UTEXTURE2DMSARRAY = 529,
F16TEXTURE1D = 530,
F16TEXTURE2D = 531,
F16TEXTURE3D = 532,
F16TEXTURE2DRECT = 533,
F16TEXTURECUBE = 534,
F16TEXTURE1DARRAY = 535,
F16TEXTURE2DARRAY = 536,
F16TEXTURECUBEARRAY = 537,
F16TEXTUREBUFFER = 538,
F16TEXTURE2DMS = 539,
F16TEXTURE2DMSARRAY = 540,
SUBPASSINPUT = 541,
SUBPASSINPUTMS = 542,
ISUBPASSINPUT = 543,
ISUBPASSINPUTMS = 544,
USUBPASSINPUT = 545,
USUBPASSINPUTMS = 546,
F16SUBPASSINPUT = 547,
F16SUBPASSINPUTMS = 548,
IMAGE1D = 549,
IIMAGE1D = 550,
UIMAGE1D = 551,
IMAGE2D = 552,
IIMAGE2D = 553,
UIMAGE2D = 554,
IMAGE3D = 555,
IIMAGE3D = 556,
UIMAGE3D = 557,
IMAGE2DRECT = 558,
IIMAGE2DRECT = 559,
UIMAGE2DRECT = 560,
IMAGECUBE = 561,
IIMAGECUBE = 562,
UIMAGECUBE = 563,
IMAGEBUFFER = 564,
IIMAGEBUFFER = 565,
UIMAGEBUFFER = 566,
IMAGE1DARRAY = 567,
IIMAGE1DARRAY = 568,
UIMAGE1DARRAY = 569,
IMAGE2DARRAY = 570,
IIMAGE2DARRAY = 571,
UIMAGE2DARRAY = 572,
IMAGECUBEARRAY = 573,
IIMAGECUBEARRAY = 574,
UIMAGECUBEARRAY = 575,
IMAGE2DMS = 576,
IIMAGE2DMS = 577,
UIMAGE2DMS = 578,
IMAGE2DMSARRAY = 579,
IIMAGE2DMSARRAY = 580,
UIMAGE2DMSARRAY = 581,
F16IMAGE1D = 582,
F16IMAGE2D = 583,
F16IMAGE3D = 584,
F16IMAGE2DRECT = 585,
F16IMAGECUBE = 586,
F16IMAGE1DARRAY = 587,
F16IMAGE2DARRAY = 588,
F16IMAGECUBEARRAY = 589,
F16IMAGEBUFFER = 590,
F16IMAGE2DMS = 591,
F16IMAGE2DMSARRAY = 592,
STRUCT = 593,
VOID = 594,
WHILE = 595,
IDENTIFIER = 596,
TYPE_NAME = 597,
FLOATCONSTANT = 598,
DOUBLECONSTANT = 599,
INT16CONSTANT = 600,
UINT16CONSTANT = 601,
INT32CONSTANT = 602,
UINT32CONSTANT = 603,
INTCONSTANT = 604,
UINTCONSTANT = 605,
INT64CONSTANT = 606,
UINT64CONSTANT = 607,
BOOLCONSTANT = 608,
FLOAT16CONSTANT = 609,
LEFT_OP = 610,
RIGHT_OP = 611,
INC_OP = 612,
DEC_OP = 613,
LE_OP = 614,
GE_OP = 615,
EQ_OP = 616,
NE_OP = 617,
AND_OP = 618,
OR_OP = 619,
XOR_OP = 620,
MUL_ASSIGN = 621,
DIV_ASSIGN = 622,
ADD_ASSIGN = 623,
MOD_ASSIGN = 624,
LEFT_ASSIGN = 625,
RIGHT_ASSIGN = 626,
AND_ASSIGN = 627,
XOR_ASSIGN = 628,
OR_ASSIGN = 629,
SUB_ASSIGN = 630,
LEFT_PAREN = 631,
RIGHT_PAREN = 632,
LEFT_BRACKET = 633,
RIGHT_BRACKET = 634,
LEFT_BRACE = 635,
RIGHT_BRACE = 636,
DOT = 637,
COMMA = 638,
COLON = 639,
EQUAL = 640,
SEMICOLON = 641,
BANG = 642,
DASH = 643,
TILDE = 644,
PLUS = 645,
STAR = 646,
SLASH = 647,
PERCENT = 648,
LEFT_ANGLE = 649,
RIGHT_ANGLE = 650,
VERTICAL_BAR = 651,
CARET = 652,
AMPERSAND = 653,
QUESTION = 654,
INVARIANT = 655,
PRECISE = 656,
HIGH_PRECISION = 657,
MEDIUM_PRECISION = 658,
LOW_PRECISION = 659,
PRECISION = 660,
PACKED = 661,
RESOURCE = 662,
SUPERP = 663
CONST = 258,
BOOL = 259,
INT = 260,
UINT = 261,
FLOAT = 262,
BVEC2 = 263,
BVEC3 = 264,
BVEC4 = 265,
IVEC2 = 266,
IVEC3 = 267,
IVEC4 = 268,
UVEC2 = 269,
UVEC3 = 270,
UVEC4 = 271,
VEC2 = 272,
VEC3 = 273,
VEC4 = 274,
MAT2 = 275,
MAT3 = 276,
MAT4 = 277,
MAT2X2 = 278,
MAT2X3 = 279,
MAT2X4 = 280,
MAT3X2 = 281,
MAT3X3 = 282,
MAT3X4 = 283,
MAT4X2 = 284,
MAT4X3 = 285,
MAT4X4 = 286,
SAMPLER2D = 287,
SAMPLER3D = 288,
SAMPLERCUBE = 289,
SAMPLER2DSHADOW = 290,
SAMPLERCUBESHADOW = 291,
SAMPLER2DARRAY = 292,
SAMPLER2DARRAYSHADOW = 293,
ISAMPLER2D = 294,
ISAMPLER3D = 295,
ISAMPLERCUBE = 296,
ISAMPLER2DARRAY = 297,
USAMPLER2D = 298,
USAMPLER3D = 299,
USAMPLERCUBE = 300,
USAMPLER2DARRAY = 301,
SAMPLERCUBEARRAY = 302,
SAMPLERCUBEARRAYSHADOW = 303,
ISAMPLERCUBEARRAY = 304,
USAMPLERCUBEARRAY = 305,
ATTRIBUTE = 306,
VARYING = 307,
FLOAT16_T = 308,
FLOAT32_T = 309,
DOUBLE = 310,
FLOAT64_T = 311,
INT64_T = 312,
UINT64_T = 313,
INT32_T = 314,
UINT32_T = 315,
INT16_T = 316,
UINT16_T = 317,
INT8_T = 318,
UINT8_T = 319,
I64VEC2 = 320,
I64VEC3 = 321,
I64VEC4 = 322,
U64VEC2 = 323,
U64VEC3 = 324,
U64VEC4 = 325,
I32VEC2 = 326,
I32VEC3 = 327,
I32VEC4 = 328,
U32VEC2 = 329,
U32VEC3 = 330,
U32VEC4 = 331,
I16VEC2 = 332,
I16VEC3 = 333,
I16VEC4 = 334,
U16VEC2 = 335,
U16VEC3 = 336,
U16VEC4 = 337,
I8VEC2 = 338,
I8VEC3 = 339,
I8VEC4 = 340,
U8VEC2 = 341,
U8VEC3 = 342,
U8VEC4 = 343,
DVEC2 = 344,
DVEC3 = 345,
DVEC4 = 346,
DMAT2 = 347,
DMAT3 = 348,
DMAT4 = 349,
F16VEC2 = 350,
F16VEC3 = 351,
F16VEC4 = 352,
F16MAT2 = 353,
F16MAT3 = 354,
F16MAT4 = 355,
F32VEC2 = 356,
F32VEC3 = 357,
F32VEC4 = 358,
F32MAT2 = 359,
F32MAT3 = 360,
F32MAT4 = 361,
F64VEC2 = 362,
F64VEC3 = 363,
F64VEC4 = 364,
F64MAT2 = 365,
F64MAT3 = 366,
F64MAT4 = 367,
DMAT2X2 = 368,
DMAT2X3 = 369,
DMAT2X4 = 370,
DMAT3X2 = 371,
DMAT3X3 = 372,
DMAT3X4 = 373,
DMAT4X2 = 374,
DMAT4X3 = 375,
DMAT4X4 = 376,
F16MAT2X2 = 377,
F16MAT2X3 = 378,
F16MAT2X4 = 379,
F16MAT3X2 = 380,
F16MAT3X3 = 381,
F16MAT3X4 = 382,
F16MAT4X2 = 383,
F16MAT4X3 = 384,
F16MAT4X4 = 385,
F32MAT2X2 = 386,
F32MAT2X3 = 387,
F32MAT2X4 = 388,
F32MAT3X2 = 389,
F32MAT3X3 = 390,
F32MAT3X4 = 391,
F32MAT4X2 = 392,
F32MAT4X3 = 393,
F32MAT4X4 = 394,
F64MAT2X2 = 395,
F64MAT2X3 = 396,
F64MAT2X4 = 397,
F64MAT3X2 = 398,
F64MAT3X3 = 399,
F64MAT3X4 = 400,
F64MAT4X2 = 401,
F64MAT4X3 = 402,
F64MAT4X4 = 403,
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
};
#endif
@ -459,7 +459,7 @@ extern int yydebug;
union YYSTYPE
{
#line 71 "MachineIndependent/glslang.y" /* yacc.c:1909 */
#line 96 "MachineIndependent/glslang.y" /* yacc.c:1909 */
struct {
glslang::TSourceLoc loc;

View File

@ -1,3 +1,16 @@
#!/usr/bin/env bash
#!/usr/bin/bash
if [ "$1" = 'web' ]
then
m4 -P -DGLSLANG_WEB MachineIndependent/glslang.m4 > MachineIndependent/glslang.y
elif [ "$#" -eq 0 ]
then
m4 -P MachineIndependent/glslang.m4 > MachineIndependent/glslang.y
else
echo usage:
echo $0 web
echo $0
exit
fi
bison --defines=MachineIndependent/glslang_tab.cpp.h -t MachineIndependent/glslang.y -o MachineIndependent/glslang_tab.cpp