aboutsummaryrefslogtreecommitdiffstats
path: root/src/mesa
diff options
context:
space:
mode:
Diffstat (limited to 'src/mesa')
-rw-r--r--src/mesa/main/enable.c6
-rw-r--r--src/mesa/main/lines.c6
-rw-r--r--src/mesa/main/mtypes.h3
-rw-r--r--src/mesa/state_tracker/st_context.c2
4 files changed, 12 insertions, 5 deletions
diff --git a/src/mesa/main/enable.c b/src/mesa/main/enable.c
index cb873c9cf57..752a740c861 100644
--- a/src/mesa/main/enable.c
+++ b/src/mesa/main/enable.c
@@ -448,7 +448,8 @@ _mesa_set_enable(struct gl_context *ctx, GLenum cap, GLboolean state)
goto invalid_enum_error;
if (ctx->Line.SmoothFlag == state)
return;
- FLUSH_VERTICES(ctx, _NEW_LINE);
+ FLUSH_VERTICES(ctx, ctx->DriverFlags.NewLineState ? 0 : _NEW_LINE);
+ ctx->NewDriverState |= ctx->DriverFlags.NewLineState;
ctx->Line.SmoothFlag = state;
break;
case GL_LINE_STIPPLE:
@@ -456,7 +457,8 @@ _mesa_set_enable(struct gl_context *ctx, GLenum cap, GLboolean state)
goto invalid_enum_error;
if (ctx->Line.StippleFlag == state)
return;
- FLUSH_VERTICES(ctx, _NEW_LINE);
+ FLUSH_VERTICES(ctx, ctx->DriverFlags.NewLineState ? 0 : _NEW_LINE);
+ ctx->NewDriverState |= ctx->DriverFlags.NewLineState;
ctx->Line.StippleFlag = state;
break;
case GL_INDEX_LOGIC_OP:
diff --git a/src/mesa/main/lines.c b/src/mesa/main/lines.c
index 93b80af0dc4..d83a7d88d12 100644
--- a/src/mesa/main/lines.c
+++ b/src/mesa/main/lines.c
@@ -72,7 +72,8 @@ _mesa_LineWidth( GLfloat width )
return;
}
- FLUSH_VERTICES(ctx, _NEW_LINE);
+ FLUSH_VERTICES(ctx, ctx->DriverFlags.NewLineState ? 0 : _NEW_LINE);
+ ctx->NewDriverState |= ctx->DriverFlags.NewLineState;
ctx->Line.Width = width;
if (ctx->Driver.LineWidth)
@@ -106,7 +107,8 @@ _mesa_LineStipple( GLint factor, GLushort pattern )
ctx->Line.StipplePattern == pattern)
return;
- FLUSH_VERTICES(ctx, _NEW_LINE);
+ FLUSH_VERTICES(ctx, ctx->DriverFlags.NewLineState ? 0 : _NEW_LINE);
+ ctx->NewDriverState |= ctx->DriverFlags.NewLineState;
ctx->Line.StippleFactor = factor;
ctx->Line.StipplePattern = pattern;
diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h
index 57f775c865d..d55451a1eac 100644
--- a/src/mesa/main/mtypes.h
+++ b/src/mesa/main/mtypes.h
@@ -4520,6 +4520,9 @@ struct gl_driver_flags
/** gl_context::Transform::DepthClamp */
uint64_t NewDepthClamp;
+ /** gl_context::Line */
+ uint64_t NewLineState;
+
/** gl_context::Polygon */
uint64_t NewPolygonState;
diff --git a/src/mesa/state_tracker/st_context.c b/src/mesa/state_tracker/st_context.c
index cf296c0ea73..b200b900f94 100644
--- a/src/mesa/state_tracker/st_context.c
+++ b/src/mesa/state_tracker/st_context.c
@@ -211,7 +211,6 @@ st_invalidate_state(struct gl_context * ctx)
}
if (new_state & (_NEW_LIGHT |
- _NEW_LINE |
_NEW_POINT))
st->dirty |= ST_NEW_RASTERIZER;
@@ -523,6 +522,7 @@ static void st_init_driver_flags(struct st_context *st)
f->NewClipPlane = ST_NEW_CLIP_STATE;
f->NewClipPlaneEnable = ST_NEW_RASTERIZER;
f->NewDepthClamp = ST_NEW_RASTERIZER;
+ f->NewLineState = ST_NEW_RASTERIZER;
f->NewPolygonState = ST_NEW_RASTERIZER;
f->NewViewport = ST_NEW_VIEWPORT;
}