[Mesa-dev] [PATCH] radv: fix texel fetch offset with 2d arrays.

Bas Nieuwenhuizen bas at basnieuwenhuizen.nl
Thu Nov 24 07:37:15 UTC 2016


Reviewed-by: Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl>

On Thu, Nov 24, 2016 at 4:12 AM, Dave Airlie <airlied at gmail.com> wrote:
> From: Dave Airlie <airlied at redhat.com>
>
> The code didn't limit the offsets to the number supplied, so
> if we expected 3 but only got 2 we were accessing undefined memory.
>
> This fixes random failures in:
> dEQP-VK.glsl.texture_functions.texelfetchoffset.sampler2darray_*
>
> Signed-off-by: Dave Airlie <airlied at redhat.com>
> ---
>  src/amd/common/ac_nir_to_llvm.c | 7 ++++---
>  1 file changed, 4 insertions(+), 3 deletions(-)
>
> diff --git a/src/amd/common/ac_nir_to_llvm.c b/src/amd/common/ac_nir_to_llvm.c
> index e175faa..30b4684 100644
> --- a/src/amd/common/ac_nir_to_llvm.c
> +++ b/src/amd/common/ac_nir_to_llvm.c
> @@ -3627,12 +3627,13 @@ static void visit_tex(struct nir_to_llvm_context *ctx, nir_tex_instr *instr)
>         if (offsets && instr->op == nir_texop_txf) {
>                 nir_const_value *const_offset =
>                         nir_src_as_const_value(instr->src[const_src].src);
> -
> +               int num_offsets = instr->src[const_src].src.ssa->num_components;
>                 assert(const_offset);
> -               if (instr->coord_components > 2)
> +               num_offsets = MIN2(num_offsets, instr->coord_components);
> +               if (num_offsets > 2)
>                         address[2] = LLVMBuildAdd(ctx->builder,
>                                                   address[2], LLVMConstInt(ctx->i32, const_offset->i32[2], false), "");
> -               if (instr->coord_components > 1)
> +               if (num_offsets > 1)
>                         address[1] = LLVMBuildAdd(ctx->builder,
>                                                   address[1], LLVMConstInt(ctx->i32, const_offset->i32[1], false), "");
>                 address[0] = LLVMBuildAdd(ctx->builder,
> --
> 2.7.4
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list