From b7ca074cc0df6101c428b2dfa53a59a0c6620af2 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Mon, 8 Apr 2019 17:20:13 -0400 Subject: [PATCH] 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 --- 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 ef12411..bbd7159 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 -- 2.7.4