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:
		
							parent
							
								
									a28f7a75d1
								
							
						
					
					
						commit
						441b2ac4d1
					
				@ -7,6 +7,7 @@ else(WIN32)
 | 
				
			|||||||
endif(WIN32)
 | 
					endif(WIN32)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
set(SOURCES
 | 
					set(SOURCES
 | 
				
			||||||
 | 
					    MachineIndependent/glslang.m4
 | 
				
			||||||
    MachineIndependent/glslang.y
 | 
					    MachineIndependent/glslang.y
 | 
				
			||||||
    MachineIndependent/glslang_tab.cpp
 | 
					    MachineIndependent/glslang_tab.cpp
 | 
				
			||||||
    MachineIndependent/attribute.cpp
 | 
					    MachineIndependent/attribute.cpp
 | 
				
			||||||
@ -71,15 +72,6 @@ set(HEADERS
 | 
				
			|||||||
    MachineIndependent/preprocessor/PpContext.h
 | 
					    MachineIndependent/preprocessor/PpContext.h
 | 
				
			||||||
    MachineIndependent/preprocessor/PpTokens.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)
 | 
					glslang_pch(SOURCES MachineIndependent/pch.cpp)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
add_library(glslang ${LIB_TYPE} ${BISON_GLSLParser_OUTPUT_SOURCE} ${SOURCES} ${HEADERS})
 | 
					add_library(glslang ${LIB_TYPE} ${BISON_GLSLParser_OUTPUT_SOURCE} ${SOURCES} ${HEADERS})
 | 
				
			||||||
 | 
				
			|||||||
@ -341,9 +341,14 @@ void TScanContext::fillInKeywordMap()
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    (*KeywordMap)["const"] =                   CONST;
 | 
					    (*KeywordMap)["const"] =                   CONST;
 | 
				
			||||||
    (*KeywordMap)["uniform"] =                 UNIFORM;
 | 
					    (*KeywordMap)["uniform"] =                 UNIFORM;
 | 
				
			||||||
    (*KeywordMap)["nonuniformEXT"] =           NONUNIFORM;
 | 
					 | 
				
			||||||
    (*KeywordMap)["in"] =                      IN;
 | 
					    (*KeywordMap)["in"] =                      IN;
 | 
				
			||||||
    (*KeywordMap)["out"] =                     OUT;
 | 
					    (*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)["inout"] =                   INOUT;
 | 
				
			||||||
    (*KeywordMap)["struct"] =                  STRUCT;
 | 
					    (*KeywordMap)["struct"] =                  STRUCT;
 | 
				
			||||||
    (*KeywordMap)["break"] =                   BREAK;
 | 
					    (*KeywordMap)["break"] =                   BREAK;
 | 
				
			||||||
@ -356,7 +361,6 @@ void TScanContext::fillInKeywordMap()
 | 
				
			|||||||
    (*KeywordMap)["default"] =                 DEFAULT;
 | 
					    (*KeywordMap)["default"] =                 DEFAULT;
 | 
				
			||||||
    (*KeywordMap)["if"] =                      IF;
 | 
					    (*KeywordMap)["if"] =                      IF;
 | 
				
			||||||
    (*KeywordMap)["else"] =                    ELSE;
 | 
					    (*KeywordMap)["else"] =                    ELSE;
 | 
				
			||||||
    (*KeywordMap)["demote"] =                  DEMOTE;
 | 
					 | 
				
			||||||
    (*KeywordMap)["discard"] =                 DISCARD;
 | 
					    (*KeywordMap)["discard"] =                 DISCARD;
 | 
				
			||||||
    (*KeywordMap)["return"] =                  RETURN;
 | 
					    (*KeywordMap)["return"] =                  RETURN;
 | 
				
			||||||
    (*KeywordMap)["void"] =                    VOID;
 | 
					    (*KeywordMap)["void"] =                    VOID;
 | 
				
			||||||
@ -377,8 +381,33 @@ void TScanContext::fillInKeywordMap()
 | 
				
			|||||||
    (*KeywordMap)["mat4"] =                    MAT4;
 | 
					    (*KeywordMap)["mat4"] =                    MAT4;
 | 
				
			||||||
    (*KeywordMap)["true"] =                    BOOLCONSTANT;
 | 
					    (*KeywordMap)["true"] =                    BOOLCONSTANT;
 | 
				
			||||||
    (*KeywordMap)["false"] =                   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)["attribute"] =               ATTRIBUTE;
 | 
				
			||||||
    (*KeywordMap)["varying"] =                 VARYING;
 | 
					    (*KeywordMap)["varying"] =                 VARYING;
 | 
				
			||||||
 | 
					    (*KeywordMap)["noperspective"] =           NOPERSPECTIVE;
 | 
				
			||||||
    (*KeywordMap)["buffer"] =                  BUFFER;
 | 
					    (*KeywordMap)["buffer"] =                  BUFFER;
 | 
				
			||||||
    (*KeywordMap)["coherent"] =                COHERENT;
 | 
					    (*KeywordMap)["coherent"] =                COHERENT;
 | 
				
			||||||
    (*KeywordMap)["devicecoherent"] =          DEVICECOHERENT;
 | 
					    (*KeywordMap)["devicecoherent"] =          DEVICECOHERENT;
 | 
				
			||||||
@ -391,24 +420,9 @@ void TScanContext::fillInKeywordMap()
 | 
				
			|||||||
    (*KeywordMap)["writeonly"] =               WRITEONLY;
 | 
					    (*KeywordMap)["writeonly"] =               WRITEONLY;
 | 
				
			||||||
    (*KeywordMap)["atomic_uint"] =             ATOMIC_UINT;
 | 
					    (*KeywordMap)["atomic_uint"] =             ATOMIC_UINT;
 | 
				
			||||||
    (*KeywordMap)["volatile"] =                VOLATILE;
 | 
					    (*KeywordMap)["volatile"] =                VOLATILE;
 | 
				
			||||||
    (*KeywordMap)["layout"] =                  LAYOUT;
 | 
					 | 
				
			||||||
    (*KeywordMap)["shared"] =                  SHARED;
 | 
					 | 
				
			||||||
    (*KeywordMap)["patch"] =                   PATCH;
 | 
					    (*KeywordMap)["patch"] =                   PATCH;
 | 
				
			||||||
    (*KeywordMap)["sample"] =                  SAMPLE;
 | 
					    (*KeywordMap)["sample"] =                  SAMPLE;
 | 
				
			||||||
    (*KeywordMap)["subroutine"] =              SUBROUTINE;
 | 
					    (*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)["dmat2"] =                   DMAT2;
 | 
				
			||||||
    (*KeywordMap)["dmat3"] =                   DMAT3;
 | 
					    (*KeywordMap)["dmat3"] =                   DMAT3;
 | 
				
			||||||
    (*KeywordMap)["dmat4"] =                   DMAT4;
 | 
					    (*KeywordMap)["dmat4"] =                   DMAT4;
 | 
				
			||||||
@ -458,11 +472,6 @@ void TScanContext::fillInKeywordMap()
 | 
				
			|||||||
    (*KeywordMap)["dvec2"] =                   DVEC2;
 | 
					    (*KeywordMap)["dvec2"] =                   DVEC2;
 | 
				
			||||||
    (*KeywordMap)["dvec3"] =                   DVEC3;
 | 
					    (*KeywordMap)["dvec3"] =                   DVEC3;
 | 
				
			||||||
    (*KeywordMap)["dvec4"] =                   DVEC4;
 | 
					    (*KeywordMap)["dvec4"] =                   DVEC4;
 | 
				
			||||||
    (*KeywordMap)["uint"] =                    UINT;
 | 
					 | 
				
			||||||
    (*KeywordMap)["uvec2"] =                   UVEC2;
 | 
					 | 
				
			||||||
    (*KeywordMap)["uvec3"] =                   UVEC3;
 | 
					 | 
				
			||||||
    (*KeywordMap)["uvec4"] =                   UVEC4;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    (*KeywordMap)["int64_t"] =                 INT64_T;
 | 
					    (*KeywordMap)["int64_t"] =                 INT64_T;
 | 
				
			||||||
    (*KeywordMap)["uint64_t"] =                UINT64_T;
 | 
					    (*KeywordMap)["uint64_t"] =                UINT64_T;
 | 
				
			||||||
    (*KeywordMap)["i64vec2"] =                 I64VEC2;
 | 
					    (*KeywordMap)["i64vec2"] =                 I64VEC2;
 | 
				
			||||||
@ -549,6 +558,7 @@ void TScanContext::fillInKeywordMap()
 | 
				
			|||||||
    (*KeywordMap)["f64mat4x2"] =               F64MAT4X2;
 | 
					    (*KeywordMap)["f64mat4x2"] =               F64MAT4X2;
 | 
				
			||||||
    (*KeywordMap)["f64mat4x3"] =               F64MAT4X3;
 | 
					    (*KeywordMap)["f64mat4x3"] =               F64MAT4X3;
 | 
				
			||||||
    (*KeywordMap)["f64mat4x4"] =               F64MAT4X4;
 | 
					    (*KeywordMap)["f64mat4x4"] =               F64MAT4X4;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    (*KeywordMap)["sampler2D"] =               SAMPLER2D;
 | 
					    (*KeywordMap)["sampler2D"] =               SAMPLER2D;
 | 
				
			||||||
    (*KeywordMap)["samplerCube"] =             SAMPLERCUBE;
 | 
					    (*KeywordMap)["samplerCube"] =             SAMPLERCUBE;
 | 
				
			||||||
@ -556,12 +566,6 @@ void TScanContext::fillInKeywordMap()
 | 
				
			|||||||
    (*KeywordMap)["samplerCubeArrayShadow"] =  SAMPLERCUBEARRAYSHADOW;
 | 
					    (*KeywordMap)["samplerCubeArrayShadow"] =  SAMPLERCUBEARRAYSHADOW;
 | 
				
			||||||
    (*KeywordMap)["isamplerCubeArray"] =       ISAMPLERCUBEARRAY;
 | 
					    (*KeywordMap)["isamplerCubeArray"] =       ISAMPLERCUBEARRAY;
 | 
				
			||||||
    (*KeywordMap)["usamplerCubeArray"] =       USAMPLERCUBEARRAY;
 | 
					    (*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)["samplerCubeShadow"] =       SAMPLERCUBESHADOW;
 | 
				
			||||||
    (*KeywordMap)["sampler2DArray"] =          SAMPLER2DARRAY;
 | 
					    (*KeywordMap)["sampler2DArray"] =          SAMPLER2DARRAY;
 | 
				
			||||||
    (*KeywordMap)["sampler2DArrayShadow"] =    SAMPLER2DARRAYSHADOW;
 | 
					    (*KeywordMap)["sampler2DArrayShadow"] =    SAMPLER2DARRAYSHADOW;
 | 
				
			||||||
@ -573,6 +577,16 @@ void TScanContext::fillInKeywordMap()
 | 
				
			|||||||
    (*KeywordMap)["usampler3D"] =              USAMPLER3D;
 | 
					    (*KeywordMap)["usampler3D"] =              USAMPLER3D;
 | 
				
			||||||
    (*KeywordMap)["usamplerCube"] =            USAMPLERCUBE;
 | 
					    (*KeywordMap)["usamplerCube"] =            USAMPLERCUBE;
 | 
				
			||||||
    (*KeywordMap)["usampler2DArray"] =         USAMPLER2DARRAY;
 | 
					    (*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)["isampler2DRect"] =          ISAMPLER2DRECT;
 | 
				
			||||||
    (*KeywordMap)["usampler2DRect"] =          USAMPLER2DRECT;
 | 
					    (*KeywordMap)["usampler2DRect"] =          USAMPLER2DRECT;
 | 
				
			||||||
    (*KeywordMap)["isamplerBuffer"] =          ISAMPLERBUFFER;
 | 
					    (*KeywordMap)["isamplerBuffer"] =          ISAMPLERBUFFER;
 | 
				
			||||||
@ -585,8 +599,6 @@ void TScanContext::fillInKeywordMap()
 | 
				
			|||||||
    (*KeywordMap)["usampler2DMSArray"] =       USAMPLER2DMSARRAY;
 | 
					    (*KeywordMap)["usampler2DMSArray"] =       USAMPLER2DMSARRAY;
 | 
				
			||||||
    (*KeywordMap)["sampler1D"] =               SAMPLER1D;
 | 
					    (*KeywordMap)["sampler1D"] =               SAMPLER1D;
 | 
				
			||||||
    (*KeywordMap)["sampler1DShadow"] =         SAMPLER1DSHADOW;
 | 
					    (*KeywordMap)["sampler1DShadow"] =         SAMPLER1DSHADOW;
 | 
				
			||||||
    (*KeywordMap)["sampler3D"] =               SAMPLER3D;
 | 
					 | 
				
			||||||
    (*KeywordMap)["sampler2DShadow"] =         SAMPLER2DSHADOW;
 | 
					 | 
				
			||||||
    (*KeywordMap)["sampler2DRect"] =           SAMPLER2DRECT;
 | 
					    (*KeywordMap)["sampler2DRect"] =           SAMPLER2DRECT;
 | 
				
			||||||
    (*KeywordMap)["sampler2DRectShadow"] =     SAMPLER2DRECTSHADOW;
 | 
					    (*KeywordMap)["sampler2DRectShadow"] =     SAMPLER2DRECTSHADOW;
 | 
				
			||||||
    (*KeywordMap)["sampler1DArray"] =          SAMPLER1DARRAY;
 | 
					    (*KeywordMap)["sampler1DArray"] =          SAMPLER1DARRAY;
 | 
				
			||||||
@ -639,7 +651,6 @@ void TScanContext::fillInKeywordMap()
 | 
				
			|||||||
    (*KeywordMap)["usubpassInput"] =           USUBPASSINPUT;
 | 
					    (*KeywordMap)["usubpassInput"] =           USUBPASSINPUT;
 | 
				
			||||||
    (*KeywordMap)["usubpassInputMS"] =         USUBPASSINPUTMS;
 | 
					    (*KeywordMap)["usubpassInputMS"] =         USUBPASSINPUTMS;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef AMD_EXTENSIONS
 | 
					 | 
				
			||||||
    (*KeywordMap)["f16sampler1D"] =                 F16SAMPLER1D;
 | 
					    (*KeywordMap)["f16sampler1D"] =                 F16SAMPLER1D;
 | 
				
			||||||
    (*KeywordMap)["f16sampler2D"] =                 F16SAMPLER2D;
 | 
					    (*KeywordMap)["f16sampler2D"] =                 F16SAMPLER2D;
 | 
				
			||||||
    (*KeywordMap)["f16sampler3D"] =                 F16SAMPLER3D;
 | 
					    (*KeywordMap)["f16sampler3D"] =                 F16SAMPLER3D;
 | 
				
			||||||
@ -685,25 +696,10 @@ void TScanContext::fillInKeywordMap()
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    (*KeywordMap)["f16subpassInput"] =              F16SUBPASSINPUT;
 | 
					    (*KeywordMap)["f16subpassInput"] =              F16SUBPASSINPUT;
 | 
				
			||||||
    (*KeywordMap)["f16subpassInputMS"] =            F16SUBPASSINPUTMS;
 | 
					    (*KeywordMap)["f16subpassInputMS"] =            F16SUBPASSINPUTMS;
 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    (*KeywordMap)["noperspective"] =           NOPERSPECTIVE;
 | 
					 | 
				
			||||||
    (*KeywordMap)["smooth"] =                  SMOOTH;
 | 
					 | 
				
			||||||
    (*KeywordMap)["flat"] =                    FLAT;
 | 
					 | 
				
			||||||
#ifdef AMD_EXTENSIONS
 | 
					 | 
				
			||||||
    (*KeywordMap)["__explicitInterpAMD"] =     EXPLICITINTERPAMD;
 | 
					    (*KeywordMap)["__explicitInterpAMD"] =     EXPLICITINTERPAMD;
 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
    (*KeywordMap)["centroid"] =                CENTROID;
 | 
					 | 
				
			||||||
#ifdef NV_EXTENSIONS
 | 
					 | 
				
			||||||
    (*KeywordMap)["pervertexNV"] =             PERVERTEXNV;
 | 
					    (*KeywordMap)["pervertexNV"] =             PERVERTEXNV;
 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
    (*KeywordMap)["precise"] =                 PRECISE;
 | 
					    (*KeywordMap)["precise"] =                 PRECISE;
 | 
				
			||||||
    (*KeywordMap)["invariant"] =               INVARIANT;
 | 
					 | 
				
			||||||
    (*KeywordMap)["packed"] =                  PACKED;
 | 
					 | 
				
			||||||
    (*KeywordMap)["resource"] =                RESOURCE;
 | 
					 | 
				
			||||||
    (*KeywordMap)["superp"] =                  SUPERP;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef NV_EXTENSIONS
 | 
					 | 
				
			||||||
    (*KeywordMap)["rayPayloadNV"] =            PAYLOADNV;
 | 
					    (*KeywordMap)["rayPayloadNV"] =            PAYLOADNV;
 | 
				
			||||||
    (*KeywordMap)["rayPayloadInNV"] =          PAYLOADINNV;
 | 
					    (*KeywordMap)["rayPayloadInNV"] =          PAYLOADINNV;
 | 
				
			||||||
    (*KeywordMap)["hitAttributeNV"] =          HITATTRNV;
 | 
					    (*KeywordMap)["hitAttributeNV"] =          HITATTRNV;
 | 
				
			||||||
@ -713,7 +709,6 @@ void TScanContext::fillInKeywordMap()
 | 
				
			|||||||
    (*KeywordMap)["perprimitiveNV"] =          PERPRIMITIVENV;
 | 
					    (*KeywordMap)["perprimitiveNV"] =          PERPRIMITIVENV;
 | 
				
			||||||
    (*KeywordMap)["perviewNV"] =               PERVIEWNV;
 | 
					    (*KeywordMap)["perviewNV"] =               PERVIEWNV;
 | 
				
			||||||
    (*KeywordMap)["taskNV"] =                  PERTASKNV;
 | 
					    (*KeywordMap)["taskNV"] =                  PERTASKNV;
 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    (*KeywordMap)["fcoopmatNV"] =              FCOOPMATNV;
 | 
					    (*KeywordMap)["fcoopmatNV"] =              FCOOPMATNV;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -756,6 +751,7 @@ void TScanContext::fillInKeywordMap()
 | 
				
			|||||||
    ReservedSet->insert("cast");
 | 
					    ReservedSet->insert("cast");
 | 
				
			||||||
    ReservedSet->insert("namespace");
 | 
					    ReservedSet->insert("namespace");
 | 
				
			||||||
    ReservedSet->insert("using");
 | 
					    ReservedSet->insert("using");
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void TScanContext::deleteKeywordMap()
 | 
					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 PpAtomConstInt:           parserToken->sType.lex.i    = ppToken.ival;       return INTCONSTANT;
 | 
				
			||||||
        case PpAtomConstUint:          parserToken->sType.lex.i    = ppToken.ival;       return UINTCONSTANT;
 | 
					        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 PpAtomConstInt16:         parserToken->sType.lex.i    = ppToken.ival;       return INT16CONSTANT;
 | 
				
			||||||
        case PpAtomConstUint16:        parserToken->sType.lex.i    = ppToken.ival;       return UINT16CONSTANT;
 | 
					        case PpAtomConstUint16:        parserToken->sType.lex.i    = ppToken.ival;       return UINT16CONSTANT;
 | 
				
			||||||
        case PpAtomConstInt64:         parserToken->sType.lex.i64  = ppToken.i64val;     return INT64CONSTANT;
 | 
					        case PpAtomConstInt64:         parserToken->sType.lex.i64  = ppToken.i64val;     return INT64CONSTANT;
 | 
				
			||||||
        case PpAtomConstUint64:        parserToken->sType.lex.i64  = ppToken.i64val;     return UINT64CONSTANT;
 | 
					        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 PpAtomConstDouble:        parserToken->sType.lex.d    = ppToken.dval;       return DOUBLECONSTANT;
 | 
				
			||||||
        case PpAtomConstFloat16:       parserToken->sType.lex.d    = ppToken.dval;       return FLOAT16CONSTANT;
 | 
					        case PpAtomConstFloat16:       parserToken->sType.lex.d    = ppToken.dval;       return FLOAT16CONSTANT;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
        case PpAtomIdentifier:
 | 
					        case PpAtomIdentifier:
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            int token = tokenizeIdentifier();
 | 
					            int token = tokenizeIdentifier();
 | 
				
			||||||
@ -870,8 +868,10 @@ int TScanContext::tokenize(TPpContext* pp, TParserToken& token)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
int TScanContext::tokenizeIdentifier()
 | 
					int TScanContext::tokenizeIdentifier()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					#ifndef GLSLANG_WEB
 | 
				
			||||||
    if (ReservedSet->find(tokenText) != ReservedSet->end())
 | 
					    if (ReservedSet->find(tokenText) != ReservedSet->end())
 | 
				
			||||||
        return reservedWord();
 | 
					        return reservedWord();
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    auto it = KeywordMap->find(tokenText);
 | 
					    auto it = KeywordMap->find(tokenText);
 | 
				
			||||||
    if (it == KeywordMap->end()) {
 | 
					    if (it == KeywordMap->end()) {
 | 
				
			||||||
@ -902,12 +902,6 @@ int TScanContext::tokenizeIdentifier()
 | 
				
			|||||||
        afterStruct = true;
 | 
					        afterStruct = true;
 | 
				
			||||||
        return keyword;
 | 
					        return keyword;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    case NONUNIFORM:
 | 
					 | 
				
			||||||
        if (parseContext.extensionTurnedOn(E_GL_EXT_nonuniform_qualifier))
 | 
					 | 
				
			||||||
            return keyword;
 | 
					 | 
				
			||||||
        else
 | 
					 | 
				
			||||||
            return identifierOrType();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    case SWITCH:
 | 
					    case SWITCH:
 | 
				
			||||||
    case DEFAULT:
 | 
					    case DEFAULT:
 | 
				
			||||||
        if ((parseContext.profile == EEsProfile && parseContext.version < 300) ||
 | 
					        if ((parseContext.profile == EEsProfile && parseContext.version < 300) ||
 | 
				
			||||||
@ -943,20 +937,66 @@ int TScanContext::tokenizeIdentifier()
 | 
				
			|||||||
            parserToken->sType.lex.b = false;
 | 
					            parserToken->sType.lex.b = false;
 | 
				
			||||||
        return keyword;
 | 
					        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 ATTRIBUTE:
 | 
				
			||||||
    case VARYING:
 | 
					    case VARYING:
 | 
				
			||||||
        if (parseContext.profile == EEsProfile && parseContext.version >= 300)
 | 
					        if (parseContext.profile == EEsProfile && parseContext.version >= 300)
 | 
				
			||||||
            reservedWord();
 | 
					            reservedWord();
 | 
				
			||||||
        return keyword;
 | 
					        return keyword;
 | 
				
			||||||
 | 
					 | 
				
			||||||
    case BUFFER:
 | 
					    case BUFFER:
 | 
				
			||||||
        afterBuffer = true;
 | 
					        afterBuffer = true;
 | 
				
			||||||
        if ((parseContext.profile == EEsProfile && parseContext.version < 310) ||
 | 
					        if ((parseContext.profile == EEsProfile && parseContext.version < 310) ||
 | 
				
			||||||
            (parseContext.profile != EEsProfile && parseContext.version < 430))
 | 
					            (parseContext.profile != EEsProfile && parseContext.version < 430))
 | 
				
			||||||
            return identifierOrType();
 | 
					            return identifierOrType();
 | 
				
			||||||
        return keyword;
 | 
					        return keyword;
 | 
				
			||||||
 | 
					 | 
				
			||||||
#ifdef NV_EXTENSIONS
 | 
					 | 
				
			||||||
    case PAYLOADNV:
 | 
					    case PAYLOADNV:
 | 
				
			||||||
    case PAYLOADINNV:
 | 
					    case PAYLOADINNV:
 | 
				
			||||||
    case HITATTRNV:
 | 
					    case HITATTRNV:
 | 
				
			||||||
@ -968,8 +1008,6 @@ int TScanContext::tokenizeIdentifier()
 | 
				
			|||||||
                 && parseContext.extensionTurnedOn(E_GL_NV_ray_tracing)))
 | 
					                 && parseContext.extensionTurnedOn(E_GL_NV_ray_tracing)))
 | 
				
			||||||
            return keyword;
 | 
					            return keyword;
 | 
				
			||||||
        return identifierOrType();
 | 
					        return identifierOrType();
 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    case ATOMIC_UINT:
 | 
					    case ATOMIC_UINT:
 | 
				
			||||||
        if ((parseContext.profile == EEsProfile && parseContext.version >= 310) ||
 | 
					        if ((parseContext.profile == EEsProfile && parseContext.version >= 310) ||
 | 
				
			||||||
            parseContext.extensionTurnedOn(E_GL_ARB_shader_atomic_counters))
 | 
					            parseContext.extensionTurnedOn(E_GL_ARB_shader_atomic_counters))
 | 
				
			||||||
@ -988,7 +1026,6 @@ int TScanContext::tokenizeIdentifier()
 | 
				
			|||||||
        if (parseContext.profile == EEsProfile && parseContext.version >= 310)
 | 
					        if (parseContext.profile == EEsProfile && parseContext.version >= 310)
 | 
				
			||||||
            return keyword;
 | 
					            return keyword;
 | 
				
			||||||
        return es30ReservedFromGLSL(parseContext.extensionTurnedOn(E_GL_ARB_shader_image_load_store) ? 130 : 420);
 | 
					        return es30ReservedFromGLSL(parseContext.extensionTurnedOn(E_GL_ARB_shader_image_load_store) ? 130 : 420);
 | 
				
			||||||
 | 
					 | 
				
			||||||
    case VOLATILE:
 | 
					    case VOLATILE:
 | 
				
			||||||
        if (parseContext.profile == EEsProfile && parseContext.version >= 310)
 | 
					        if (parseContext.profile == EEsProfile && parseContext.version >= 310)
 | 
				
			||||||
            return keyword;
 | 
					            return keyword;
 | 
				
			||||||
@ -996,24 +1033,6 @@ int TScanContext::tokenizeIdentifier()
 | 
				
			|||||||
            (parseContext.version < 420 && ! parseContext.extensionTurnedOn(E_GL_ARB_shader_image_load_store))))
 | 
					            (parseContext.version < 420 && ! parseContext.extensionTurnedOn(E_GL_ARB_shader_image_load_store))))
 | 
				
			||||||
            reservedWord();
 | 
					            reservedWord();
 | 
				
			||||||
        return keyword;
 | 
					        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:
 | 
					    case PATCH:
 | 
				
			||||||
        if (parseContext.symbolTable.atBuiltInLevel() ||
 | 
					        if (parseContext.symbolTable.atBuiltInLevel() ||
 | 
				
			||||||
            (parseContext.profile == EEsProfile &&
 | 
					            (parseContext.profile == EEsProfile &&
 | 
				
			||||||
@ -1032,6 +1051,24 @@ int TScanContext::tokenizeIdentifier()
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    case SUBROUTINE:
 | 
					    case SUBROUTINE:
 | 
				
			||||||
        return es30ReservedFromGLSL(400);
 | 
					        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 HIGH_PRECISION:
 | 
				
			||||||
    case MEDIUM_PRECISION:
 | 
					    case MEDIUM_PRECISION:
 | 
				
			||||||
@ -1050,6 +1087,7 @@ int TScanContext::tokenizeIdentifier()
 | 
				
			|||||||
    case MAT4X4:
 | 
					    case MAT4X4:
 | 
				
			||||||
        return matNxM();
 | 
					        return matNxM();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef GLSLANG_WEB
 | 
				
			||||||
    case DMAT2:
 | 
					    case DMAT2:
 | 
				
			||||||
    case DMAT3:
 | 
					    case DMAT3:
 | 
				
			||||||
    case DMAT4:
 | 
					    case DMAT4:
 | 
				
			||||||
@ -1172,10 +1210,7 @@ int TScanContext::tokenizeIdentifier()
 | 
				
			|||||||
        afterType = true;
 | 
					        afterType = true;
 | 
				
			||||||
        if (parseContext.symbolTable.atBuiltInLevel() ||
 | 
					        if (parseContext.symbolTable.atBuiltInLevel() ||
 | 
				
			||||||
            (parseContext.profile != EEsProfile && parseContext.version >= 450 &&
 | 
					            (parseContext.profile != EEsProfile && parseContext.version >= 450 &&
 | 
				
			||||||
             (
 | 
					             (parseContext.extensionTurnedOn(E_GL_AMD_gpu_shader_int16) ||
 | 
				
			||||||
#ifdef AMD_EXTENSIONS
 | 
					 | 
				
			||||||
              parseContext.extensionTurnedOn(E_GL_AMD_gpu_shader_int16) ||
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
              parseContext.extensionTurnedOn(E_GL_EXT_shader_16bit_storage) ||
 | 
					              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) ||
 | 
				
			||||||
              parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types_int16))))
 | 
					              parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types_int16))))
 | 
				
			||||||
@ -1251,10 +1286,7 @@ int TScanContext::tokenizeIdentifier()
 | 
				
			|||||||
        afterType = true;
 | 
					        afterType = true;
 | 
				
			||||||
        if (parseContext.symbolTable.atBuiltInLevel() ||
 | 
					        if (parseContext.symbolTable.atBuiltInLevel() ||
 | 
				
			||||||
            (parseContext.profile != EEsProfile && parseContext.version >= 450 &&
 | 
					            (parseContext.profile != EEsProfile && parseContext.version >= 450 &&
 | 
				
			||||||
             (
 | 
					             (parseContext.extensionTurnedOn(E_GL_AMD_gpu_shader_half_float) ||
 | 
				
			||||||
#ifdef AMD_EXTENSIONS
 | 
					 | 
				
			||||||
              parseContext.extensionTurnedOn(E_GL_AMD_gpu_shader_half_float) ||
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
              parseContext.extensionTurnedOn(E_GL_EXT_shader_16bit_storage) ||
 | 
					              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) ||
 | 
				
			||||||
              parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types_float16))))
 | 
					              parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types_float16))))
 | 
				
			||||||
