glsl: Don't allow invalid identifiers as interface block names.
Note: we need to make an exception for the gl_PerVertex interface block, since this is allowed to be redeclared. Future patches will make redeclaration of gl_PerVertex work properly. Fixes piglit test spec/glsl-1.50/compiler/interface-block-name-uses-gl-prefix.vert. Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
This commit is contained in:
parent
9bb60a155f
commit
f2dd3a04ce
|
@ -4614,6 +4614,7 @@ ast_interface_block::hir(exec_list *instructions,
|
|||
packing = GLSL_INTERFACE_PACKING_STD140;
|
||||
}
|
||||
|
||||
bool redeclaring_per_vertex = strcmp(this->block_name, "gl_PerVertex") == 0;
|
||||
bool block_row_major = this->layout.flags.q.row_major;
|
||||
exec_list declared_variables;
|
||||
glsl_struct_field *fields;
|
||||
|
@ -4643,6 +4644,9 @@ ast_interface_block::hir(exec_list *instructions,
|
|||
assert(!"interface block layout qualifier not found!");
|
||||
}
|
||||
|
||||
if (!redeclaring_per_vertex)
|
||||
validate_identifier(this->block_name, loc, state);
|
||||
|
||||
const glsl_type *block_type =
|
||||
glsl_type::get_interface_instance(fields,
|
||||
num_variables,
|
||||
|
|
Loading…
Reference in New Issue