diff options
| -rw-r--r-- | src/mesa/program/ir_to_mesa.cpp | 9 | 
1 files changed, 7 insertions, 2 deletions
| diff --git a/src/mesa/program/ir_to_mesa.cpp b/src/mesa/program/ir_to_mesa.cpp index 8f75c82c3e..5dd602fd83 100644 --- a/src/mesa/program/ir_to_mesa.cpp +++ b/src/mesa/program/ir_to_mesa.cpp @@ -2166,9 +2166,14 @@ ir_to_mesa_visitor::visit(ir_discard *ir)  {     struct gl_fragment_program *fp = (struct gl_fragment_program *)this->prog; -   assert(ir->condition == NULL); /* FINISHME */ +   if (ir->condition) { +      ir->condition->accept(this); +      this->result.negate = ~this->result.negate; +      ir_to_mesa_emit_op1(ir, OPCODE_KIL, ir_to_mesa_undef_dst, this->result); +   } else { +      ir_to_mesa_emit_op0(ir, OPCODE_KIL_NV); +   } -   ir_to_mesa_emit_op0(ir, OPCODE_KIL_NV);     fp->UsesKill = GL_TRUE;  } | 
