glsl/nir: Fix getting the sampler dim when arrays are involved
authorCaio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
Wed, 19 Jun 2019 17:00:39 +0000 (10:00 -0700)
committerCaio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
Wed, 19 Jun 2019 19:50:39 +0000 (12:50 -0700)
Unwrap any array in the variable type so we can get the sampler dim.

This fixes piglit test
spec/arb_arrays_of_arrays/execution/image_store/basic-imageStore-const-uniform-index.shader_test.

Fixes: f2d0e48ddc7 "glsl/nir: Add optimization pass for access flags"
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
src/compiler/glsl/gl_nir_opt_access.c

index 1affeb3881eafc8a383d2d948742dde8dee2740a..7f8672faf131225125eea2295a1b65d42c8a113b 100644 (file)
@@ -70,7 +70,8 @@ gather_intrinsic(struct access_state *state, nir_intrinsic_instr *instr)
        * image types use textures which cannot alias with buffer objects.
        * Therefore we have to group buffer samplers together with SSBO's.
        */
-      if (glsl_get_sampler_dim(var->type) == GLSL_SAMPLER_DIM_BUF)
+      if (glsl_get_sampler_dim(glsl_without_array(var->type)) ==
+          GLSL_SAMPLER_DIM_BUF)
          state->buffers_written = true;
       else
          state->images_written = true;