Skip to content
Snippets Groups Projects
Commit 320dacb0 authored by Faith Ekstrand's avatar Faith Ekstrand :speech_balloon:
Browse files

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: f3e91e78 "anv: add nir lowering pass for ycbcr textures"
Reviewed-by: default avatarTimothy Arceri <tarceri@itsqueeze.com>
Reviewed-by: default avatarLionel Landwerlin <lionel.g.landwerlin@intel.com>
parent 459ec526
No related branches found
No related tags found
No related merge requests found
......@@ -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;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment