[Mesa-dev] [PATCH] glsl_to_tgsi: don't use the negate modifier in integer ops after bitcast

Ilia Mirkin imirkin at alum.mit.edu
Mon Jul 11 17:31:21 UTC 2016


On Mon, Jul 11, 2016 at 1:28 PM, Marek Olšák <maraeo at gmail.com> wrote:
> From: Marek Olšák <marek.olsak at amd.com>
>
> This bug is uncovered by glsl/lower_if_to_cond_assign.
> I don't know if it can be reproduced in any other way.
>
> Cc: <mesa-stable at lists.freedesktop.org>
> ---
>  src/mesa/state_tracker/st_glsl_to_tgsi.cpp | 12 +++++++-----
>  1 file changed, 7 insertions(+), 5 deletions(-)
>
> diff --git a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
> index 76656f5..0b7feb7 100644
> --- a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
> +++ b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
> @@ -1958,12 +1958,14 @@ glsl_to_tgsi_visitor::visit_expression(ir_expression* ir, st_src_reg *op)
>           emit_asm(ir, TGSI_OPCODE_TRUNC, result_dst, op[0]);
>        break;
>     case ir_unop_bitcast_f2i:
> -      result_src = op[0];
> -      result_src.type = GLSL_TYPE_INT;
> -      break;
>     case ir_unop_bitcast_f2u:
> -      result_src = op[0];
> -      result_src.type = GLSL_TYPE_UINT;
> +      /* Make sure we don't propagate the negate modifier to integer opcodes. */
> +      if (op[0].negate)

Or abs or saturate, presumably?

> +         emit_asm(ir, TGSI_OPCODE_MOV, result_dst, op[0]);
> +      else
> +         result_src = op[0];
> +      result_src.type = ir->operation == ir_unop_bitcast_f2i ? GLSL_TYPE_INT :
> +                                                               GLSL_TYPE_UINT;
>        break;
>     case ir_unop_bitcast_i2f:
>     case ir_unop_bitcast_u2f:
> --
> 2.7.4
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list