break;
case GL_POLYGON_STIPPLE_BIT:
memcpy( ctx->PolygonStipple, attr->data, 32*sizeof(GLuint) );
- ctx->NewState |= _NEW_POLYGONSTIPPLE;
+
+ if (ctx->DriverFlags.NewPolygonStipple)
+ ctx->NewDriverState |= ctx->DriverFlags.NewPolygonStipple;
+ else
+ ctx->NewState |= _NEW_POLYGONSTIPPLE;
+
if (ctx->Driver.PolygonStipple)
ctx->Driver.PolygonStipple( ctx, (const GLubyte *) attr->data );
break;
/** gl_context::Polygon */
uint64_t NewPolygonState;
+ /** gl_context::PolygonStipple */
+ uint64_t NewPolygonStipple;
+
/** gl_context::ViewportArray */
uint64_t NewViewport;
};
if (MESA_VERBOSE & VERBOSE_API)
_mesa_debug(ctx, "glPolygonStipple\n");
- FLUSH_VERTICES(ctx, _NEW_POLYGONSTIPPLE);
+ FLUSH_VERTICES(ctx, ctx->DriverFlags.NewPolygonStipple ? 0 :
+ _NEW_POLYGONSTIPPLE);
+ ctx->NewDriverState |= ctx->DriverFlags.NewPolygonStipple;
pattern = _mesa_map_validate_pbo_source(ctx, 2,
&ctx->Unpack, 32, 32, 1,
if (new_state & _NEW_FOG)
st->dirty |= ST_NEW_FS_STATE;
- if (new_state & _NEW_POLYGONSTIPPLE)
- st->dirty |= ST_NEW_POLY_STIPPLE;
-
if (new_state & _NEW_FRAG_CLAMP) {
if (st->clamp_frag_color_in_shader)
st->dirty |= ST_NEW_FS_STATE;
f->NewDepthClamp = ST_NEW_RASTERIZER;
f->NewLineState = ST_NEW_RASTERIZER;
f->NewPolygonState = ST_NEW_RASTERIZER;
+ f->NewPolygonStipple = ST_NEW_POLY_STIPPLE;
f->NewViewport = ST_NEW_VIEWPORT;
}