glsl: set glsl error if binding qualifier used on global scope
authorTapani Pälli <tapani.palli@intel.com>
Mon, 5 Oct 2015 09:50:10 +0000 (12:50 +0300)
committerTapani Pälli <tapani.palli@intel.com>
Mon, 5 Oct 2015 11:44:24 +0000 (14:44 +0300)
Fixes following Piglit test:
global-scope-binding-qualifier.frag

Signed-off-by: Tapani Pälli <tapani.palli@intel.com>
Reviewed-by: Samuel Iglesias Gonsálvez <siglesias@igalia.com>
src/glsl/glsl_parser.yy

index f0abeb0..c1bcccc 100644 (file)
@@ -2786,6 +2786,17 @@ layout_defaults:
       if (!state->default_shader_storage_qualifier->merge_qualifier(& @1, state, $1)) {
          YYERROR;
       }
+
+      /* From the GLSL 4.50 spec, section 4.4.5:
+       *
+       *     "It is a compile-time error to specify the binding identifier for
+       *     the global scope or for block member declarations."
+       */
+      if (state->default_shader_storage_qualifier->flags.q.explicit_binding) {
+         _mesa_glsl_error(& @1, state,
+                          "binding qualifier cannot be set for default layout");
+      }
+
       $$ = NULL;
    }