glsl: Make a function to express a GLSL version ir human-readable form.
[mesa.git] / src / glsl / glsl_lexer.ll
index 936a90726f06cb0af59d85ffffaf7166d43f6902..c538d7d8e309c23a0450fc7eaa41a9ab88950f7c 100644 (file)
@@ -296,12 +296,37 @@ usamplerCube              KEYWORD(130, 130, USAMPLERCUBE);
 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;
@@ -312,6 +337,7 @@ layout              {
                      || 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 {
@@ -392,7 +418,7 @@ enum                KEYWORD(110 || ES, 999, ENUM);
 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);
@@ -468,7 +494,13 @@ image2DArrayShadow KEYWORD(130, 999, IMAGE2DARRAYSHADOW);
 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;