[Mesa-dev] [PATCH 4/4] gallivm: fix tex offsets with mirror repeat linear

Jose Fonseca jfonseca at vmware.com
Fri Oct 23 08:21:54 PDT 2015


On 22/10/15 23:42, sroland at vmware.com wrote:
> From: Roland Scheidegger <sroland at vmware.com>
>
> Can't see why anyone would ever want to use this, but it was clearly broken.
> This fixes the piglit texwrap offset test using this combination.
> ---
>   src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c | 9 +++++----
>   1 file changed, 5 insertions(+), 4 deletions(-)
>
> diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c b/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c
> index 125505e..26bfa0d 100644
> --- a/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c
> +++ b/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c
> @@ -405,16 +405,17 @@ lp_build_sample_wrap_linear(struct lp_build_sample_context *bld,
>         break;
>
>      case PIPE_TEX_WRAP_MIRROR_REPEAT:
> +      if (offset) {
> +         offset = lp_build_int_to_float(coord_bld, offset);
> +         offset = lp_build_div(coord_bld, offset, length_f);
> +         coord = lp_build_add(coord_bld, coord, offset);
> +      }
>         /* compute mirror function */
>         coord = lp_build_coord_mirror(bld, coord);
>
>         /* scale coord to length */
>         coord = lp_build_mul(coord_bld, coord, length_f);
>         coord = lp_build_sub(coord_bld, coord, half);
> -      if (offset) {
> -         offset = lp_build_int_to_float(coord_bld, offset);
> -         coord = lp_build_add(coord_bld, coord, offset);
> -      }
>
>         /* convert to int, compute lerp weight */
>         lp_build_ifloor_fract(coord_bld, coord, &coord0, &weight);
>

Nice finds.  Series is

Reviewed-by: Jose Fonseca <jfonseca at vmware.com>


More information about the mesa-dev mailing list