[Mesa-dev] [PATCH 1/3] i965/vec4: Simplify the computation of coord_mask and zero_mask.

Chris Forbes chrisf at ijw.co.nz
Tue Sep 10 17:01:14 PDT 2013


This is a fair bit saner :)

For the series:

Reviewed-by: Chris Forbes <chrisf at ijw.co.nz>

On Tue, Sep 10, 2013 at 11:00 AM, Kenneth Graunke <kenneth at whitecape.org> wrote:
> We can easily compute these without loops, resulting in simpler and
> shorter code.
>
> Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
> Cc: Ian Romanick <idr at freedesktop.org>
> Cc: Chris Forbes <chrisf at ijw.co.nz>
> ---
>  src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp | 7 ++-----
>  1 file changed, 2 insertions(+), 5 deletions(-)
>
> diff --git a/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp b/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp
> index 28dc313..a51b61b 100644
> --- a/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp
> +++ b/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp
> @@ -2221,13 +2221,10 @@ vec4_visitor::visit(ir_texture *ir)
>        int writemask = brw->gen == 4 ? WRITEMASK_W : WRITEMASK_X;
>        emit(MOV(dst_reg(MRF, param_base, lod_type, writemask), lod));
>     } else {
> -      int i, coord_mask = 0, zero_mask = 0;
>        /* Load the coordinate */
>        /* FINISHME: gl_clamp_mask and saturate */
> -      for (i = 0; i < ir->coordinate->type->vector_elements; i++)
> -        coord_mask |= (1 << i);
> -      for (; i < 4; i++)
> -        zero_mask |= (1 << i);
> +      int coord_mask = (1 << ir->coordinate->type->vector_elements) - 1;
> +      int zero_mask = 0xf & ~coord_mask;
>
>        if (ir->offset && ir->op == ir_txf) {
>          /* It appears that the ld instruction used for txf does its
> --
> 1.8.3.4
>


More information about the mesa-dev mailing list