i915: Fix i830 polygon stipple from PBOs.
authorKurt Roeckx <kurt@roeckx.be>
Sat, 3 Mar 2012 01:31:23 +0000 (17:31 -0800)
committerEric Anholt <eric@anholt.net>
Sat, 3 Mar 2012 01:32:15 +0000 (17:32 -0800)
This is a direct port of the i915 patch in
a856da63247a4b403f6350914f732e14d1530ed1.

Fixes glean's pbo test.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=41372
Reviewed-by: Eric Anholt <eric@anholt.net>
NOTE: This is a candidate for release branches.

src/mesa/drivers/dri/i915/i830_state.c

index c6f1b038e32bf24df0f1f7954b900bfe5cb2c14d..ea6e0beaeab6198c531a9f810955a5b5e0ba09ce 100644 (file)
@@ -476,7 +476,7 @@ static void
 i830PolygonStipple(struct gl_context * ctx, const GLubyte * mask)
 {
    struct i830_context *i830 = i830_context(ctx);
-   const GLubyte *m = mask;
+   const GLubyte *m;
    GLubyte p[4];
    int i, j, k;
    int active = (ctx->Polygon.StippleFlag &&
@@ -488,6 +488,12 @@ i830PolygonStipple(struct gl_context * ctx, const GLubyte * mask)
       i830->state.Stipple[I830_STPREG_ST1] &= ~ST1_ENABLE;
    }
 
+   /* Use the already unpacked stipple data from the context rather than the
+    * uninterpreted mask passed in.
+    */
+   mask = (const GLubyte *)ctx->PolygonStipple;
+   m = mask;
+
    p[0] = mask[12] & 0xf;
    p[0] |= p[0] << 4;
    p[1] = mask[8] & 0xf;