[Mesa-dev] [PATCH] i965/vec4: Don't overwrite op[1] when doing a UBO load.

Paul Berry stereotype441 at gmail.com
Thu Oct 31 18:58:49 CET 2013


On 30 October 2013 17:45, Eric Anholt <eric at anholt.net> wrote:

> Prior to the GLSL CSE pass, all of our testing happened to have a freshly
> computed temporary in op[1], from the multiply by 16 to get a byte offset.
> As of CSE you'll get var_refs of a reused value when you've got multiple
> loads from the same offset.
>
> Make a proper temporary for computing our temporary value, to avoid
> shifting the value farther and farther down.  Avoids a regression in
> gs-float-array-variable-index
> ---
>  src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp
> b/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp
> index 7f2ca95..c5d0679 100644
> --- a/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp
> +++ b/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp
> @@ -1569,7 +1569,7 @@ vec4_visitor::visit(ir_expression *ir)
>        ir_constant *uniform_block = ir->operands[0]->as_constant();
>        ir_constant *const_offset_ir = ir->operands[1]->as_constant();
>        unsigned const_offset = const_offset_ir ?
> const_offset_ir->value.u[0] : 0;
> -      src_reg offset = op[1];
> +      src_reg offset;
>
>        /* Now, load the vector from that offset. */
>        assert(ir->type->is_vector() || ir->type->is_scalar());
> @@ -1581,7 +1581,8 @@ vec4_visitor::visit(ir_expression *ir)
>        if (const_offset_ir) {
>           offset = src_reg(const_offset / 16);
>        } else {
> -         emit(SHR(dst_reg(offset), offset, src_reg(4)));
> +         offset = src_reg(this, glsl_type::uint_type);
> +         emit(SHR(dst_reg(offset), op[1], src_reg(4)));
>        }
>
>        vec4_instruction *pull =
> --
> 1.8.4.rc3
>

Reviewed-by: Paul Berry <stereotype441 at gmail.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20131031/a97af2b5/attachment.html>


More information about the mesa-dev mailing list