anv/apply_dynamic_offsets: Provide a range on the load_uniform
authorJason Ekstrand <jason.ekstrand@intel.com>
Tue, 19 Apr 2016 00:55:21 +0000 (17:55 -0700)
committerJason Ekstrand <jason.ekstrand@intel.com>
Wed, 20 Apr 2016 16:14:58 +0000 (09:14 -0700)
Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=94998
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=95001

src/intel/vulkan/anv_nir_apply_dynamic_offsets.c

index 234855c3779634117b66527fd0e767c67d2b52ad..06fe8aafd301643433cb641b286a8eeb4944dee6 100644 (file)
@@ -77,11 +77,13 @@ apply_dynamic_offsets_block(nir_block *block, void *void_state)
       /* First, we need to generate the uniform load for the buffer offset */
       uint32_t index = state->layout->set[set].dynamic_offset_start +
                        set_layout->binding[binding].dynamic_offset_index;
+      uint32_t array_size = set_layout->binding[binding].array_size;
 
       nir_intrinsic_instr *offset_load =
          nir_intrinsic_instr_create(state->shader, nir_intrinsic_load_uniform);
       offset_load->num_components = 2;
-      offset_load->const_index[0] = state->indices_start + index * 8;
+      nir_intrinsic_set_base(offset_load, state->indices_start + index * 8);
+      nir_intrinsic_set_range(offset_load, array_size * 8);
       offset_load->src[0] = nir_src_for_ssa(nir_imul(b, res_intrin->src[0].ssa,
                                                      nir_imm_int(b, 8)));