glsl: Check that 'centroid in' does not occur in vertex shader

The check is performed only in GLSL versions >= 1.30.

From section 4.3.4 of the GLSL 1.30 spec:
   "It is an error to use centroid in in a vertex shader."

Fixes Piglit test
spec/glsl-1.30/compiler/storage-qualifiers/vs-centroid-in-01.vert
This commit is contained in:
Chad Versace 2011-01-11 18:24:17 -08:00
parent 8faaa4a672
commit 1eb0f17fa4

View file

@ -2338,6 +2338,19 @@ ast_declarator_list::hir(exec_list *instructions,
}
/* From section 4.3.4 of the GLSL 1.30 spec:
* "It is an error to use centroid in in a vertex shader."
*/
if (state->language_version >= 130
&& this->type->qualifier.flags.q.centroid
&& this->type->qualifier.flags.q.in
&& state->target == vertex_shader) {
_mesa_glsl_error(&loc, state,
"'centroid in' cannot be used in a vertex shader");
}
/* Process the initializer and add its instructions to a temporary
* list. This list will be added to the instruction stream (below) after
* the declaration is added. This is done because in some cases (such as