From f6dffd6ee70473dcbf65420a9c635049199f7a4e Mon Sep 17 00:00:00 2001 From: Brian Date: Tue, 10 Jul 2007 13:34:23 -0600 Subject: [PATCH] fix problems with polygon offset --- src/mesa/state_tracker/st_atom_setup.c | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/src/mesa/state_tracker/st_atom_setup.c b/src/mesa/state_tracker/st_atom_setup.c index 457bfaa9ba8..842a87c8a1c 100644 --- a/src/mesa/state_tracker/st_atom_setup.c +++ b/src/mesa/state_tracker/st_atom_setup.c @@ -52,15 +52,15 @@ static GLuint translate_fill( GLenum mode ) } static GLboolean get_offset_flag( GLuint fill_mode, - const struct gl_polygon_attrib *Polygon ) + const struct gl_polygon_attrib *p ) { switch (fill_mode) { case PIPE_POLYGON_MODE_POINT: - return Polygon->OffsetPoint; + return p->OffsetPoint; case PIPE_POLYGON_MODE_LINE: - return Polygon->OffsetLine; + return p->OffsetLine; case PIPE_POLYGON_MODE_FILL: - return Polygon->OffsetFill; + return p->OffsetFill; default: assert(0); return 0; @@ -141,16 +141,15 @@ static void update_setup_state( struct st_context *st ) } } - /* Hardware does offset for filled prims, but need to do it in - * software for unfilled. - * - * _NEW_POLYGON + /* _NEW_POLYGON */ - if (setup.fill_cw != PIPE_POLYGON_MODE_FILL) + if (ctx->Polygon.OffsetUnits != 0.0 || + ctx->Polygon.OffsetFactor != 0.0) { setup.offset_cw = get_offset_flag( setup.fill_cw, &ctx->Polygon ); - - if (setup.fill_ccw != PIPE_POLYGON_MODE_FILL) setup.offset_ccw = get_offset_flag( setup.fill_ccw, &ctx->Polygon ); + setup.offset_units = ctx->Polygon.OffsetUnits; + setup.offset_scale = ctx->Polygon.OffsetFactor; + } if (ctx->Polygon.SmoothFlag) setup.poly_smooth = 1; -- 2.30.2