[915] Make polygon stipple use pre-unpacked pixel data.
authorEric Anholt <eric@anholt.net>
Tue, 18 Dec 2007 22:14:44 +0000 (14:14 -0800)
committerEric Anholt <eric@anholt.net>
Tue, 18 Dec 2007 22:14:44 +0000 (14:14 -0800)
This fixes a crash when stippling using data from a PBO.

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

index e5d8d279936e9c57702a0b7c85d32f0437c85d5b..21d2fe6289f76a0749123cf753f4ea989f065e5f 100644 (file)
@@ -311,7 +311,7 @@ static void
 i915PolygonStipple(GLcontext * ctx, const GLubyte * mask)
 {
    struct i915_context *i915 = I915_CONTEXT(ctx);
-   const GLubyte *m = mask;
+   const GLubyte *m;
    GLubyte p[4];
    int i, j, k;
    int active = (ctx->Polygon.StippleFlag &&
@@ -323,6 +323,12 @@ i915PolygonStipple(GLcontext * ctx, const GLubyte * mask)
       i915->state.Stipple[I915_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;