aboutsummaryrefslogtreecommitdiff
path: root/mesalib/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
diff options
context:
space:
mode:
authormarha <marha@users.sourceforge.net>2014-09-08 23:27:52 +0200
committermarha <marha@users.sourceforge.net>2014-09-08 23:27:52 +0200
commitcb346e228aeb500cd61ec86644c034c238332d3b (patch)
tree5902a043a3643391e689ebb146e6fd02af1c4b8e /mesalib/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
parent4aef26e36bc9aba4cd67c158e17f5fb93c9e018c (diff)
downloadvcxsrv-cb346e228aeb500cd61ec86644c034c238332d3b.tar.gz
vcxsrv-cb346e228aeb500cd61ec86644c034c238332d3b.tar.bz2
vcxsrv-cb346e228aeb500cd61ec86644c034c238332d3b.zip
xkeyboard-config mesa git update 8 Sep 2014
xkeyboard-config commit 1b9901151cdb22e413319e6fca80fbbfc5e51502 mesa commit 12fb74fe895fe9954df127ca0ec6e4422fffb156
Diffstat (limited to 'mesalib/src/mesa/state_tracker/st_glsl_to_tgsi.cpp')
-rw-r--r--mesalib/src/mesa/state_tracker/st_glsl_to_tgsi.cpp14
1 files changed, 12 insertions, 2 deletions
diff --git a/mesalib/src/mesa/state_tracker/st_glsl_to_tgsi.cpp b/mesalib/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
index dd9c84f1a..62e4101d1 100644
--- a/mesalib/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
+++ b/mesalib/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
@@ -3091,8 +3091,18 @@ glsl_to_tgsi_visitor::visit(ir_discard *ir)
{
if (ir->condition) {
ir->condition->accept(this);
- this->result.negate = ~this->result.negate;
- emit(ir, TGSI_OPCODE_KILL_IF, undef_dst, this->result);
+ st_src_reg condition = this->result;
+
+ /* Convert the bool condition to a float so we can negate. */
+ if (native_integers) {
+ st_src_reg temp = get_temp(ir->condition->type);
+ emit(ir, TGSI_OPCODE_AND, st_dst_reg(temp),
+ condition, st_src_reg_for_float(1.0));
+ condition = temp;
+ }
+
+ condition.negate = ~condition.negate;
+ emit(ir, TGSI_OPCODE_KILL_IF, undef_dst, condition);
} else {
/* unconditional kil */
emit(ir, TGSI_OPCODE_KILL);