ir_to_mesa: Add support for conditional discards.
NOTE: This is a candidate for the 7.9 branch. Signed-off-by: Marek Olšák <maraeo@gmail.com> Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
committed by
Kenneth Graunke
parent
2ca9256911
commit
ead2ea89f4
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user