[Mesa-dev] [PATCH v2 2/2] glsl_to_tgsi: use UARL instead of I2F and ARL
Marek Olšák
maraeo at gmail.com
Wed Sep 14 05:01:41 PDT 2011
Bryan,
This commit causes hardlocks on r600g (integers disabled).
Maybe you can see better than me what's wrong.
This is a side-by-side diff of the failing TGSI shader. The right-hand
one is from Mesa master. The left-hand one is with the commit
reverted.
http://pastebin.com/raw.php?i=QXB3SZAE
Thanks,
Marek
On Sat, Sep 10, 2011 at 7:36 PM, Bryan Cain <bryancain3 at gmail.com> wrote:
> Since TGSI now has a UARL opcode that takes an integer as the source, it is
> no longer necessary to hack around the lack of an integer ARL opcode using I2F.
> UARL is only emitted when native integers are enabled; ARL is still used
> otherwise.
>
> Reviewed-by: Brian Paul <brianp at vmware.com>
> ---
> src/mesa/state_tracker/st_glsl_to_tgsi.cpp | 18 +++++++-----------
> 1 files changed, 7 insertions(+), 11 deletions(-)
>
> diff --git a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
> index e2857ed..05d4d33 100644
> --- a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
> +++ b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
> @@ -512,7 +512,7 @@ glsl_to_tgsi_visitor::emit(ir_instruction *ir, unsigned op,
>
> inst->function = NULL;
>
> - if (op == TGSI_OPCODE_ARL)
> + if (op == TGSI_OPCODE_ARL || op == TGSI_OPCODE_UARL)
> this->num_address_regs = 1;
>
> /* Update indirect addressing status used by TGSI */
> @@ -724,16 +724,12 @@ void
> glsl_to_tgsi_visitor::emit_arl(ir_instruction *ir,
> st_dst_reg dst, st_src_reg src0)
> {
> - st_src_reg tmp = get_temp(glsl_type::float_type);
> + int op = TGSI_OPCODE_ARL;
>
> - if (src0.type == GLSL_TYPE_INT)
> - emit(NULL, TGSI_OPCODE_I2F, st_dst_reg(tmp), src0);
> - else if (src0.type == GLSL_TYPE_UINT)
> - emit(NULL, TGSI_OPCODE_U2F, st_dst_reg(tmp), src0);
> - else
> - tmp = src0;
> -
> - emit(NULL, TGSI_OPCODE_ARL, dst, tmp);
> + if (src0.type == GLSL_TYPE_INT || src0.type == GLSL_TYPE_UINT)
> + op = TGSI_OPCODE_UARL;
> +
> + emit(NULL, op, dst, src0);
> }
>
> /**
> --
> 1.7.1
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
More information about the mesa-dev
mailing list