@ -1277,15 +1309,13 @@ int TScanContext::tokenizeIdentifier()
 | 
				
			|||||||
        afterType = true;
 | 
					        afterType = true;
 | 
				
			||||||
        if (parseContext.symbolTable.atBuiltInLevel() ||
 | 
					        if (parseContext.symbolTable.atBuiltInLevel() ||
 | 
				
			||||||
            (parseContext.profile != EEsProfile && parseContext.version >= 450 &&
 | 
					            (parseContext.profile != EEsProfile && parseContext.version >= 450 &&
 | 
				
			||||||
             (
 | 
					             (parseContext.extensionTurnedOn(E_GL_AMD_gpu_shader_half_float) ||
 | 
				
			||||||
#ifdef AMD_EXTENSIONS
 | 
					 | 
				
			||||||
              parseContext.extensionTurnedOn(E_GL_AMD_gpu_shader_half_float) ||
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
              parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types) ||
 | 
					              parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types) ||
 | 
				
			||||||
              parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types_float16))))
 | 
					              parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types_float16))))
 | 
				
			||||||
            return keyword;
 | 
					            return keyword;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return identifierOrType();
 | 
					        return identifierOrType();
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    case SAMPLERCUBEARRAY:
 | 
					    case SAMPLERCUBEARRAY:
 | 
				
			||||||
    case SAMPLERCUBEARRAYSHADOW:
 | 
					    case SAMPLERCUBEARRAYSHADOW:
 | 
				
			||||||
