From 51bf007d2c27fbad6dac590c72f0fc4860e3fa02 Mon Sep 17 00:00:00 2001 From: Iago Toral Quiroga Date: Mon, 11 Sep 2017 14:19:41 +0200 Subject: [PATCH] glsl: Disallow unsized array of atomic_uint This was a bugfix to the spec addressed in OpenGL 4.5 (revision 7 of the spec) and there is a CTS test to check this. Fixes: KHR-GL45.shader_atomic_counters.negative-unsized-array Reviewed-by: Kenneth Graunke --- src/compiler/glsl/ast_to_hir.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/compiler/glsl/ast_to_hir.cpp b/src/compiler/glsl/ast_to_hir.cpp index 98d2f94..9ded2cb 100644 --- a/src/compiler/glsl/ast_to_hir.cpp +++ b/src/compiler/glsl/ast_to_hir.cpp @@ -5542,6 +5542,17 @@ ast_declarator_list::hir(exec_list *instructions, "GLSL ES"); } + /* Section 4.4.6.1 Atomic Counter Layout Qualifiers of the GLSL 4.60 spec: + * + * "It is a compile-time error to declare an unsized array of + * atomic_uint" + */ + if (var->type->is_unsized_array() && + var->type->without_array()->base_type == GLSL_TYPE_ATOMIC_UINT) { + _mesa_glsl_error(& loc, state, + "Unsized array of atomic_uint is not allowed"); + } + /* If the declaration is not a redeclaration, there are a few additional * semantic checks that must be applied. In addition, variable that was * created for the declaration should be added to the IR stream. -- 2.7.4