[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