mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-03 05:00:09 +01:00
mesa/gallium: Signal _NEW_TRANSFORM from glClipControl.
This removes the need for the gallium rasterizer state to listen to viewport changes. Thanks to Marek Olšák <maraeo@gmail.com>. Reviewed-by: Marek Olšák <marek.olsak@amd.com> Signed-off-by: Mathias Froehlich <Mathias.Froehlich@web.de>
This commit is contained in:
parent
600066af93
commit
2c2ada6720
2 changed files with 6 additions and 13 deletions
|
|
@ -459,15 +459,14 @@ _mesa_ClipControl(GLenum origin, GLenum depth)
|
|||
ctx->Transform.ClipDepthMode == depth)
|
||||
return;
|
||||
|
||||
FLUSH_VERTICES(ctx, 0);
|
||||
/* Affects transform state and the viewport transform */
|
||||
FLUSH_VERTICES(ctx, _NEW_TRANSFORM | _NEW_VIEWPORT);
|
||||
|
||||
if (ctx->Transform.ClipOrigin != origin) {
|
||||
ctx->Transform.ClipOrigin = origin;
|
||||
|
||||
/* Affects the winding order of the front face. */
|
||||
ctx->NewState |= _NEW_POLYGON;
|
||||
/* Affects the y component of the viewport transform. */
|
||||
ctx->NewState |= _NEW_VIEWPORT;
|
||||
|
||||
if (ctx->Driver.FrontFace)
|
||||
ctx->Driver.FrontFace(ctx, ctx->Polygon.FrontFace);
|
||||
|
|
@ -476,9 +475,6 @@ _mesa_ClipControl(GLenum origin, GLenum depth)
|
|||
if (ctx->Transform.ClipDepthMode != depth) {
|
||||
ctx->Transform.ClipDepthMode = depth;
|
||||
|
||||
/* Affects the z part of the viewpoint transform. */
|
||||
ctx->NewState |= _NEW_VIEWPORT;
|
||||
|
||||
if (ctx->Driver.DepthRange)
|
||||
ctx->Driver.DepthRange(ctx);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -72,7 +72,7 @@ static void update_raster_state( struct st_context *st )
|
|||
{
|
||||
raster->front_ccw = (ctx->Polygon.FrontFace == GL_CCW);
|
||||
|
||||
/* _NEW_VIEWPORT */
|
||||
/* _NEW_TRANSFORM */
|
||||
if (ctx->Transform.ClipOrigin == GL_UPPER_LEFT) {
|
||||
raster->front_ccw ^= 1;
|
||||
}
|
||||
|
|
@ -246,13 +246,10 @@ static void update_raster_state( struct st_context *st )
|
|||
raster->half_pixel_center = 1;
|
||||
if (st_fb_orientation(ctx->DrawBuffer) == Y_0_TOP)
|
||||
raster->bottom_edge_rule = 1;
|
||||
/* _NEW_VIEWPORT */
|
||||
/* _NEW_TRANSFORM */
|
||||
if (ctx->Transform.ClipOrigin == GL_UPPER_LEFT)
|
||||
raster->bottom_edge_rule ^= 1;
|
||||
|
||||
/* _NEW_VIEWPORT */
|
||||
raster->clip_halfz = (ctx->Transform.ClipDepthMode == GL_ZERO_TO_ONE);
|
||||
|
||||
/* ST_NEW_RASTERIZER */
|
||||
raster->rasterizer_discard = ctx->RasterDiscard;
|
||||
|
||||
|
|
@ -267,6 +264,7 @@ static void update_raster_state( struct st_context *st )
|
|||
/* _NEW_TRANSFORM */
|
||||
raster->depth_clip = !ctx->Transform.DepthClamp;
|
||||
raster->clip_plane_enable = ctx->Transform.ClipPlanesEnabled;
|
||||
raster->clip_halfz = (ctx->Transform.ClipDepthMode == GL_ZERO_TO_ONE);
|
||||
|
||||
cso_set_rasterizer(st->cso_context, raster);
|
||||
}
|
||||
|
|
@ -283,8 +281,7 @@ const struct st_tracked_state st_update_rasterizer = {
|
|||
_NEW_PROGRAM |
|
||||
_NEW_SCISSOR |
|
||||
_NEW_FRAG_CLAMP |
|
||||
_NEW_TRANSFORM |
|
||||
_NEW_VIEWPORT), /* mesa state dependencies*/
|
||||
_NEW_TRANSFORM), /* mesa state dependencies*/
|
||||
(ST_NEW_VERTEX_PROGRAM |
|
||||
ST_NEW_RASTERIZER), /* state tracker dependencies */
|
||||
},
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue