Mesa (master): i965: Use the new pixel mask location for gen6 ARB_fp KIL instructions.

Eric Anholt anholt at kemper.freedesktop.org
Wed Dec 8 19:15:44 UTC 2010


Module: Mesa
Branch: master
Commit: dba6fde08cca22187ac7bf23462a22147a596683
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=dba6fde08cca22187ac7bf23462a22147a596683

Author: Eric Anholt <eric at anholt.net>
Date:   Wed Dec  8 10:57:22 2010 -0800

i965: Use the new pixel mask location for gen6 ARB_fp KIL instructions.

Fixes:
fp-kil
fp-generic/kil-swizzle.

---

 src/mesa/drivers/dri/i965/brw_wm_emit.c |   10 ++++++++--
 1 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_wm_emit.c b/src/mesa/drivers/dri/i965/brw_wm_emit.c
index 9822b2c..9cb3631 100644
--- a/src/mesa/drivers/dri/i965/brw_wm_emit.c
+++ b/src/mesa/drivers/dri/i965/brw_wm_emit.c
@@ -1305,9 +1305,15 @@ static void emit_kil( struct brw_wm_compile *c,
 		      struct brw_reg *arg0)
 {
    struct brw_compile *p = &c->func;
-   struct brw_reg r0uw = retype(brw_vec1_grf(0, 0), BRW_REGISTER_TYPE_UW);
+   struct intel_context *intel = &p->brw->intel;
+   struct brw_reg pixelmask;
    GLuint i, j;
 
+   if (intel->gen >= 6)
+      pixelmask = retype(brw_vec1_grf(1, 7), BRW_REGISTER_TYPE_UW);
+   else
+      pixelmask = retype(brw_vec1_grf(0, 0), BRW_REGISTER_TYPE_UW);
+
    for (i = 0; i < 4; i++) {
       /* Check if we've already done the comparison for this reg
        * -- common when someone does KIL TEMP.wwww.
@@ -1323,7 +1329,7 @@ static void emit_kil( struct brw_wm_compile *c,
       brw_CMP(p, brw_null_reg(), BRW_CONDITIONAL_GE, arg0[i], brw_imm_f(0));   
       brw_set_predicate_control_flag_value(p, 0xff);
       brw_set_compression_control(p, BRW_COMPRESSION_NONE);
-      brw_AND(p, r0uw, brw_flag_reg(), r0uw);
+      brw_AND(p, pixelmask, brw_flag_reg(), pixelmask);
       brw_pop_insn_state(p);
    }
 }




More information about the mesa-commit mailing list