i965: Make rasterization of single and multiple quad prims match.
authorEric Anholt <eric@anholt.net>
Mon, 17 May 2010 17:42:25 +0000 (10:42 -0700)
committerEric Anholt <eric@anholt.net>
Mon, 17 May 2010 17:42:25 +0000 (10:42 -0700)
This is trying to follow the spirit of the invariance rules, though
they're not specific on this point.  Fixes quad-invariance piglit test
while retaining the 22s -> 18s win on glean blendFunc.

This was a regression in c67d9d84f501f145f841c0b981caff6f4dfd936f.

src/mesa/drivers/dri/i965/brw_gs.c

index 5fac67c91183b1402138f5f2678d3cc2d74fb2fc..94d93f3aa65bca5a4eb962ee9de8262e94ee2e0a 100644 (file)
@@ -173,6 +173,12 @@ static void populate_key( struct brw_context *brw,
    
    /* _NEW_LIGHT */
    key->pv_first = (ctx->Light.ProvokingVertex == GL_FIRST_VERTEX_CONVENTION);
+   if (key->primitive == GL_QUADS && ctx->Light.ShadeModel != GL_FLAT) {
+      /* Provide consistent primitive order with brw_set_prim's
+       * optimization of single quads to trifans.
+       */
+      key->pv_first = GL_TRUE;
+   }
 
    key->need_gs_prog = (key->hint_gs_always ||
                        brw->primitive == GL_QUADS ||