[Mesa-dev] [PATCH] glsl: Disallow unsized array of atomic_uint

Iago Toral Quiroga itoral at igalia.com
Tue Sep 12 06:15:05 UTC 2017


This was a bugfix to the spec addressed in OpenGL 4.5 and there is
a CTS test to check this.

Fixes:
KHR-GL45.shader_atomic_counters.negative-unsized-array
---
 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 98d2f94e12..81eeec103b 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.50 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.11.0



More information about the mesa-dev mailing list