glsl: Allow `precise` as a parameter qualifier
authorChris Forbes <chrisf@ijw.co.nz>
Sun, 27 Apr 2014 04:03:56 +0000 (16:03 +1200)
committerChris Forbes <chrisf@ijw.co.nz>
Wed, 4 Jun 2014 06:56:09 +0000 (18:56 +1200)
Signed-off-by: Chris Forbes <chrisf@ijw.co.nz>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
src/glsl/glsl_parser.yy

index ba6bfa1e1fa0ecd6cd423d9a207130cc47fddeec..eddab0518e6f50c86ff9ccbedc763a9c3021d19c 100644 (file)
@@ -931,14 +931,22 @@ parameter_qualifier:
       $$ = $2;
       $$.flags.q.constant = 1;
    }
+   | PRECISE parameter_qualifier
+   {
+      if ($2.flags.q.precise)
+         _mesa_glsl_error(&@1, state, "duplicate precise qualifier");
+
+      $$ = $2;
+      $$.flags.q.precise = 1;
+   }
    | parameter_direction_qualifier parameter_qualifier
    {
       if (($1.flags.q.in || $1.flags.q.out) && ($2.flags.q.in || $2.flags.q.out))
          _mesa_glsl_error(&@1, state, "duplicate in/out/inout qualifier");
 
       if (!state->ARB_shading_language_420pack_enable && $2.flags.q.constant)
-         _mesa_glsl_error(&@1, state, "const must be specified before "
-                          "in/out/inout");
+         _mesa_glsl_error(&@1, state, "in/out/inout must come after const "
+                                      "or precise");
 
       $$ = $1;
       $$.merge_qualifier(&@1, state, $2);