Mesa (master): glsl: fix shader_storage_blocks_write_access for SSBO block arrays

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue Apr 9 23:25:51 UTC 2019


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

Author: Marek Olšák <marek.olsak at amd.com>
Date:   Mon Apr  8 17:20:13 2019 -0400

glsl: fix shader_storage_blocks_write_access for SSBO block arrays

CTS: GL45-CTS.compute_shader.resources-max

Fixes: 4e1e8f684bf "glsl: remember which SSBOs are not read-only and pass it to gallium"

Reviewed-by: Timothy Arceri <tarceri at itsqueeze.com>

---

 src/compiler/glsl/link_uniforms.cpp | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/src/compiler/glsl/link_uniforms.cpp b/src/compiler/glsl/link_uniforms.cpp
index ef124111991..bbd71593948 100644
--- a/src/compiler/glsl/link_uniforms.cpp
+++ b/src/compiler/glsl/link_uniforms.cpp
@@ -544,8 +544,12 @@ public:
          assert(buffer_block_index != -1);
 
          if (var->is_in_shader_storage_block() &&
-             !var->data.memory_read_only)
-            shader_storage_blocks_write_access |= 1 << buffer_block_index;
+             !var->data.memory_read_only) {
+            shader_storage_blocks_write_access |=
+               u_bit_consecutive(buffer_block_index,
+                                 var->type->is_array() ?
+                                    var->type->array_size() : 1);
+         }
 
          /* Uniform blocks that were specified with an instance name must be
           * handled a little bit differently.  The name of the variable is the




More information about the mesa-commit mailing list