[Mesa-dev] [PATCH] st/mesa: make sure to create a "clean" bool when doing i2b

Jason Ekstrand jason at jlekstrand.net
Wed May 6 21:44:31 PDT 2015


I know nothing about TGSI but this looks perfectly reasonable to me.

Reviewed-by: Jason Ekstrand <jason.ekstrand at intel.com>

On Wed, May 6, 2015 at 8:33 PM, Ilia Mirkin <imirkin at alum.mit.edu> wrote:
> i2b has to work for all integers, not just 1. INEG would not necessarily
> result with all bits set, which is something that other operations can
> rely on by e.g. using AND (or INEG for b2i).
>
> Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu>
> ---
>
> Found by observation. Noticed a weird pattern in the generated code,
> which led up to this.
>
>  src/mesa/state_tracker/st_glsl_to_tgsi.cpp | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
> index 93671ba..8a591b9 100644
> --- a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
> +++ b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
> @@ -1941,7 +1941,7 @@ glsl_to_tgsi_visitor::visit(ir_expression *ir)
>        break;
>     case ir_unop_i2b:
>        if (native_integers)
> -         emit(ir, TGSI_OPCODE_INEG, result_dst, op[0]);
> +         emit(ir, TGSI_OPCODE_USNE, result_dst, op[0], st_src_reg_for_int(0));
>        else
>           emit(ir, TGSI_OPCODE_SNE, result_dst, op[0], st_src_reg_for_float(0.0));
>        break;
> --
> 2.3.6
>
> _______________________________________________
> 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