@ -1299,14 +1329,6 @@ int TScanContext::tokenizeIdentifier()
 | 
				
			|||||||
            reservedWord();
 | 
					            reservedWord();
 | 
				
			||||||
        return keyword;
 | 
					        return keyword;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    case ISAMPLER1D:
 | 
					 | 
				
			||||||
    case ISAMPLER1DARRAY:
 | 
					 | 
				
			||||||
    case SAMPLER1DARRAYSHADOW:
 | 
					 | 
				
			||||||
    case USAMPLER1D:
 | 
					 | 
				
			||||||
    case USAMPLER1DARRAY:
 | 
					 | 
				
			||||||
        afterType = true;
 | 
					 | 
				
			||||||
        return es30ReservedFromGLSL(130);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    case UINT:
 | 
					    case UINT:
 | 
				
			||||||
    case UVEC2:
 | 
					    case UVEC2:
 | 
				
			||||||
    case UVEC3:
 | 
					    case UVEC3:
 | 
				
			||||||
@ -1325,6 +1347,30 @@ int TScanContext::tokenizeIdentifier()
 | 
				
			|||||||
        afterType = true;
 | 
					        afterType = true;
 | 
				
			||||||
        return nonreservedKeyword(300, 130);
 | 
					        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 ISAMPLER2DRECT:
 | 
				
			||||||
    case USAMPLER2DRECT:
 | 
					    case USAMPLER2DRECT:
 | 
				
			||||||
        afterType = true;
 | 
					        afterType = true;
 | 
				
			||||||
@ -1369,22 +1415,6 @@ int TScanContext::tokenizeIdentifier()
 | 
				
			|||||||
            reservedWord();
 | 
					            reservedWord();
 | 
				
			||||||
        return keyword;
 | 
					        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 SAMPLER2DRECT:
 | 
				
			||||||
    case SAMPLER2DRECTSHADOW:
 | 
					    case SAMPLER2DRECTSHADOW:
 | 
				
			||||||
        afterType = true;
 | 
					        afterType = true;
 | 
				
			||||||
@ -1473,7 +1503,6 @@ int TScanContext::tokenizeIdentifier()
 | 
				
			|||||||
        else
 | 
					        else
 | 
				
			||||||
            return identifierOrType();
 | 
					            return identifierOrType();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef AMD_EXTENSIONS
 | 
					 | 
				
			||||||
    case F16SAMPLER1D:
 | 
					    case F16SAMPLER1D:
 | 
				
			||||||
    case F16SAMPLER2D:
 | 
					    case F16SAMPLER2D:
 | 
				
			||||||
    case F16SAMPLER3D:
 | 
					    case F16SAMPLER3D:
 | 
				
			||||||
@ -1525,50 +1554,19 @@ int TScanContext::tokenizeIdentifier()
 | 
				
			|||||||
             parseContext.profile != EEsProfile && parseContext.version >= 450))
 | 
					             parseContext.profile != EEsProfile && parseContext.version >= 450))
 | 
				
			||||||
            return keyword;
 | 
					            return keyword;
 | 
				
			||||||
        return identifierOrType();
 | 
					        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:
 | 
					    case EXPLICITINTERPAMD:
 | 
				
			||||||
        if (parseContext.profile != EEsProfile && parseContext.version >= 450 &&
 | 
					        if (parseContext.profile != EEsProfile && parseContext.version >= 450 &&
 | 
				
			||||||
            parseContext.extensionTurnedOn(E_GL_AMD_shader_explicit_vertex_parameter))
 | 
					            parseContext.extensionTurnedOn(E_GL_AMD_shader_explicit_vertex_parameter))
 | 
				
			||||||
            return keyword;
 | 
					            return keyword;
 | 
				
			||||||
        return identifierOrType();
 | 
					        return identifierOrType();
 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef NV_EXTENSIONS
 | 
					 | 
				
			||||||
    case PERVERTEXNV:
 | 
					    case PERVERTEXNV:
 | 
				
			||||||
        if (((parseContext.profile != EEsProfile && parseContext.version >= 450) ||
 | 
					        if (((parseContext.profile != EEsProfile && parseContext.version >= 450) ||
 | 
				
			||||||
            (parseContext.profile == EEsProfile && parseContext.version >= 320)) &&
 | 
					            (parseContext.profile == EEsProfile && parseContext.version >= 320)) &&
 | 
				
			||||||
            parseContext.extensionTurnedOn(E_GL_NV_fragment_shader_barycentric))
 | 
					            parseContext.extensionTurnedOn(E_GL_NV_fragment_shader_barycentric))
 | 
				
			||||||
            return keyword;
 | 
					            return keyword;
 | 
				
			||||||
        return identifierOrType();
 | 
					        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:
 | 
					    case PRECISE:
 | 
				
			||||||
        if ((parseContext.profile == EEsProfile &&
 | 
					        if ((parseContext.profile == EEsProfile &&
 | 
				
			||||||
@ -1581,30 +1579,6 @@ int TScanContext::tokenizeIdentifier()
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
        return identifierOrType();
 | 
					        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 PERPRIMITIVENV:
 | 
				
			||||||
    case PERVIEWNV:
 | 
					    case PERVIEWNV:
 | 
				
			||||||
    case PERTASKNV:
 | 
					    case PERTASKNV:
 | 
				
			||||||
@ -1613,7 +1587,6 @@ int TScanContext::tokenizeIdentifier()
 | 
				
			|||||||
            parseContext.extensionTurnedOn(E_GL_NV_mesh_shader))
 | 
					            parseContext.extensionTurnedOn(E_GL_NV_mesh_shader))
 | 
				
			||||||
            return keyword;
 | 
					            return keyword;
 | 
				
			||||||
        return identifierOrType();
 | 
					        return identifierOrType();
 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    case FCOOPMATNV:
 | 
					    case FCOOPMATNV:
 | 
				
			||||||
        afterType = true;
 | 
					        afterType = true;
 | 
				
			||||||
@ -1627,6 +1600,7 @@ int TScanContext::tokenizeIdentifier()
 | 
				
			|||||||
            return keyword;
 | 
					            return keyword;
 | 
				
			||||||
        else
 | 
					        else
 | 
				
			||||||
            return identifierOrType();
 | 
					            return identifierOrType();
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    default:
 | 
					    default:
 | 
				
			||||||
        parseContext.infoSink.info.message(EPrefixInternalError, "Unknown glslang keyword", loc);
 | 
					        parseContext.infoSink.info.message(EPrefixInternalError, "Unknown glslang keyword", loc);
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										3780
									
								
								glslang/MachineIndependent/glslang.m4
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3780
									
								
								glslang/MachineIndependent/glslang.m4
									
									
									
									
									
										Normal file
									
								
							
										
											
												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
											
										
									
								
							@ -45,412 +45,412 @@ extern int yydebug;
 | 
				
			|||||||
# define YYTOKENTYPE
 | 
					# define YYTOKENTYPE
 | 
				
			||||||
  enum yytokentype
 | 
					  enum yytokentype
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    ATTRIBUTE = 258,
 | 
					    CONST = 258,
 | 
				
			||||||
    VARYING = 259,
 | 
					    BOOL = 259,
 | 
				
			||||||
    FLOAT16_T = 260,
 | 
					    INT = 260,
 | 
				
			||||||
    FLOAT = 261,
 | 
					    UINT = 261,
 | 
				
			||||||
    FLOAT32_T = 262,
 | 
					    FLOAT = 262,
 | 
				
			||||||
    DOUBLE = 263,
 | 
					    BVEC2 = 263,
 | 
				
			||||||
    FLOAT64_T = 264,
 | 
					    BVEC3 = 264,
 | 
				
			||||||
    CONST = 265,
 | 
					    BVEC4 = 265,
 | 
				
			||||||
    BOOL = 266,
 | 
					    IVEC2 = 266,
 | 
				
			||||||
    INT = 267,
 | 
					    IVEC3 = 267,
 | 
				
			||||||
    UINT = 268,
 | 
					    IVEC4 = 268,
 | 
				
			||||||
    INT64_T = 269,
 | 
					    UVEC2 = 269,
 | 
				
			||||||
    UINT64_T = 270,
 | 
					    UVEC3 = 270,
 | 
				
			||||||
    INT32_T = 271,
 | 
					    UVEC4 = 271,
 | 
				
			||||||
    UINT32_T = 272,
 | 
					    VEC2 = 272,
 | 
				
			||||||
    INT16_T = 273,
 | 
					    VEC3 = 273,
 | 
				
			||||||
    UINT16_T = 274,
 | 
					    VEC4 = 274,
 | 
				
			||||||
    INT8_T = 275,
 | 
					    MAT2 = 275,
 | 
				
			||||||
    UINT8_T = 276,
 | 
					    MAT3 = 276,
 | 
				
			||||||
    BREAK = 277,
 | 
					    MAT4 = 277,
 | 
				
			||||||
    CONTINUE = 278,
 | 
					    MAT2X2 = 278,
 | 
				
			||||||
    DO = 279,
 | 
					    MAT2X3 = 279,
 | 
				
			||||||
    ELSE = 280,
 | 
					    MAT2X4 = 280,
 | 
				
			||||||
    FOR = 281,
 | 
					    MAT3X2 = 281,
 | 
				
			||||||
    IF = 282,
 | 
					    MAT3X3 = 282,
 | 
				
			||||||
    DISCARD = 283,
 | 
					    MAT3X4 = 283,
 | 
				
			||||||
    RETURN = 284,
 | 
					    MAT4X2 = 284,
 | 
				
			||||||
    SWITCH = 285,
 | 
					    MAT4X3 = 285,
 | 
				
			||||||
    CASE = 286,
 | 
					    MAT4X4 = 286,
 | 
				
			||||||
    DEFAULT = 287,
 | 
					    SAMPLER2D = 287,
 | 
				
			||||||
    SUBROUTINE = 288,
 | 
					    SAMPLER3D = 288,
 | 
				
			||||||
    DEMOTE = 289,
 | 
					    SAMPLERCUBE = 289,
 | 
				
			||||||
    BVEC2 = 290,
 | 
					    SAMPLER2DSHADOW = 290,
 | 
				
			||||||
    BVEC3 = 291,
 | 
					    SAMPLERCUBESHADOW = 291,
 | 
				
			||||||
    BVEC4 = 292,
 | 
					    SAMPLER2DARRAY = 292,
 | 
				
			||||||
    IVEC2 = 293,
 | 
					    SAMPLER2DARRAYSHADOW = 293,
 | 
				
			||||||
    IVEC3 = 294,
 | 
					    ISAMPLER2D = 294,
 | 
				
			||||||
    IVEC4 = 295,
 | 
					    ISAMPLER3D = 295,
 | 
				
			||||||
    UVEC2 = 296,
 | 
					    ISAMPLERCUBE = 296,
 | 
				
			||||||
    UVEC3 = 297,
 | 
					    ISAMPLER2DARRAY = 297,
 | 
				
			||||||
    UVEC4 = 298,
 | 
					    USAMPLER2D = 298,
 | 
				
			||||||
    I64VEC2 = 299,
 | 
					    USAMPLER3D = 299,
 | 
				
			||||||
    I64VEC3 = 300,
 | 
					    USAMPLERCUBE = 300,
 | 
				
			||||||
    I64VEC4 = 301,
 | 
					    USAMPLER2DARRAY = 301,
 | 
				
			||||||
    U64VEC2 = 302,
 | 
					    SAMPLERCUBEARRAY = 302,
 | 
				
			||||||
    U64VEC3 = 303,
 | 
					    SAMPLERCUBEARRAYSHADOW = 303,
 | 
				
			||||||
    U64VEC4 = 304,
 | 
					    ISAMPLERCUBEARRAY = 304,
 | 
				
			||||||
    I32VEC2 = 305,
 | 
					    USAMPLERCUBEARRAY = 305,
 | 
				
			||||||
    I32VEC3 = 306,
 | 
					    ATTRIBUTE = 306,
 | 
				
			||||||
    I32VEC4 = 307,
 | 
					    VARYING = 307,
 | 
				
			||||||
    U32VEC2 = 308,
 | 
					    FLOAT16_T = 308,
 | 
				
			||||||
    U32VEC3 = 309,
 | 
					    FLOAT32_T = 309,
 | 
				
			||||||
    U32VEC4 = 310,
 | 
					    DOUBLE = 310,
 | 
				
			||||||
    I16VEC2 = 311,
 | 
					    FLOAT64_T = 311,
 | 
				
			||||||
    I16VEC3 = 312,
 | 
					    INT64_T = 312,
 | 
				
			||||||
    I16VEC4 = 313,
 | 
					    UINT64_T = 313,
 | 
				
			||||||
    U16VEC2 = 314,
 | 
					    INT32_T = 314,
 | 
				
			||||||
    U16VEC3 = 315,
 | 
					    UINT32_T = 315,
 | 
				
			||||||
    U16VEC4 = 316,
 | 
					    INT16_T = 316,
 | 
				
			||||||
    I8VEC2 = 317,
 | 
					    UINT16_T = 317,
 | 
				
			||||||
    I8VEC3 = 318,
 | 
					    INT8_T = 318,
 | 
				
			||||||
    I8VEC4 = 319,
 | 
					    UINT8_T = 319,
 | 
				
			||||||
    U8VEC2 = 320,
 | 
					    I64VEC2 = 320,
 | 
				
			||||||
    U8VEC3 = 321,
 | 
					    I64VEC3 = 321,
 | 
				
			||||||
    U8VEC4 = 322,
 | 
					    I64VEC4 = 322,
 | 
				
			||||||
    VEC2 = 323,
 | 
					    U64VEC2 = 323,
 | 
				
			||||||
    VEC3 = 324,
 | 
					    U64VEC3 = 324,
 | 
				
			||||||
    VEC4 = 325,
 | 
					    U64VEC4 = 325,
 | 
				
			||||||
    MAT2 = 326,
 | 
					    I32VEC2 = 326,
 | 
				
			||||||
    MAT3 = 327,
 | 
					    I32VEC3 = 327,
 | 
				
			||||||
    MAT4 = 328,
 | 
					    I32VEC4 = 328,
 | 
				
			||||||
    CENTROID = 329,
 | 
					    U32VEC2 = 329,
 | 
				
			||||||
    IN = 330,
 | 
					    U32VEC3 = 330,
 | 
				
			||||||
    OUT = 331,
 | 
					    U32VEC4 = 331,
 | 
				
			||||||
    INOUT = 332,
 | 
					    I16VEC2 = 332,
 | 
				
			||||||
    UNIFORM = 333,
 | 
					    I16VEC3 = 333,
 | 
				
			||||||
    PATCH = 334,
 | 
					    I16VEC4 = 334,
 | 
				
			||||||
    SAMPLE = 335,
 | 
					    U16VEC2 = 335,
 | 
				
			||||||
    BUFFER = 336,
 | 
					    U16VEC3 = 336,
 | 
				
			||||||
    SHARED = 337,
 | 
					    U16VEC4 = 337,
 | 
				
			||||||
    NONUNIFORM = 338,
 | 
					    I8VEC2 = 338,
 | 
				
			||||||
    PAYLOADNV = 339,
 | 
					    I8VEC3 = 339,
 | 
				
			||||||
    PAYLOADINNV = 340,
 | 
					    I8VEC4 = 340,
 | 
				
			||||||
    HITATTRNV = 341,
 | 
					    U8VEC2 = 341,
 | 
				
			||||||
    CALLDATANV = 342,
 | 
					    U8VEC3 = 342,
 | 
				
			||||||
    CALLDATAINNV = 343,
 | 
					    U8VEC4 = 343,
 | 
				
			||||||
    COHERENT = 344,
 | 
					    DVEC2 = 344,
 | 
				
			||||||
    VOLATILE = 345,
 | 
					    DVEC3 = 345,
 | 
				
			||||||
    RESTRICT = 346,
 | 
					    DVEC4 = 346,
 | 
				
			||||||
    READONLY = 347,
 | 
					    DMAT2 = 347,
 | 
				
			||||||
    WRITEONLY = 348,
 | 
					    DMAT3 = 348,
 | 
				
			||||||
    DEVICECOHERENT = 349,
 | 
					    DMAT4 = 349,
 | 
				
			||||||
    QUEUEFAMILYCOHERENT = 350,
 | 
					    F16VEC2 = 350,
 | 
				
			||||||
    WORKGROUPCOHERENT = 351,
 | 
					    F16VEC3 = 351,
 | 
				
			||||||
    SUBGROUPCOHERENT = 352,
 | 
					    F16VEC4 = 352,
 | 
				
			||||||
    NONPRIVATE = 353,
 | 
					    F16MAT2 = 353,
 | 
				
			||||||
    DVEC2 = 354,
 | 
					    F16MAT3 = 354,
 | 
				
			||||||
    DVEC3 = 355,
 | 
					    F16MAT4 = 355,
 | 
				
			||||||
    DVEC4 = 356,
 | 
					    F32VEC2 = 356,
 | 
				
			||||||
    DMAT2 = 357,
 | 
					    F32VEC3 = 357,
 | 
				
			||||||
    DMAT3 = 358,
 | 
					    F32VEC4 = 358,
 | 
				
			||||||
    DMAT4 = 359,
 | 
					    F32MAT2 = 359,
 | 
				
			||||||
    F16VEC2 = 360,
 | 
					    F32MAT3 = 360,
 | 
				
			||||||
    F16VEC3 = 361,
 | 
					    F32MAT4 = 361,
 | 
				
			||||||
    F16VEC4 = 362,
 | 
					    F64VEC2 = 362,
 | 
				
			||||||
    F16MAT2 = 363,
 | 
					    F64VEC3 = 363,
 | 
				
			||||||
    F16MAT3 = 364,
 | 
					    F64VEC4 = 364,
 | 
				
			||||||
    F16MAT4 = 365,
 | 
					    F64MAT2 = 365,
 | 
				
			||||||
    F32VEC2 = 366,
 | 
					    F64MAT3 = 366,
 | 
				
			||||||
    F32VEC3 = 367,
 | 
					    F64MAT4 = 367,
 | 
				
			||||||
    F32VEC4 = 368,
 | 
					    DMAT2X2 = 368,
 | 
				
			||||||
    F32MAT2 = 369,
 | 
					    DMAT2X3 = 369,
 | 
				
			||||||
    F32MAT3 = 370,
 | 
					    DMAT2X4 = 370,
 | 
				
			||||||
    F32MAT4 = 371,
 | 
					    DMAT3X2 = 371,
 | 
				
			||||||
    F64VEC2 = 372,
 | 
					    DMAT3X3 = 372,
 | 
				
			||||||
    F64VEC3 = 373,
 | 
					    DMAT3X4 = 373,
 | 
				
			||||||
    F64VEC4 = 374,
 | 
					    DMAT4X2 = 374,
 | 
				
			||||||
    F64MAT2 = 375,
 | 
					    DMAT4X3 = 375,
 | 
				
			||||||
    F64MAT3 = 376,
 | 
					    DMAT4X4 = 376,
 | 
				
			||||||
    F64MAT4 = 377,
 | 
					    F16MAT2X2 = 377,
 | 
				
			||||||
    NOPERSPECTIVE = 378,
 | 
					    F16MAT2X3 = 378,
 | 
				
			||||||
    FLAT = 379,
 | 
					    F16MAT2X4 = 379,
 | 
				
			||||||
    SMOOTH = 380,
 | 
					    F16MAT3X2 = 380,
 | 
				
			||||||
    LAYOUT = 381,
 | 
					    F16MAT3X3 = 381,
 | 
				
			||||||
    EXPLICITINTERPAMD = 382,
 | 
					    F16MAT3X4 = 382,
 | 
				
			||||||
    PERVERTEXNV = 383,
 | 
					    F16MAT4X2 = 383,
 | 
				
			||||||
    PERPRIMITIVENV = 384,
 | 
					    F16MAT4X3 = 384,
 | 
				
			||||||
    PERVIEWNV = 385,
 | 
					    F16MAT4X4 = 385,
 | 
				
			||||||
    PERTASKNV = 386,
 | 
					    F32MAT2X2 = 386,
 | 
				
			||||||
    MAT2X2 = 387,
 | 
					    F32MAT2X3 = 387,
 | 
				
			||||||
    MAT2X3 = 388,
 | 
					    F32MAT2X4 = 388,
 | 
				
			||||||
    MAT2X4 = 389,
 | 
					    F32MAT3X2 = 389,
 | 
				
			||||||
    MAT3X2 = 390,
 | 
					    F32MAT3X3 = 390,
 | 
				
			||||||
    MAT3X3 = 391,
 | 
					    F32MAT3X4 = 391,
 | 
				
			||||||
    MAT3X4 = 392,
 | 
					    F32MAT4X2 = 392,
 | 
				
			||||||
    MAT4X2 = 393,
 | 
					    F32MAT4X3 = 393,
 | 
				
			||||||
    MAT4X3 = 394,
 | 
					    F32MAT4X4 = 394,
 | 
				
			||||||
    MAT4X4 = 395,
 | 
					    F64MAT2X2 = 395,
 | 
				
			||||||
    DMAT2X2 = 396,
 | 
					    F64MAT2X3 = 396,
 | 
				
			||||||
    DMAT2X3 = 397,
 | 
					    F64MAT2X4 = 397,
 | 
				
			||||||
    DMAT2X4 = 398,
 | 
					    F64MAT3X2 = 398,
 | 
				
			||||||
    DMAT3X2 = 399,
 | 
					    F64MAT3X3 = 399,
 | 
				
			||||||
    DMAT3X3 = 400,
 | 
					    F64MAT3X4 = 400,
 | 
				
			||||||
    DMAT3X4 = 401,
 | 
					    F64MAT4X2 = 401,
 | 
				
			||||||
    DMAT4X2 = 402,
 | 
					    F64MAT4X3 = 402,
 | 
				
			||||||
    DMAT4X3 = 403,
 | 
					    F64MAT4X4 = 403,
 | 
				
			||||||
    DMAT4X4 = 404,
 | 
					    ATOMIC_UINT = 404,
 | 
				
			||||||
    F16MAT2X2 = 405,
 | 
					    ACCSTRUCTNV = 405,
 | 
				
			||||||
    F16MAT2X3 = 406,
 | 
					    FCOOPMATNV = 406,
 | 
				
			||||||
    F16MAT2X4 = 407,
 | 
					    SAMPLER1D = 407,
 | 
				
			||||||
    F16MAT3X2 = 408,
 | 
					    SAMPLER1DARRAY = 408,
 | 
				
			||||||
    F16MAT3X3 = 409,
 | 
					    SAMPLER1DARRAYSHADOW = 409,
 | 
				
			||||||
    F16MAT3X4 = 410,
 | 
					    ISAMPLER1D = 410,
 | 
				
			||||||
    F16MAT4X2 = 411,
 | 
					    SAMPLER1DSHADOW = 411,
 | 
				
			||||||
    F16MAT4X3 = 412,
 | 
					    SAMPLER2DRECT = 412,
 | 
				
			||||||
    F16MAT4X4 = 413,
 | 
					    SAMPLER2DRECTSHADOW = 413,
 | 
				
			||||||
    F32MAT2X2 = 414,
 | 
					    ISAMPLER2DRECT = 414,
 | 
				
			||||||
    F32MAT2X3 = 415,
 | 
					    USAMPLER2DRECT = 415,
 | 
				
			||||||
    F32MAT2X4 = 416,
 | 
					    SAMPLERBUFFER = 416,
 | 
				
			||||||
    F32MAT3X2 = 417,
 | 
					    ISAMPLERBUFFER = 417,
 | 
				
			||||||
    F32MAT3X3 = 418,
 | 
					    USAMPLERBUFFER = 418,
 | 
				
			||||||
    F32MAT3X4 = 419,
 | 
					    SAMPLER2DMS = 419,
 | 
				
			||||||
    F32MAT4X2 = 420,
 | 
					    ISAMPLER2DMS = 420,
 | 
				
			||||||
    F32MAT4X3 = 421,
 | 
					    USAMPLER2DMS = 421,
 | 
				
			||||||
    F32MAT4X4 = 422,
 | 
					    SAMPLER2DMSARRAY = 422,
 | 
				
			||||||
    F64MAT2X2 = 423,
 | 
					    ISAMPLER2DMSARRAY = 423,
 | 
				
			||||||
    F64MAT2X3 = 424,
 | 
					    USAMPLER2DMSARRAY = 424,
 | 
				
			||||||
    F64MAT2X4 = 425,
 | 
					    SAMPLEREXTERNALOES = 425,
 | 
				
			||||||
    F64MAT3X2 = 426,
 | 
					    SAMPLEREXTERNAL2DY2YEXT = 426,
 | 
				
			||||||
    F64MAT3X3 = 427,
 | 
					    ISAMPLER1DARRAY = 427,
 | 
				
			||||||
    F64MAT3X4 = 428,
 | 
					    USAMPLER1D = 428,
 | 
				
			||||||
    F64MAT4X2 = 429,
 | 
					    USAMPLER1DARRAY = 429,
 | 
				
			||||||
    F64MAT4X3 = 430,
 | 
					    F16SAMPLER1D = 430,
 | 
				
			||||||
    F64MAT4X4 = 431,
 | 
					    F16SAMPLER2D = 431,
 | 
				
			||||||
    ATOMIC_UINT = 432,
 | 
					    F16SAMPLER3D = 432,
 | 
				
			||||||
    ACCSTRUCTNV = 433,
 | 
					    F16SAMPLER2DRECT = 433,
 | 
				
			||||||
    FCOOPMATNV = 434,
 | 
					    F16SAMPLERCUBE = 434,
 | 
				
			||||||
    SAMPLER1D = 435,
 | 
					    F16SAMPLER1DARRAY = 435,
 | 
				
			||||||
    SAMPLER2D = 436,
 | 
					    F16SAMPLER2DARRAY = 436,
 | 
				
			||||||
    SAMPLER3D = 437,
 | 
					    F16SAMPLERCUBEARRAY = 437,
 | 
				
			||||||
    SAMPLERCUBE = 438,
 | 
					    F16SAMPLERBUFFER = 438,
 | 
				
			||||||
    SAMPLER1DSHADOW = 439,
 | 
					    F16SAMPLER2DMS = 439,
 | 
				
			||||||
    SAMPLER2DSHADOW = 440,
 | 
					    F16SAMPLER2DMSARRAY = 440,
 | 
				
			||||||
    SAMPLERCUBESHADOW = 441,
 | 
					    F16SAMPLER1DSHADOW = 441,
 | 
				
			||||||
    SAMPLER1DARRAY = 442,
 | 
					    F16SAMPLER2DSHADOW = 442,
 | 
				
			||||||
    SAMPLER2DARRAY = 443,
 | 
					    F16SAMPLER1DARRAYSHADOW = 443,
 | 
				
			||||||
    SAMPLER1DARRAYSHADOW = 444,
 | 
					    F16SAMPLER2DARRAYSHADOW = 444,
 | 
				
			||||||
    SAMPLER2DARRAYSHADOW = 445,
 | 
					    F16SAMPLER2DRECTSHADOW = 445,
 | 
				
			||||||
    ISAMPLER1D = 446,
 | 
					    F16SAMPLERCUBESHADOW = 446,
 | 
				
			||||||
    ISAMPLER2D = 447,
 | 
					    F16SAMPLERCUBEARRAYSHADOW = 447,
 | 
				
			||||||
    ISAMPLER3D = 448,
 | 
					    IMAGE1D = 448,
 | 
				
			||||||
    ISAMPLERCUBE = 449,
 | 
					    IIMAGE1D = 449,
 | 
				
			||||||
    ISAMPLER1DARRAY = 450,
 | 
					    UIMAGE1D = 450,
 | 
				
			||||||
    ISAMPLER2DARRAY = 451,
 | 
					    IMAGE2D = 451,
 | 
				
			||||||
    USAMPLER1D = 452,
 | 
					    IIMAGE2D = 452,
 | 
				
			||||||
    USAMPLER2D = 453,
 | 
					    UIMAGE2D = 453,
 | 
				
			||||||
    USAMPLER3D = 454,
 | 
					    IMAGE3D = 454,
 | 
				
			||||||
    USAMPLERCUBE = 455,
 | 
					    IIMAGE3D = 455,
 | 
				
			||||||
    USAMPLER1DARRAY = 456,
 | 
					    UIMAGE3D = 456,
 | 
				
			||||||
    USAMPLER2DARRAY = 457,
 | 
					    IMAGE2DRECT = 457,
 | 
				
			||||||
    SAMPLER2DRECT = 458,
 | 
					    IIMAGE2DRECT = 458,
 | 
				
			||||||
    SAMPLER2DRECTSHADOW = 459,
 | 
					    UIMAGE2DRECT = 459,
 | 
				
			||||||
    ISAMPLER2DRECT = 460,
 | 
					    IMAGECUBE = 460,
 | 
				
			||||||
    USAMPLER2DRECT = 461,
 | 
					    IIMAGECUBE = 461,
 | 
				
			||||||
    SAMPLERBUFFER = 462,
 | 
					    UIMAGECUBE = 462,
 | 
				
			||||||
    ISAMPLERBUFFER = 463,
 | 
					    IMAGEBUFFER = 463,
 | 
				
			||||||
    USAMPLERBUFFER = 464,
 | 
					    IIMAGEBUFFER = 464,
 | 
				
			||||||
    SAMPLERCUBEARRAY = 465,
 | 
					    UIMAGEBUFFER = 465,
 | 
				
			||||||
    SAMPLERCUBEARRAYSHADOW = 466,
 | 
					    IMAGE1DARRAY = 466,
 | 
				
			||||||
    ISAMPLERCUBEARRAY = 467,
 | 
					    IIMAGE1DARRAY = 467,
 | 
				
			||||||
    USAMPLERCUBEARRAY = 468,
 | 
					    UIMAGE1DARRAY = 468,
 | 
				
			||||||
    SAMPLER2DMS = 469,
 | 
					    IMAGE2DARRAY = 469,
 | 
				
			||||||
    ISAMPLER2DMS = 470,
 | 
					    IIMAGE2DARRAY = 470,
 | 
				
			||||||
    USAMPLER2DMS = 471,
 | 
					    UIMAGE2DARRAY = 471,
 | 
				
			||||||
    SAMPLER2DMSARRAY = 472,
 | 
					    IMAGECUBEARRAY = 472,
 | 
				
			||||||
    ISAMPLER2DMSARRAY = 473,
 | 
					    IIMAGECUBEARRAY = 473,
 | 
				
			||||||
    USAMPLER2DMSARRAY = 474,
 | 
					    UIMAGECUBEARRAY = 474,
 | 
				
			||||||
    SAMPLEREXTERNALOES = 475,
 | 
					    IMAGE2DMS = 475,
 | 
				
			||||||
    SAMPLEREXTERNAL2DY2YEXT = 476,
 | 
					    IIMAGE2DMS = 476,
 | 
				
			||||||
    F16SAMPLER1D = 477,
 | 
					    UIMAGE2DMS = 477,
 | 
				
			||||||
    F16SAMPLER2D = 478,
 | 
					    IMAGE2DMSARRAY = 478,
 | 
				
			||||||
    F16SAMPLER3D = 479,
 | 
					    IIMAGE2DMSARRAY = 479,
 | 
				
			||||||
    F16SAMPLER2DRECT = 480,
 | 
					    UIMAGE2DMSARRAY = 480,
 | 
				
			||||||
    F16SAMPLERCUBE = 481,
 | 
					    F16IMAGE1D = 481,
 | 
				
			||||||
    F16SAMPLER1DARRAY = 482,
 | 
					    F16IMAGE2D = 482,
 | 
				
			||||||
    F16SAMPLER2DARRAY = 483,
 | 
					    F16IMAGE3D = 483,
 | 
				
			||||||
    F16SAMPLERCUBEARRAY = 484,
 | 
					    F16IMAGE2DRECT = 484,
 | 
				
			||||||
    F16SAMPLERBUFFER = 485,
 | 
					    F16IMAGECUBE = 485,
 | 
				
			||||||
    F16SAMPLER2DMS = 486,
 | 
					    F16IMAGE1DARRAY = 486,
 | 
				
			||||||
    F16SAMPLER2DMSARRAY = 487,
 | 
					    F16IMAGE2DARRAY = 487,
 | 
				
			||||||
    F16SAMPLER1DSHADOW = 488,
 | 
					    F16IMAGECUBEARRAY = 488,
 | 
				
			||||||
    F16SAMPLER2DSHADOW = 489,
 | 
					    F16IMAGEBUFFER = 489,
 | 
				
			||||||
    F16SAMPLER1DARRAYSHADOW = 490,
 | 
					    F16IMAGE2DMS = 490,
 | 
				
			||||||
    F16SAMPLER2DARRAYSHADOW = 491,
 | 
					    F16IMAGE2DMSARRAY = 491,
 | 
				
			||||||
    F16SAMPLER2DRECTSHADOW = 492,
 | 
					    SAMPLER = 492,
 | 
				
			||||||
    F16SAMPLERCUBESHADOW = 493,
 | 
					    SAMPLERSHADOW = 493,
 | 
				
			||||||
    F16SAMPLERCUBEARRAYSHADOW = 494,
 | 
					    TEXTURE1D = 494,
 | 
				
			||||||
    SAMPLER = 495,
 | 
					    TEXTURE2D = 495,
 | 
				
			||||||
    SAMPLERSHADOW = 496,
 | 
					    TEXTURE3D = 496,
 | 
				
			||||||
    TEXTURE1D = 497,
 | 
					    TEXTURECUBE = 497,
 | 
				
			||||||
    TEXTURE2D = 498,
 | 
					    TEXTURE1DARRAY = 498,
 | 
				
			||||||
    TEXTURE3D = 499,
 | 
					    TEXTURE2DARRAY = 499,
 | 
				
			||||||
    TEXTURECUBE = 500,
 | 
					    ITEXTURE1D = 500,
 | 
				
			||||||
    TEXTURE1DARRAY = 501,
 | 
					    ITEXTURE2D = 501,
 | 
				
			||||||
    TEXTURE2DARRAY = 502,
 | 
					    ITEXTURE3D = 502,
 | 
				
			||||||
    ITEXTURE1D = 503,
 | 
					    ITEXTURECUBE = 503,
 | 
				
			||||||
    ITEXTURE2D = 504,
 | 
					    ITEXTURE1DARRAY = 504,
 | 
				
			||||||
    ITEXTURE3D = 505,
 | 
					    ITEXTURE2DARRAY = 505,
 | 
				
			||||||
    ITEXTURECUBE = 506,
 | 
					    UTEXTURE1D = 506,
 | 
				
			||||||
    ITEXTURE1DARRAY = 507,
 | 
					    UTEXTURE2D = 507,
 | 
				
			||||||
    ITEXTURE2DARRAY = 508,
 | 
					    UTEXTURE3D = 508,
 | 
				
			||||||
    UTEXTURE1D = 509,
 | 
					    UTEXTURECUBE = 509,
 | 
				
			||||||
    UTEXTURE2D = 510,
 | 
					    UTEXTURE1DARRAY = 510,
 | 
				
			||||||
    UTEXTURE3D = 511,
 | 
					    UTEXTURE2DARRAY = 511,
 | 
				
			||||||
    UTEXTURECUBE = 512,
 | 
					    TEXTURE2DRECT = 512,
 | 
				
			||||||
    UTEXTURE1DARRAY = 513,
 | 
					    ITEXTURE2DRECT = 513,
 | 
				
			||||||
    UTEXTURE2DARRAY = 514,
 | 
					    UTEXTURE2DRECT = 514,
 | 
				
			||||||
    TEXTURE2DRECT = 515,
 | 
					    TEXTUREBUFFER = 515,
 | 
				
			||||||
    ITEXTURE2DRECT = 516,
 | 
					    ITEXTUREBUFFER = 516,
 | 
				
			||||||
    UTEXTURE2DRECT = 517,
 | 
					    UTEXTUREBUFFER = 517,
 | 
				
			||||||
    TEXTUREBUFFER = 518,
 | 
					    TEXTURECUBEARRAY = 518,
 | 
				
			||||||
    ITEXTUREBUFFER = 519,
 | 
					    ITEXTURECUBEARRAY = 519,
 | 
				
			||||||
    UTEXTUREBUFFER = 520,
 | 
					    UTEXTURECUBEARRAY = 520,
 | 
				
			||||||
    TEXTURECUBEARRAY = 521,
 | 
					    TEXTURE2DMS = 521,
 | 
				
			||||||
    ITEXTURECUBEARRAY = 522,
 | 
					    ITEXTURE2DMS = 522,
 | 
				
			||||||
    UTEXTURECUBEARRAY = 523,
 | 
					    UTEXTURE2DMS = 523,
 | 
				
			||||||
    TEXTURE2DMS = 524,
 | 
					    TEXTURE2DMSARRAY = 524,
 | 
				
			||||||
    ITEXTURE2DMS = 525,
 | 
					    ITEXTURE2DMSARRAY = 525,
 | 
				
			||||||
    UTEXTURE2DMS = 526,
 | 
					    UTEXTURE2DMSARRAY = 526,
 | 
				
			||||||
    TEXTURE2DMSARRAY = 527,
 | 
					    F16TEXTURE1D = 527,
 | 
				
			||||||
    ITEXTURE2DMSARRAY = 528,
 | 
					    F16TEXTURE2D = 528,
 | 
				
			||||||
    UTEXTURE2DMSARRAY = 529,
 | 
					    F16TEXTURE3D = 529,
 | 
				
			||||||
    F16TEXTURE1D = 530,
 | 
					    F16TEXTURE2DRECT = 530,
 | 
				
			||||||
    F16TEXTURE2D = 531,
 | 
					    F16TEXTURECUBE = 531,
 | 
				
			||||||
    F16TEXTURE3D = 532,
 | 
					    F16TEXTURE1DARRAY = 532,
 | 
				
			||||||
    F16TEXTURE2DRECT = 533,
 | 
					    F16TEXTURE2DARRAY = 533,
 | 
				
			||||||
    F16TEXTURECUBE = 534,
 | 
					    F16TEXTURECUBEARRAY = 534,
 | 
				
			||||||
    F16TEXTURE1DARRAY = 535,
 | 
					    F16TEXTUREBUFFER = 535,
 | 
				
			||||||
    F16TEXTURE2DARRAY = 536,
 | 
					    F16TEXTURE2DMS = 536,
 | 
				
			||||||
    F16TEXTURECUBEARRAY = 537,
 | 
					    F16TEXTURE2DMSARRAY = 537,
 | 
				
			||||||
    F16TEXTUREBUFFER = 538,
 | 
					    SUBPASSINPUT = 538,
 | 
				
			||||||
    F16TEXTURE2DMS = 539,
 | 
					    SUBPASSINPUTMS = 539,
 | 
				
			||||||
    F16TEXTURE2DMSARRAY = 540,
 | 
					    ISUBPASSINPUT = 540,
 | 
				
			||||||
    SUBPASSINPUT = 541,
 | 
					    ISUBPASSINPUTMS = 541,
 | 
				
			||||||
    SUBPASSINPUTMS = 542,
 | 
					    USUBPASSINPUT = 542,
 | 
				
			||||||
    ISUBPASSINPUT = 543,
 | 
					    USUBPASSINPUTMS = 543,
 | 
				
			||||||
    ISUBPASSINPUTMS = 544,
 | 
					    F16SUBPASSINPUT = 544,
 | 
				
			||||||
    USUBPASSINPUT = 545,
 | 
					    F16SUBPASSINPUTMS = 545,
 | 
				
			||||||
    USUBPASSINPUTMS = 546,
 | 
					    LEFT_OP = 546,
 | 
				
			||||||
    F16SUBPASSINPUT = 547,
 | 
					    RIGHT_OP = 547,
 | 
				
			||||||
    F16SUBPASSINPUTMS = 548,
 | 
					    INC_OP = 548,
 | 
				
			||||||
    IMAGE1D = 549,
 | 
					    DEC_OP = 549,
 | 
				
			||||||
    IIMAGE1D = 550,
 | 
					    LE_OP = 550,
 | 
				
			||||||
    UIMAGE1D = 551,
 | 
					    GE_OP = 551,
 | 
				
			||||||
    IMAGE2D = 552,
 | 
					    EQ_OP = 552,
 | 
				
			||||||
    IIMAGE2D = 553,
 | 
					    NE_OP = 553,
 | 
				
			||||||
    UIMAGE2D = 554,
 | 
					    AND_OP = 554,
 | 
				
			||||||
    IMAGE3D = 555,
 | 
					    OR_OP = 555,
 | 
				
			||||||
    IIMAGE3D = 556,
 | 
					    XOR_OP = 556,
 | 
				
			||||||
    UIMAGE3D = 557,
 | 
					    MUL_ASSIGN = 557,
 | 
				
			||||||
    IMAGE2DRECT = 558,
 | 
					    DIV_ASSIGN = 558,
 | 
				
			||||||
    IIMAGE2DRECT = 559,
 | 
					    ADD_ASSIGN = 559,
 | 
				
			||||||
    UIMAGE2DRECT = 560,
 | 
					    MOD_ASSIGN = 560,
 | 
				
			||||||
    IMAGECUBE = 561,
 | 
					    LEFT_ASSIGN = 561,
 | 
				
			||||||
    IIMAGECUBE = 562,
 | 
					    RIGHT_ASSIGN = 562,
 | 
				
			||||||
    UIMAGECUBE = 563,
 | 
					    AND_ASSIGN = 563,
 | 
				
			||||||
    IMAGEBUFFER = 564,
 | 
					    XOR_ASSIGN = 564,
 | 
				
			||||||
    IIMAGEBUFFER = 565,
 | 
					    OR_ASSIGN = 565,
 | 
				
			||||||
    UIMAGEBUFFER = 566,
 | 
					    SUB_ASSIGN = 566,
 | 
				
			||||||
    IMAGE1DARRAY = 567,
 | 
					    LEFT_PAREN = 567,
 | 
				
			||||||
    IIMAGE1DARRAY = 568,
 | 
					    RIGHT_PAREN = 568,
 | 
				
			||||||
    UIMAGE1DARRAY = 569,
 | 
					    LEFT_BRACKET = 569,
 | 
				
			||||||
    IMAGE2DARRAY = 570,
 | 
					    RIGHT_BRACKET = 570,
 | 
				
			||||||
    IIMAGE2DARRAY = 571,
 | 
					    LEFT_BRACE = 571,
 | 
				
			||||||
    UIMAGE2DARRAY = 572,
 | 
					    RIGHT_BRACE = 572,
 | 
				
			||||||
    IMAGECUBEARRAY = 573,
 | 
					    DOT = 573,
 | 
				
			||||||
    IIMAGECUBEARRAY = 574,
 | 
					    COMMA = 574,
 | 
				
			||||||
    UIMAGECUBEARRAY = 575,
 | 
					    COLON = 575,
 | 
				
			||||||
    IMAGE2DMS = 576,
 | 
					    EQUAL = 576,
 | 
				
			||||||
    IIMAGE2DMS = 577,
 | 
					    SEMICOLON = 577,
 | 
				
			||||||
    UIMAGE2DMS = 578,
 | 
					    BANG = 578,
 | 
				
			||||||
    IMAGE2DMSARRAY = 579,
 | 
					    DASH = 579,
 | 
				
			||||||
    IIMAGE2DMSARRAY = 580,
 | 
					    TILDE = 580,
 | 
				
			||||||
    UIMAGE2DMSARRAY = 581,
 | 
					    PLUS = 581,
 | 
				
			||||||
    F16IMAGE1D = 582,
 | 
					    STAR = 582,
 | 
				
			||||||
    F16IMAGE2D = 583,
 | 
					    SLASH = 583,
 | 
				
			||||||
    F16IMAGE3D = 584,
 | 
					    PERCENT = 584,
 | 
				
			||||||
    F16IMAGE2DRECT = 585,
 | 
					    LEFT_ANGLE = 585,
 | 
				
			||||||
    F16IMAGECUBE = 586,
 | 
					    RIGHT_ANGLE = 586,
 | 
				
			||||||
    F16IMAGE1DARRAY = 587,
 | 
					    VERTICAL_BAR = 587,
 | 
				
			||||||
    F16IMAGE2DARRAY = 588,
 | 
					    CARET = 588,
 | 
				
			||||||
    F16IMAGECUBEARRAY = 589,
 | 
					    AMPERSAND = 589,
 | 
				
			||||||
    F16IMAGEBUFFER = 590,
 | 
					    QUESTION = 590,
 | 
				
			||||||
    F16IMAGE2DMS = 591,
 | 
					    INVARIANT = 591,
 | 
				
			||||||
    F16IMAGE2DMSARRAY = 592,
 | 
					    HIGH_PRECISION = 592,
 | 
				
			||||||
    STRUCT = 593,
 | 
					    MEDIUM_PRECISION = 593,
 | 
				
			||||||
    VOID = 594,
 | 
					    LOW_PRECISION = 594,
 | 
				
			||||||
    WHILE = 595,
 | 
					    PRECISION = 595,
 | 
				
			||||||
    IDENTIFIER = 596,
 | 
					    PACKED = 596,
 | 
				
			||||||
    TYPE_NAME = 597,
 | 
					    RESOURCE = 597,
 | 
				
			||||||
    FLOATCONSTANT = 598,
 | 
					    SUPERP = 598,
 | 
				
			||||||
    DOUBLECONSTANT = 599,
 | 
					    FLOATCONSTANT = 599,
 | 
				
			||||||
    INT16CONSTANT = 600,
 | 
					    INTCONSTANT = 600,
 | 
				
			||||||
    UINT16CONSTANT = 601,
 | 
					    UINTCONSTANT = 601,
 | 
				
			||||||
    INT32CONSTANT = 602,
 | 
					    BOOLCONSTANT = 602,
 | 
				
			||||||
    UINT32CONSTANT = 603,
 | 
					    IDENTIFIER = 603,
 | 
				
			||||||
    INTCONSTANT = 604,
 | 
					    TYPE_NAME = 604,
 | 
				
			||||||
    UINTCONSTANT = 605,
 | 
					    CENTROID = 605,
 | 
				
			||||||
    INT64CONSTANT = 606,
 | 
					    IN = 606,
 | 
				
			||||||
    UINT64CONSTANT = 607,
 | 
					    OUT = 607,
 | 
				
			||||||
    BOOLCONSTANT = 608,
 | 
					    INOUT = 608,
 | 
				
			||||||
    FLOAT16CONSTANT = 609,
 | 
					    STRUCT = 609,
 | 
				
			||||||
    LEFT_OP = 610,
 | 
					    VOID = 610,
 | 
				
			||||||
    RIGHT_OP = 611,
 | 
					    WHILE = 611,
 | 
				
			||||||
    INC_OP = 612,
 | 
					    BREAK = 612,
 | 
				
			||||||
    DEC_OP = 613,
 | 
					    CONTINUE = 613,
 | 
				
			||||||
    LE_OP = 614,
 | 
					    DO = 614,
 | 
				
			||||||
    GE_OP = 615,
 | 
					    ELSE = 615,
 | 
				
			||||||
    EQ_OP = 616,
 | 
					    FOR = 616,
 | 
				
			||||||
    NE_OP = 617,
 | 
					    IF = 617,
 | 
				
			||||||
    AND_OP = 618,
 | 
					    DISCARD = 618,
 | 
				
			||||||
    OR_OP = 619,
 | 
					    RETURN = 619,
 | 
				
			||||||
    XOR_OP = 620,
 | 
					    SWITCH = 620,
 | 
				
			||||||
    MUL_ASSIGN = 621,
 | 
					    CASE = 621,
 | 
				
			||||||
    DIV_ASSIGN = 622,
 | 
					    DEFAULT = 622,
 | 
				
			||||||
    ADD_ASSIGN = 623,
 | 
					    UNIFORM = 623,
 | 
				
			||||||
    MOD_ASSIGN = 624,
 | 
					    SHARED = 624,
 | 
				
			||||||
    LEFT_ASSIGN = 625,
 | 
					    FLAT = 625,
 | 
				
			||||||
    RIGHT_ASSIGN = 626,
 | 
					    SMOOTH = 626,
 | 
				
			||||||
    AND_ASSIGN = 627,
 | 
					    LAYOUT = 627,
 | 
				
			||||||
    XOR_ASSIGN = 628,
 | 
					    DOUBLECONSTANT = 628,
 | 
				
			||||||
    OR_ASSIGN = 629,
 | 
					    INT16CONSTANT = 629,
 | 
				
			||||||
    SUB_ASSIGN = 630,
 | 
					    UINT16CONSTANT = 630,
 | 
				
			||||||
    LEFT_PAREN = 631,
 | 
					    FLOAT16CONSTANT = 631,
 | 
				
			||||||
    RIGHT_PAREN = 632,
 | 
					    INT32CONSTANT = 632,
 | 
				
			||||||
    LEFT_BRACKET = 633,
 | 
					    UINT32CONSTANT = 633,
 | 
				
			||||||
    RIGHT_BRACKET = 634,
 | 
					    INT64CONSTANT = 634,
 | 
				
			||||||
    LEFT_BRACE = 635,
 | 
					    UINT64CONSTANT = 635,
 | 
				
			||||||
    RIGHT_BRACE = 636,
 | 
					    SUBROUTINE = 636,
 | 
				
			||||||
    DOT = 637,
 | 
					    DEMOTE = 637,
 | 
				
			||||||
    COMMA = 638,
 | 
					    PAYLOADNV = 638,
 | 
				
			||||||
    COLON = 639,
 | 
					    PAYLOADINNV = 639,
 | 
				
			||||||
    EQUAL = 640,
 | 
					    HITATTRNV = 640,
 | 
				
			||||||
    SEMICOLON = 641,
 | 
					    CALLDATANV = 641,
 | 
				
			||||||
    BANG = 642,
 | 
					    CALLDATAINNV = 642,
 | 
				
			||||||
    DASH = 643,
 | 
					    PATCH = 643,
 | 
				
			||||||
    TILDE = 644,
 | 
					    SAMPLE = 644,
 | 
				
			||||||
    PLUS = 645,
 | 
					    BUFFER = 645,
 | 
				
			||||||
    STAR = 646,
 | 
					    NONUNIFORM = 646,
 | 
				
			||||||
    SLASH = 647,
 | 
					    COHERENT = 647,
 | 
				
			||||||
    PERCENT = 648,
 | 
					    VOLATILE = 648,
 | 
				
			||||||
    LEFT_ANGLE = 649,
 | 
					    RESTRICT = 649,
 | 
				
			||||||
    RIGHT_ANGLE = 650,
 | 
					    READONLY = 650,
 | 
				
			||||||
    VERTICAL_BAR = 651,
 | 
					    WRITEONLY = 651,
 | 
				
			||||||
    CARET = 652,
 | 
					    DEVICECOHERENT = 652,
 | 
				
			||||||
    AMPERSAND = 653,
 | 
					    QUEUEFAMILYCOHERENT = 653,
 | 
				
			||||||
    QUESTION = 654,
 | 
					    WORKGROUPCOHERENT = 654,
 | 
				
			||||||
    INVARIANT = 655,
 | 
					    SUBGROUPCOHERENT = 655,
 | 
				
			||||||
    PRECISE = 656,
 | 
					    NONPRIVATE = 656,
 | 
				
			||||||
    HIGH_PRECISION = 657,
 | 
					    NOPERSPECTIVE = 657,
 | 
				
			||||||
    MEDIUM_PRECISION = 658,
 | 
					    EXPLICITINTERPAMD = 658,
 | 
				
			||||||
    LOW_PRECISION = 659,
 | 
					    PERVERTEXNV = 659,
 | 
				
			||||||
    PRECISION = 660,
 | 
					    PERPRIMITIVENV = 660,
 | 
				
			||||||
    PACKED = 661,
 | 
					    PERVIEWNV = 661,
 | 
				
			||||||
    RESOURCE = 662,
 | 
					    PERTASKNV = 662,
 | 
				
			||||||
    SUPERP = 663
 | 
					    PRECISE = 663
 | 
				
			||||||
  };
 | 
					  };
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -459,7 +459,7 @@ extern int yydebug;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
union YYSTYPE
 | 
					union YYSTYPE
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
#line 71 "MachineIndependent/glslang.y" /* yacc.c:1909  */
 | 
					#line 96 "MachineIndependent/glslang.y" /* yacc.c:1909  */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    struct {
 | 
					    struct {
 | 
				
			||||||
        glslang::TSourceLoc loc;
 | 
					        glslang::TSourceLoc loc;
 | 
				
			||||||
 | 
				
			|||||||
@ -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
 | 
					bison --defines=MachineIndependent/glslang_tab.cpp.h -t MachineIndependent/glslang.y -o MachineIndependent/glslang_tab.cpp
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user