Module: Mesa
Branch: master
Commit: b60024703531119c42468f49a08491206f3202fb
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=b60024703531119c42468f49a08491206f3202fb

Author: Timothy Arceri <[email protected]>
Date:   Thu Feb 11 15:14:21 2016 +1100

glsl: don't validate interface blocks twice

We already check for opaque types so don't recheck for atomics
and images.

Reviewed-by: Iago Toral Quiroga <[email protected]>

---

 src/compiler/glsl/ast_to_hir.cpp | 44 +++++++++++++++++++---------------------
 1 file changed, 21 insertions(+), 23 deletions(-)

diff --git a/src/compiler/glsl/ast_to_hir.cpp b/src/compiler/glsl/ast_to_hir.cpp
index 3833672..dbeb5c0 100644
--- a/src/compiler/glsl/ast_to_hir.cpp
+++ b/src/compiler/glsl/ast_to_hir.cpp
@@ -6303,30 +6303,28 @@ ast_process_struct_or_iface_block_members(exec_list 
*instructions,
        */
       assert(decl_type);
 
-      if (is_interface && decl_type->contains_opaque()) {
-         _mesa_glsl_error(&loc, state,
-                          "uniform/buffer in non-default interface block 
contains "
-                          "opaque variable");
-      }
-
-      if (decl_type->contains_atomic()) {
-         /* From section 4.1.7.3 of the GLSL 4.40 spec:
-          *
-          *    "Members of structures cannot be declared as atomic counter
-          *     types."
-          */
-         _mesa_glsl_error(&loc, state, "atomic counter in structure, "
-                          "shader storage block or uniform block");
-      }
+      if (is_interface) {
+         if (decl_type->contains_opaque()) {
+            _mesa_glsl_error(&loc, state, "uniform/buffer in non-default "
+                             "interface block contains opaque variable");
+         }
+      } else {
+         if (decl_type->contains_atomic()) {
+            /* From section 4.1.7.3 of the GLSL 4.40 spec:
+             *
+             *    "Members of structures cannot be declared as atomic counter
+             *     types."
+             */
+            _mesa_glsl_error(&loc, state, "atomic counter in structure");
+         }
 
-      if (decl_type->contains_image()) {
-         /* FINISHME: Same problem as with atomic counters.
-          * FINISHME: Request clarification from Khronos and add
-          * FINISHME: spec quotation here.
-          */
-         _mesa_glsl_error(&loc, state,
-                          "image in structure, shader storage block or "
-                          "uniform block");
+         if (decl_type->contains_image()) {
+            /* FINISHME: Same problem as with atomic counters.
+             * FINISHME: Request clarification from Khronos and add
+             * FINISHME: spec quotation here.
+             */
+            _mesa_glsl_error(&loc, state, "image in structure");
+         }
       }
 
       if (qual->flags.q.explicit_binding) {

_______________________________________________
mesa-commit mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to