On 05/12/2011 09:05 PM, Eric Anholt wrote:
Fixes glean pointAtten.
---
  src/mesa/drivers/dri/i965/gen6_sf_state.c |    9 +++++++--
  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 50a5ad3..f96cfe5 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, in fixed point */
+   dw4 |= CLAMP(U_FIXED(point_size, 3), 1, 0x7ff);
+
     if (ctx->Point.SpriteOrigin == GL_LOWER_LEFT)
        dw1 |= GEN6_SF_POINT_SPRITE_LOWERLEFT;

Why the change to clamp in fixed point? Unless it's necessary for correctness, I'd prefer to stick with 0.125 and 255.875, since those are directly readable/searchable in the hardware documentation, while 0x7ff is not.

What about:
/* 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);

--Kenneth
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to