i965: Don't set brw_wm_prog_key::iz_lookup on Gen6+.
authorKenneth Graunke <kenneth@whitecape.org>
Sat, 16 Jun 2012 23:34:50 +0000 (16:34 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Wed, 20 Jun 2012 00:36:48 +0000 (17:36 -0700)
Sandy Bridge and later don't use this field, so there's no point in
setting it.  It can only cause harmful state-based recompiles.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
src/mesa/drivers/dri/i965/brw_wm.c

index 63c74ad..e919e5a 100644 (file)
@@ -411,6 +411,7 @@ static void brw_wm_populate_key( struct brw_context *brw,
                                 struct brw_wm_prog_key *key )
 {
    struct gl_context *ctx = &brw->intel.ctx;
+   struct intel_context *intel = &brw->intel;
    /* BRW_NEW_FRAGMENT_PROGRAM */
    const struct brw_fragment_program *fp = 
       (struct brw_fragment_program *)brw->fragment_program;
@@ -425,28 +426,30 @@ static void brw_wm_populate_key( struct brw_context *brw,
     */
    /* _NEW_COLOR */
    key->alpha_test = ctx->Color.AlphaEnabled;
-   if (fp->program.UsesKill ||
-       ctx->Color.AlphaEnabled)
-      lookup |= IZ_PS_KILL_ALPHATEST_BIT;
 
-   if (fp->program.Base.OutputsWritten & BITFIELD64_BIT(FRAG_RESULT_DEPTH))
-      lookup |= IZ_PS_COMPUTES_DEPTH_BIT;
+   if (intel->gen < 6) {
+      if (fp->program.UsesKill || ctx->Color.AlphaEnabled)
+        lookup |= IZ_PS_KILL_ALPHATEST_BIT;
+
+      if (fp->program.Base.OutputsWritten & BITFIELD64_BIT(FRAG_RESULT_DEPTH))
+        lookup |= IZ_PS_COMPUTES_DEPTH_BIT;
 
-   /* _NEW_DEPTH */
-   if (ctx->Depth.Test)
-      lookup |= IZ_DEPTH_TEST_ENABLE_BIT;
+      /* _NEW_DEPTH */
+      if (ctx->Depth.Test)
+        lookup |= IZ_DEPTH_TEST_ENABLE_BIT;
 
-   if (ctx->Depth.Test &&  
-       ctx->Depth.Mask) /* ?? */
-      lookup |= IZ_DEPTH_WRITE_ENABLE_BIT;
+      if (ctx->Depth.Test && ctx->Depth.Mask) /* ?? */
+        lookup |= IZ_DEPTH_WRITE_ENABLE_BIT;
 
-   /* _NEW_STENCIL */
-   if (ctx->Stencil._Enabled) {
-      lookup |= IZ_STENCIL_TEST_ENABLE_BIT;
+      /* _NEW_STENCIL */
+      if (ctx->Stencil._Enabled) {
+        lookup |= IZ_STENCIL_TEST_ENABLE_BIT;
 
-      if (ctx->Stencil.WriteMask[0] ||
-         ctx->Stencil.WriteMask[ctx->Stencil._BackFace])
-        lookup |= IZ_STENCIL_WRITE_ENABLE_BIT;
+        if (ctx->Stencil.WriteMask[0] ||
+            ctx->Stencil.WriteMask[ctx->Stencil._BackFace])
+           lookup |= IZ_STENCIL_WRITE_ENABLE_BIT;
+      }
+      key->iz_lookup = lookup;
    }
 
    line_aa = AA_NEVER;
@@ -475,7 +478,6 @@ static void brw_wm_populate_key( struct brw_context *brw,
       }
    }
 
-   key->iz_lookup = lookup;
    key->line_aa = line_aa;
    key->stats_wm = brw->intel.stats_wm;