From afc5a26b5c48f9f2399a092228ad8d6da0c42711 Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Mon, 12 Nov 2012 13:16:02 -0800 Subject: [PATCH] Revert "i965/fs: Fix conversions float->bool, int->bool" This reverts commit cf0bbb30f6bd9d3fa61b5207320e8f34c563a2c6. It was just papering over the bug fixed in the previous commit. Acked-by: Kenneth Graunke --- src/mesa/drivers/dri/i965/brw_fs_visitor.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp b/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp index 3c0a27bc575..edadd3513c9 100644 --- a/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp +++ b/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp @@ -501,16 +501,16 @@ fs_visitor::visit(ir_expression *ir) break; case ir_unop_f2b: - inst = emit(BRW_OPCODE_CMP, this->result, op[0], fs_reg(0.0f)); - inst->conditional_mod = BRW_CONDITIONAL_NZ; - emit(BRW_OPCODE_AND, this->result, this->result, fs_reg(1)); - break; case ir_unop_i2b: - assert(op[0].type == BRW_REGISTER_TYPE_D); + temp = this->result; + /* original gen4 does implicit conversion before comparison. */ + if (intel->gen < 5) + temp.type = op[0].type; + + resolve_ud_negate(&op[0]); - inst = emit(BRW_OPCODE_CMP, this->result, op[0], fs_reg(0)); + inst = emit(BRW_OPCODE_CMP, temp, op[0], fs_reg(0.0f)); inst->conditional_mod = BRW_CONDITIONAL_NZ; - emit(BRW_OPCODE_AND, this->result, this->result, fs_reg(1)); break; case ir_unop_trunc: -- 2.30.2