glsl2: Perform some semantic checking of ARB_fcc layout qualifiers
authorIan Romanick <ian.d.romanick@intel.com>
Thu, 1 Jul 2010 00:48:09 +0000 (17:48 -0700)
committerEric Anholt <eric@anholt.net>
Wed, 28 Jul 2010 21:16:12 +0000 (14:16 -0700)
The rest cannot be handled until built-in variables (i.e.,
gl_FragCoord) can be redeclared to add qualifiers.

src/glsl/ast_to_hir.cpp

index 98ea789..d82cf33 100644 (file)
@@ -1542,6 +1542,19 @@ apply_type_qualifier_to_variable(const struct ast_type_qualifier *qual,
    else
       var->interpolation = ir_var_smooth;
 
+   /* FINISHME: Apply the fragment coord convetion layout qualifiers.
+    */
+   if ((qual->origin_upper_left || qual->pixel_center_integer)
+       && (strcmp(var->name, "gl_FragCoord") != 0)) {
+      const char *const qual_string = (qual->origin_upper_left)
+        ? "origin_upper_left" : "pixel_center_integer";
+
+      _mesa_glsl_error(loc, state,
+                      "layout qualifier `%s' can only be applied to "
+                      "fragment shader input `gl_FragCoord'",
+                      qual_string);
+   }
+
    if (var->type->is_array() && (state->language_version >= 120)) {
       var->array_lvalue = true;
    }