ir_to_mesa: When emitting a pixel kill, flag that we did so.
authorEric Anholt <eric@anholt.net>
Tue, 31 Aug 2010 20:02:59 +0000 (13:02 -0700)
committerEric Anholt <eric@anholt.net>
Tue, 31 Aug 2010 22:43:49 +0000 (15:43 -0700)
Both i965 and swrast rely on UsesKill to determine whether to do early
depth writes.  Fixes glsl-fs-discard-02.

Bug #29835.

src/mesa/program/ir_to_mesa.cpp

index 8f39a22..57458d0 100644 (file)
@@ -2041,9 +2041,12 @@ ir_to_mesa_visitor::visit(ir_return *ir)
 void
 ir_to_mesa_visitor::visit(ir_discard *ir)
 {
+   struct gl_fragment_program *fp = (struct gl_fragment_program *)this->prog;
+
    assert(ir->condition == NULL); /* FINISHME */
 
    ir_to_mesa_emit_op0(ir, OPCODE_KIL_NV);
+   fp->UsesKill = GL_TRUE;
 }
 
 void