From the ARB_shading_language_420pack spec:

   "More than one layout qualifier may appear in a single
   declaration. If the same layout-qualifier-name occurs in
   multiple layout qualifiers for the same declaration, the
   last one overrides the former ones."

Full support will require merging to be made more generic, but at
least with this the error messages will be more informative.

Cc: Matt Turner <matts...@gmail.com>
---
 src/glsl/glsl_parser.yy | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

diff --git a/src/glsl/glsl_parser.yy b/src/glsl/glsl_parser.yy
index 51796a6..d1f80d0 100644
--- a/src/glsl/glsl_parser.yy
+++ b/src/glsl/glsl_parser.yy
@@ -2738,7 +2738,19 @@ member_declaration:
    ;
 
 layout_defaults:
-   layout_qualifier UNIFORM ';'
+   layout_qualifier layout_defaults
+   {
+      if (!state->has_420pack_or_es31()) {
+         _mesa_glsl_error(&@1, state, "duplicate layout(...) qualifiers");
+         YYERROR;
+      } else {
+         _mesa_glsl_error(&@1, state, "Mesa lacks support for duplicate "
+                          "layout(...) qualifiers on globals FIXME");
+         YYERROR;
+      }
+   }
+
+   | layout_qualifier UNIFORM ';'
    {
       if (!state->default_uniform_qualifier->merge_qualifier(& @1, state, $1)) 
{
          YYERROR;
-- 
2.4.3

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to