From the ARB_enhanced_layouts spec: "Additions to Chapter 4 "Variables and Types" of the OpenGL Shading Language
Section 4.4 "Layout Qualifiers" The existing last paragraph already says: "More than one layout qualifier may appear in a single declaration. If the same layout-qualifier-name occurs in multiple layout qualifiers for the same declaration, the last one overrides the former ones." Expand it to say: "More than one layout qualifier may appear in a single declaration. Additionally, the same layout-qualifier-name can occur multiple times within a layout qualifier or across multiple layout qualifiers in the same declaration. When the same layout-qualifier-name occurs multiple times, in a single declaration, the last occurrence overrides the former occurrence(s). Further, if such a layout-qualifier-name will effect subsequent declarations or other observable behavior, it is only the last occurrence that will have any effect, behaving as if the earlier occurrence(s) within the declaration are not present. This is also true for overriding layout-qualifier-names, where one overrides the other (e.g., row_major vs. column_major); only the last occurrence has any effect."" Signed-off-by: Andres Gomez <ago...@igalia.com> --- src/compiler/glsl/ast_type.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/compiler/glsl/ast_type.cpp b/src/compiler/glsl/ast_type.cpp index 48ee27e..02f96ea 100644 --- a/src/compiler/glsl/ast_type.cpp +++ b/src/compiler/glsl/ast_type.cpp @@ -201,7 +201,8 @@ ast_type_qualifier::merge_qualifier(YYLTYPE *loc, return false; } - if (is_multiple_layouts_merge && !state->has_420pack_or_es31()) { + if (is_multiple_layouts_merge + && !state->has_420pack_or_es31() && !state->has_enhanced_layouts()) { _mesa_glsl_error(loc, state, "duplicate layout(...) qualifiers"); return false; -- 2.9.3 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev