Make sure _NEW_POLYGONSTIPPLE state is set. A simple call case like the following:
glEnable(GL_POLYGON_STIPPLE); glPolygonStipple(pattern); glClear(GL_COLOR_BUFFER_BIT); /* <---!!---> */ glRectf(...); glFlush(); would simply make the polygon stipple fail. The glClear would fire a draw call, it then would reset those state. So, when it about to hangle the glRectf() draw, if would find that no _NEW_POLYGONSTIPPLE state set, thus will not call upload_polygon_stipple function. This would fix all the oglc tristip test fail: basic.strip basic.fan basic.triangles Signed-off-by: Yuanhan Liu <yuanhan....@linux.intel.com> --- src/mesa/drivers/dri/i965/brw_state_upload.c | 11 +++++++++++ 1 files changed, 11 insertions(+), 0 deletions(-) diff --git a/src/mesa/drivers/dri/i965/brw_state_upload.c b/src/mesa/drivers/dri/i965/brw_state_upload.c index 76ffa0d..e34f190 100644 --- a/src/mesa/drivers/dri/i965/brw_state_upload.c +++ b/src/mesa/drivers/dri/i965/brw_state_upload.c @@ -467,6 +467,17 @@ void brw_validate_state( struct brw_context *brw ) brw->state.dirty.brw |= BRW_NEW_VERTEX_PROGRAM; } + /* + * Make sure _NEW_POLYGONSTIPPLE is set + * + * A glClear() call after glPolygonStipple() would reset + * this state. This would cause the later _real_ draw + * submitted with no polygon stipple info(will not call + * upload_polygon_stipple). + */ + if (ctx->Polygon.StippleFlag) + ctx->NewState |= _NEW_POLYGONSTIPPLE; + if ((state->mesa | state->cache | state->brw) == 0) return; -- 1.7.4.4 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev