usampler1DArray KEYWORD(130, 130, USAMPLER1DARRAY);
usampler2DArray KEYWORD(130, 130, USAMPLER2DARRAY);
-samplerExternalOES {
+samplerCubeArray {
+ if (yyextra->ARB_texture_cube_map_array_enable)
+ return SAMPLERCUBEARRAY;
+ else
+ return IDENTIFIER;
+ }
+isamplerCubeArray {
+ if (yyextra->ARB_texture_cube_map_array_enable)
+ return ISAMPLERCUBEARRAY;
+ else
+ return IDENTIFIER;
+ }
+usamplerCubeArray {
+ if (yyextra->ARB_texture_cube_map_array_enable)
+ return USAMPLERCUBEARRAY;
+ else
+ return IDENTIFIER;
+ }
+samplerCubeArrayShadow {
+ if (yyextra->ARB_texture_cube_map_array_enable)
+ return SAMPLERCUBEARRAYSHADOW;
+ else
+ return IDENTIFIER;
+ }
+
+samplerExternalOES {
if (yyextra->OES_EGL_image_external_enable)
return SAMPLEREXTERNALOES;
else
return IDENTIFIER;
- }
+ }
struct return STRUCT;
|| yyextra->AMD_conservative_depth_enable
|| yyextra->ARB_conservative_depth_enable
|| yyextra->ARB_explicit_attrib_location_enable
+ || yyextra->ARB_uniform_buffer_object_enable
|| yyextra->ARB_fragment_coord_conventions_enable) {
return LAYOUT_TOK;
} else {
typedef KEYWORD(110 || ES, 999, TYPEDEF);
template KEYWORD(110 || ES, 999, TEMPLATE);
this KEYWORD(110 || ES, 999, THIS);
-packed KEYWORD(110 || ES, 999, PACKED_TOK);
+packed KEYWORD(110 || ES, 140 || yyextra->ARB_uniform_buffer_object_enable, PACKED_TOK);
goto KEYWORD(110 || ES, 999, GOTO);
switch KEYWORD(110 || ES, 130, SWITCH);
default KEYWORD(110 || ES, 130, DEFAULT);
imageBuffer KEYWORD(130, 999, IMAGEBUFFER);
iimageBuffer KEYWORD(130, 999, IIMAGEBUFFER);
uimageBuffer KEYWORD(130, 999, UIMAGEBUFFER);
-row_major KEYWORD(130, 999, ROW_MAJOR);
+row_major KEYWORD(130, 140 || yyextra->ARB_uniform_buffer_object_enable, ROW_MAJOR);
+
+ /* Additional reserved words in GLSL 1.40 */
+isampler2DRect KEYWORD(140, 140, ISAMPLER2DRECT);
+usampler2DRect KEYWORD(140, 140, USAMPLER2DRECT);
+isamplerBuffer KEYWORD(140, 140, ISAMPLERBUFFER);
+usamplerBuffer KEYWORD(140, 140, USAMPLERBUFFER);
[_a-zA-Z][_a-zA-Z0-9]* {
struct _mesa_glsl_parse_state *state = yyextra;