glsl: dont allow gl_PerVertex to be redeclared as an array of arrays

V3: move patch after fixes to ast for AoA and add const to helper
as suggested by Ian

V2: move single dimensional array detection into a helper

Signed-off-by: Timothy Arceri <t_arceri@yahoo.com.au>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
This commit is contained in:
Timothy Arceri 2014-06-24 07:43:05 +10:00
parent dea0af8f82
commit d337da81f2
2 changed files with 8 additions and 1 deletions

View file

@ -336,6 +336,12 @@ public:
array_dimensions.push_tail(&dim->link);
}
const bool is_single_dimension()
{
return this->array_dimensions.tail_pred->prev != NULL &&
this->array_dimensions.tail_pred->prev->is_head_sentinel();
}
virtual void print(void) const;
/* This list contains objects of type ast_node containing the

View file

@ -6335,7 +6335,8 @@ ast_interface_block::hir(exec_list *instructions,
_mesa_shader_stage_to_string(state->stage));
}
if (this->instance_name == NULL ||
strcmp(this->instance_name, "gl_in") != 0 || this->array_specifier == NULL) {
strcmp(this->instance_name, "gl_in") != 0 || this->array_specifier == NULL ||
!this->array_specifier->is_single_dimension()) {
_mesa_glsl_error(&loc, state,
"gl_PerVertex input must be redeclared as "
"gl_in[]");