summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Anholt <eric@anholt.net>2011-05-12 14:19:51 -0700
committerEric Anholt <eric@anholt.net>2011-05-18 13:57:17 -0700
commit64f8ddaf9b89e99396862fa38af631dd08b8c0c5 (patch)
treee28ab55ac6c96491addb415f2bc90cc7e8238734
parent90e922267a89fa9bef254bb257405531ceff7356 (diff)
i965/gen6: Add support for point min/max size from ARB_point_parameters.
Fixes glean pointAtten.
-rw-r--r--src/mesa/drivers/dri/i965/gen6_sf_state.c9
1 files 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 8c06ff8f19..84028e4e75 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;