Mesa (master): st/mesa: fix weird UCMP opcode use for bool ubo load

Roland Scheidegger sroland at kemper.freedesktop.org
Fri May 17 22:46:05 UTC 2013


Module: Mesa
Branch: master
Commit: 0346e9b3bb24cf79c182a86fd8445251dfaa64ca
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=0346e9b3bb24cf79c182a86fd8445251dfaa64ca

Author: Roland Scheidegger <sroland at vmware.com>
Date:   Thu May  9 00:55:22 2013 +0200

st/mesa: fix weird UCMP opcode use for bool ubo load

I don't know what this code was trying to do but whatever it was it couldn't
have worked since negation of integer boolean inputs while not specified as
outright illegal (not yet at least) won't do anything since it doesn't affect
the result of comparison with zero at all. In fact it looks like the whole
instruction can just be omitted.

Reviewed-by: Marek Olšák <maraeo at gmail.com>

---

 src/mesa/state_tracker/st_glsl_to_tgsi.cpp |    6 ++----
 1 files changed, 2 insertions(+), 4 deletions(-)

diff --git a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
index cbd706d..b1b6e61 100644
--- a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
+++ b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
@@ -1945,8 +1945,6 @@ glsl_to_tgsi_visitor::visit(ir_expression *ir)
 
       if (ir->type->base_type == GLSL_TYPE_BOOL) {
          emit(ir, TGSI_OPCODE_USNE, result_dst, cbuf, st_src_reg_for_int(0));
-         result_src.negate = 1;
-         emit(ir, TGSI_OPCODE_UCMP, result_dst, result_src, st_src_reg_for_int(~0), st_src_reg_for_int(0));
       } else {
          emit(ir, TGSI_OPCODE_MOV, result_dst, cbuf);
       }
@@ -2396,8 +2394,8 @@ glsl_to_tgsi_visitor::visit(ir_assignment *ir)
          if (native_integers) {
             /* This is necessary because TGSI's CMP instruction expects the
              * condition to be a float, and we store booleans as integers.
-             * If TGSI had a UCMP instruction or similar, this extra
-             * instruction would not be necessary.
+             * TODO: really want to avoid i2f path and use UCMP. Requires
+             * changes to process_move_condition though too.
              */
             condition_temp = get_temp(glsl_type::vec4_type);
             condition.negate = 0;




More information about the mesa-commit mailing list