On Mon,  4 Jun 2012 14:15:10 -0700, Kenneth Graunke <kenn...@whitecape.org> 
wrote:
> Commit f41ecade7b458c02d504158b522acb2231585040 fixed texelFetchOffset()
> on Ivybridge, but didn't update the Ironlake/Sandybridge code.
> 
> +15 piglits on Sandybridge.
> 
> NOTE: This and f41ecade7b458 are both candidates for stable branches.
> 
> Signed-off-by: Kenneth Graunke <kenn...@whitecape.org>
> ---
>  src/mesa/drivers/dri/i965/brw_fs_visitor.cpp |   45 
> +++++++++++++++++++-------
>  1 file changed, 33 insertions(+), 12 deletions(-)
> 
> diff --git a/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp 
> b/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp
> index 275a1f4..8d124a0 100644
> --- a/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp
> +++ b/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp
> @@ -884,20 +884,41 @@ fs_visitor::emit_texture_gen5(ir_texture *ir, fs_reg 
> dst, fs_reg coordinate,
>     const int vector_elements =
>        ir->coordinate ? ir->coordinate->type->vector_elements : 0;
>  
> -   if (ir->offset) {
> -      /* The offsets set up by the ir_texture visitor are in the
> -       * m1 header, so we can't go headerless.
> +   if (ir->offset != NULL && ir->op == ir_txf) {
> +      /* It appears that the ld instruction used for txf does its
> +       * address bounds check before adding in the offset.  To work
> +       * around this, just add the integer offset to the integer texel
> +       * coordinate, and don't put the offset in the header.
>         */
> -      header_present = true;
> -      mlen++;
> -      base_mrf--;
> -   }
> +      int offsets[3];
> +      ir_constant *offset = ir->offset->as_constant();
> +      offsets[0] = offset->value.i[0];
> +      offsets[1] = offset->value.i[1];
> +      offsets[2] = offset->value.i[2];

No need for this temporary array (unlike in the fs where it was shared
with a non-offset path).

Other than that,

Reviewed-by: Eric Anholt <e...@anholt.net>

Attachment: pgp2P0DAYKMFW.pgp
Description: PGP signature

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to