Module: Mesa
Branch: master
Commit: 084580fa43320b1a0878b572c6804aa5a40b2f9d
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=084580fa43320b1a0878b572c6804aa5a40b2f9d

Author: Marek Olšák <[email protected]>
Date:   Sat May  8 22:20:39 2010 +0200

r300g: follow pipe_rasterizer_state::point_size_per_vertex

---

 src/gallium/drivers/r300/r300_state.c |   19 +++++++++++++++----
 1 files changed, 15 insertions(+), 4 deletions(-)

diff --git a/src/gallium/drivers/r300/r300_state.c 
b/src/gallium/drivers/r300/r300_state.c
index 5a65f0c..1344415 100644
--- a/src/gallium/drivers/r300/r300_state.c
+++ b/src/gallium/drivers/r300/r300_state.c
@@ -744,10 +744,21 @@ static void* r300_create_rs_state(struct pipe_context* 
pipe,
         (pack_float_16_6x(state->point_size) << R300_POINTSIZE_X_SHIFT);
 
     /* Point size clamping. */
-    psiz = pipe->screen->get_paramf(pipe->screen,
-                                    PIPE_CAP_MAX_POINT_WIDTH);
-    rs->point_minmax =
-        (pack_float_16_6x(psiz)) << R300_GA_POINT_MINMAX_MAX_SHIFT;
+    if (state->point_size_per_vertex) {
+        /* Per-vertex point size.
+         * Clamp to [0, max FB size] */
+        psiz = pipe->screen->get_paramf(pipe->screen,
+                                        PIPE_CAP_MAX_POINT_WIDTH);
+        rs->point_minmax =
+            pack_float_16_6x(psiz) << R300_GA_POINT_MINMAX_MAX_SHIFT;
+    } else {
+        /* We cannot disable the point-size vertex output,
+         * so clamp it. */
+        psiz = state->point_size;
+        rs->point_minmax =
+            (pack_float_16_6x(psiz) << R300_GA_POINT_MINMAX_MIN_SHIFT) |
+            (pack_float_16_6x(psiz) << R300_GA_POINT_MINMAX_MAX_SHIFT);
+    }
 
     /* Line control. */
     rs->line_control = pack_float_16_6x(state->line_width) |

_______________________________________________
mesa-commit mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to