i965: Fix polygon stipple offset state flagging.
authorEric Anholt <eric@anholt.net>
Mon, 19 Sep 2011 16:26:50 +0000 (09:26 -0700)
committerEric Anholt <eric@anholt.net>
Tue, 20 Sep 2011 17:20:06 +0000 (10:20 -0700)
_NEW_WINDOW_POS wasn't a real Mesa state flag, but we were missing
_NEW_BUFFERS to update the stipple offset when FBO binding or window
size changed, and _NEW_POLYGON to update when stippling gets enabled.

Fixes oglconform's tristrip test.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>
src/mesa/drivers/dri/i965/brw_misc_state.c

index 0807554bed9eec278af9c31c8edb11ff2b34e515..ce4fc84420976e5a0f8e3c14fdbb9f9546c35fe0 100644 (file)
@@ -498,6 +498,7 @@ static void upload_polygon_stipple_offset(struct brw_context *brw)
    struct intel_context *intel = &brw->intel;
    struct gl_context *ctx = &brw->intel.ctx;
 
+   /* _NEW_POLYGON */
    if (!ctx->Polygon.StippleFlag)
       return;
 
@@ -507,7 +508,9 @@ static void upload_polygon_stipple_offset(struct brw_context *brw)
    BEGIN_BATCH(2);
    OUT_BATCH(_3DSTATE_POLY_STIPPLE_OFFSET << 16 | (2-2));
 
-   /* If we're drawing to a system window (ctx->DrawBuffer->Name == 0),
+   /* _NEW_BUFFERS
+    *
+    * If we're drawing to a system window (ctx->DrawBuffer->Name == 0),
     * we have to invert the Y axis in order to match the OpenGL
     * pixel coordinate system, and our offset must be matched
     * to the window position.  If we're drawing to a FBO
@@ -522,11 +525,10 @@ static void upload_polygon_stipple_offset(struct brw_context *brw)
    CACHED_BATCH();
 }
 
-#define _NEW_WINDOW_POS 0x40000000
-
 const struct brw_tracked_state brw_polygon_stipple_offset = {
    .dirty = {
-      .mesa = _NEW_WINDOW_POS | _NEW_POLYGONSTIPPLE,
+      .mesa = (_NEW_BUFFERS |
+              _NEW_POLYGON),
       .brw = BRW_NEW_CONTEXT,
       .cache = 0
    },