From 64f8ddaf9b89e99396862fa38af631dd08b8c0c5 Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Thu, 12 May 2011 14:19:51 -0700 Subject: [PATCH] i965/gen6: Add support for point min/max size from ARB_point_parameters. Fixes glean pointAtten. --- src/mesa/drivers/dri/i965/gen6_sf_state.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/mesa/drivers/dri/i965/gen6_sf_state.c b/src/mesa/drivers/dri/i965/gen6_sf_state.c index 8c06ff8f190..84028e4e758 100644 --- a/src/mesa/drivers/dri/i965/gen6_sf_state.c +++ b/src/mesa/drivers/dri/i965/gen6_sf_state.c @@ -103,6 +103,7 @@ upload_sf_state(struct brw_context *brw) int attr = 0; int urb_start; int two_side_color = (ctx->Light.Enabled && ctx->Light.Model.TwoSide); + float point_size; /* _NEW_TRANSFORM */ if (ctx->Transform.ClipPlanesEnabled) @@ -209,8 +210,12 @@ upload_sf_state(struct brw_context *brw) ctx->Point._Attenuated)) dw4 |= GEN6_SF_USE_STATE_POINT_WIDTH; - dw4 |= U_FIXED(CLAMP(ctx->Point.Size, 0.125, 255.875), 3) << - GEN6_SF_POINT_WIDTH_SHIFT; + /* Clamp to ARB_point_parameters user limits */ + point_size = CLAMP(ctx->Point.Size, ctx->Point.MinSize, ctx->Point.MaxSize); + + /* Clamp to the hardware limits and convert to fixed point */ + dw4 |= U_FIXED(CLAMP(point_size, 0.125, 255.875), 3); + if (ctx->Point.SpriteOrigin == GL_LOWER_LEFT) dw1 |= GEN6_SF_POINT_SPRITE_LOWERLEFT; -- 2.30.2