diff options
Diffstat (limited to 'src/glsl/glsl_parser.yy')
-rw-r--r-- | src/glsl/glsl_parser.yy | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/glsl/glsl_parser.yy b/src/glsl/glsl_parser.yy index 4dd5384dac8..42108a3c1b6 100644 --- a/src/glsl/glsl_parser.yy +++ b/src/glsl/glsl_parser.yy @@ -2599,7 +2599,8 @@ interface_block: { ast_interface_block *block = (ast_interface_block *) $2; - if (!state->has_420pack() && block->layout.has_layout()) { + if (!state->has_420pack() && block->layout.has_layout() && + !block->layout.is_default_qualifier) { _mesa_glsl_error(&@1, state, "duplicate layout(...) qualifiers"); YYERROR; } @@ -2608,6 +2609,8 @@ interface_block: YYERROR; } + block->layout.is_default_qualifier = false; + foreach_list_typed (ast_declarator_list, member, link, &block->declarations) { ast_type_qualifier& qualifier = member->type->qualifier; if (qualifier.flags.q.stream && qualifier.stream != block->layout.stream) { |