summaryrefslogtreecommitdiffstats
path: root/src/intel
diff options
context:
space:
mode:
authorJason Ekstrand <[email protected]>2018-08-07 15:11:57 -0700
committerJason Ekstrand <[email protected]>2018-08-17 10:50:28 -0500
commit320dacb0a051cd1736e0976f70467b68281edfbf (patch)
treeb2cb1a0a9e38c9509e98297272b35e705c24fbcb /src/intel
parent459ec5265c18d1aa3623e1a21e31cf46c6a942e1 (diff)
anv/lower_ycbcr: Use the binding array size for bounds checks
Because lower_ycbcr gets called before apply_pipeline_layout, the indices are all logical and the binding layout HW size is actually too big for the bounds check. We should just use the regular logical array size instead. Fixes: f3e91e78a33 "anv: add nir lowering pass for ycbcr textures" Reviewed-by: Timothy Arceri <[email protected]> Reviewed-by: Lionel Landwerlin <[email protected]>
Diffstat (limited to 'src/intel')
-rw-r--r--src/intel/vulkan/anv_nir_lower_ycbcr_textures.c10
1 files changed, 4 insertions, 6 deletions
diff --git a/src/intel/vulkan/anv_nir_lower_ycbcr_textures.c b/src/intel/vulkan/anv_nir_lower_ycbcr_textures.c
index 5a971d9be39..71e511f34b7 100644
--- a/src/intel/vulkan/anv_nir_lower_ycbcr_textures.c
+++ b/src/intel/vulkan/anv_nir_lower_ycbcr_textures.c
@@ -340,18 +340,16 @@ try_lower_tex_ycbcr(struct anv_pipeline_layout *layout,
if (binding->immutable_samplers == NULL)
return false;
- unsigned texture_index = tex->texture_index;
+ assert(tex->texture_index == 0);
+ unsigned array_index = 0;
if (deref->deref_type != nir_deref_type_var) {
assert(deref->deref_type == nir_deref_type_array);
nir_const_value *const_index = nir_src_as_const_value(deref->arr.index);
if (!const_index)
return false;
- size_t hw_binding_size =
- anv_descriptor_set_binding_layout_get_hw_size(binding);
- texture_index += MIN2(const_index->u32[0], hw_binding_size - 1);
+ array_index = MIN2(const_index->u32[0], binding->array_size - 1);
}
- const struct anv_sampler *sampler =
- binding->immutable_samplers[texture_index];
+ const struct anv_sampler *sampler = binding->immutable_samplers[array_index];
if (sampler->conversion == NULL)
return false;