glsl: Treat an interface block specifier as a level of struct nesting
Fixes the piglit test: spec/glsl-1.50/compiler/interface-blocks-structs-defined-within-block-instanced.vert Signed-off-by: Chris Forbes <chrisf@ijw.co.nz> Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
parent
91b8ecbe1c
commit
b4ef7c596b
|
@ -5287,6 +5287,12 @@ ast_interface_block::hir(exec_list *instructions,
|
|||
bool block_row_major = this->layout.flags.q.row_major;
|
||||
exec_list declared_variables;
|
||||
glsl_struct_field *fields;
|
||||
|
||||
/* Treat an interface block as one level of nesting, so that embedded struct
|
||||
* specifiers will be disallowed.
|
||||
*/
|
||||
state->struct_specifier_depth++;
|
||||
|
||||
unsigned int num_variables =
|
||||
ast_process_structure_or_interface_block(&declared_variables,
|
||||
state,
|
||||
|
@ -5298,6 +5304,8 @@ ast_interface_block::hir(exec_list *instructions,
|
|||
redeclaring_per_vertex,
|
||||
var_mode);
|
||||
|
||||
state->struct_specifier_depth--;
|
||||
|
||||
if (!redeclaring_per_vertex)
|
||||
validate_identifier(this->block_name, loc, state);
|
||||
|
||||
|
|
Loading…
Reference in New Issue