[Mesa-dev] [PATCH 1/5] anv/lower_ycbcr: Use the binding array size for bounds checks

Lionel Landwerlin lionel.g.landwerlin at intel.com
Fri Aug 17 15:17:35 UTC 2018


On 08/08/18 09:12, Jason Ekstrand wrote:
> 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"

Thanks,

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin at intel.com>

> ---
>   src/intel/vulkan/anv_nir_lower_ycbcr_textures.c | 10 ++++------
>   1 file 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;




More information about the mesa-dev mailing list