Commit bc871a1b authored by Marek Olšák's avatar Marek Olšák

mesa: don't flag _NEW_POLYGON for st/mesa

Reviewed-by: default avatarNicolai Hähnle <nicolai.haehnle@amd.com>
Reviewed-by: Brian Paul's avatarBrian Paul <brianp@vmware.com>
Reviewed-by: Timothy Arceri's avatarTimothy Arceri <tarceri@itsqueeze.com>
parent 00173d91
......@@ -382,7 +382,9 @@ _mesa_set_enable(struct gl_context *ctx, GLenum cap, GLboolean state)
case GL_CULL_FACE:
if (ctx->Polygon.CullFlag == state)
return;
FLUSH_VERTICES(ctx, _NEW_POLYGON);
FLUSH_VERTICES(ctx,
ctx->DriverFlags.NewPolygonState ? 0 : _NEW_POLYGON);
ctx->NewDriverState |= ctx->DriverFlags.NewPolygonState;
ctx->Polygon.CullFlag = state;
break;
case GL_DEPTH_TEST:
......@@ -650,7 +652,9 @@ _mesa_set_enable(struct gl_context *ctx, GLenum cap, GLboolean state)
goto invalid_enum_error;
if (ctx->Polygon.SmoothFlag == state)
return;
FLUSH_VERTICES(ctx, _NEW_POLYGON);
FLUSH_VERTICES(ctx,
ctx->DriverFlags.NewPolygonState ? 0 : _NEW_POLYGON);
ctx->NewDriverState |= ctx->DriverFlags.NewPolygonState;
ctx->Polygon.SmoothFlag = state;
break;
case GL_POLYGON_STIPPLE:
......@@ -658,7 +662,9 @@ _mesa_set_enable(struct gl_context *ctx, GLenum cap, GLboolean state)
goto invalid_enum_error;
if (ctx->Polygon.StippleFlag == state)
return;
FLUSH_VERTICES(ctx, _NEW_POLYGON);
FLUSH_VERTICES(ctx,
ctx->DriverFlags.NewPolygonState ? 0 : _NEW_POLYGON);
ctx->NewDriverState |= ctx->DriverFlags.NewPolygonState;
ctx->Polygon.StippleFlag = state;
break;
case GL_POLYGON_OFFSET_POINT:
......@@ -666,7 +672,9 @@ _mesa_set_enable(struct gl_context *ctx, GLenum cap, GLboolean state)
goto invalid_enum_error;
if (ctx->Polygon.OffsetPoint == state)
return;
FLUSH_VERTICES(ctx, _NEW_POLYGON);
FLUSH_VERTICES(ctx,
ctx->DriverFlags.NewPolygonState ? 0 : _NEW_POLYGON);
ctx->NewDriverState |= ctx->DriverFlags.NewPolygonState;
ctx->Polygon.OffsetPoint = state;
break;
case GL_POLYGON_OFFSET_LINE:
......@@ -674,13 +682,17 @@ _mesa_set_enable(struct gl_context *ctx, GLenum cap, GLboolean state)
goto invalid_enum_error;
if (ctx->Polygon.OffsetLine == state)
return;
FLUSH_VERTICES(ctx, _NEW_POLYGON);
FLUSH_VERTICES(ctx,
ctx->DriverFlags.NewPolygonState ? 0 : _NEW_POLYGON);
ctx->NewDriverState |= ctx->DriverFlags.NewPolygonState;
ctx->Polygon.OffsetLine = state;
break;
case GL_POLYGON_OFFSET_FILL:
if (ctx->Polygon.OffsetFill == state)
return;
FLUSH_VERTICES(ctx, _NEW_POLYGON);
FLUSH_VERTICES(ctx,
ctx->DriverFlags.NewPolygonState ? 0 : _NEW_POLYGON);
ctx->NewDriverState |= ctx->DriverFlags.NewPolygonState;
ctx->Polygon.OffsetFill = state;
break;
case GL_RESCALE_NORMAL_EXT:
......
......@@ -4520,6 +4520,9 @@ struct gl_driver_flags
/** gl_context::Transform::DepthClamp */
uint64_t NewDepthClamp;
/** gl_context::Polygon */
uint64_t NewPolygonState;
/** gl_context::ViewportArray */
uint64_t NewViewport;
};
......
......@@ -66,7 +66,8 @@ _mesa_CullFace( GLenum mode )
if (ctx->Polygon.CullFaceMode == mode)
return;
FLUSH_VERTICES(ctx, _NEW_POLYGON);
FLUSH_VERTICES(ctx, ctx->DriverFlags.NewPolygonState ? 0 : _NEW_POLYGON);
ctx->NewDriverState |= ctx->DriverFlags.NewPolygonState;
ctx->Polygon.CullFaceMode = mode;
if (ctx->Driver.CullFace)
......@@ -101,7 +102,8 @@ _mesa_FrontFace( GLenum mode )
return;
}
FLUSH_VERTICES(ctx, _NEW_POLYGON);
FLUSH_VERTICES(ctx, ctx->DriverFlags.NewPolygonState ? 0 : _NEW_POLYGON);
ctx->NewDriverState |= ctx->DriverFlags.NewPolygonState;
ctx->Polygon.FrontFace = mode;
if (ctx->Driver.FrontFace)
......@@ -153,13 +155,15 @@ _mesa_PolygonMode( GLenum face, GLenum mode )
}
if (ctx->Polygon.FrontMode == mode)
return;
FLUSH_VERTICES(ctx, _NEW_POLYGON);
FLUSH_VERTICES(ctx, ctx->DriverFlags.NewPolygonState ? 0 : _NEW_POLYGON);
ctx->NewDriverState |= ctx->DriverFlags.NewPolygonState;
ctx->Polygon.FrontMode = mode;
break;
case GL_FRONT_AND_BACK:
if (ctx->Polygon.FrontMode == mode && ctx->Polygon.BackMode == mode)
return;
FLUSH_VERTICES(ctx, _NEW_POLYGON);
FLUSH_VERTICES(ctx, ctx->DriverFlags.NewPolygonState ? 0 : _NEW_POLYGON);
ctx->NewDriverState |= ctx->DriverFlags.NewPolygonState;
ctx->Polygon.FrontMode = mode;
ctx->Polygon.BackMode = mode;
break;
......@@ -170,7 +174,8 @@ _mesa_PolygonMode( GLenum face, GLenum mode )
}
if (ctx->Polygon.BackMode == mode)
return;
FLUSH_VERTICES(ctx, _NEW_POLYGON);
FLUSH_VERTICES(ctx, ctx->DriverFlags.NewPolygonState ? 0 : _NEW_POLYGON);
ctx->NewDriverState |= ctx->DriverFlags.NewPolygonState;
ctx->Polygon.BackMode = mode;
break;
default:
......@@ -252,7 +257,8 @@ _mesa_polygon_offset_clamp(struct gl_context *ctx,
ctx->Polygon.OffsetClamp == clamp)
return;
FLUSH_VERTICES(ctx, _NEW_POLYGON);
FLUSH_VERTICES(ctx, ctx->DriverFlags.NewPolygonState ? 0 : _NEW_POLYGON);
ctx->NewDriverState |= ctx->DriverFlags.NewPolygonState;
ctx->Polygon.OffsetFactor = factor;
ctx->Polygon.OffsetUnits = units;
ctx->Polygon.OffsetClamp = clamp;
......
......@@ -460,7 +460,10 @@ _mesa_ClipControl(GLenum origin, GLenum depth)
ctx->Transform.ClipOrigin = origin;
/* Affects the winding order of the front face. */
ctx->NewState |= _NEW_POLYGON;
if (ctx->DriverFlags.NewPolygonState)
ctx->NewDriverState |= ctx->DriverFlags.NewPolygonState;
else
ctx->NewState |= _NEW_POLYGON;
if (ctx->Driver.FrontFace)
ctx->Driver.FrontFace(ctx, ctx->Polygon.FrontFace);
......
......@@ -212,8 +212,7 @@ st_invalidate_state(struct gl_context * ctx)
if (new_state & (_NEW_LIGHT |
_NEW_LINE |
_NEW_POINT |
_NEW_POLYGON))
_NEW_POINT))
st->dirty |= ST_NEW_RASTERIZER;
if (new_state & _NEW_PROJECTION &&
......@@ -524,6 +523,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->NewPolygonState = ST_NEW_RASTERIZER;
f->NewViewport = ST_NEW_VIEWPORT;
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment