Mesa (master): r300g: fix gl_PointCoord

Marek Olšák mareko at kemper.freedesktop.org
Wed Aug 25 02:57:21 UTC 2010


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

Author: Marek Olšák <maraeo at gmail.com>
Date:   Wed Aug 25 04:55:01 2010 +0200

r300g: fix gl_PointCoord

Is this hackish or is this the correct way to use point_quad_rasterization?
Copied from nvfx.

---

 src/gallium/drivers/r300/r300_state.c |    9 +++++++--
 1 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/src/gallium/drivers/r300/r300_state.c b/src/gallium/drivers/r300/r300_state.c
index 3e35d7a..47e359c 100644
--- a/src/gallium/drivers/r300/r300_state.c
+++ b/src/gallium/drivers/r300/r300_state.c
@@ -950,6 +950,11 @@ static void* r300_create_rs_state(struct pipe_context* pipe,
     rs->rs = *state;
     rs->rs_draw = *state;
 
+    /* Generate point sprite texture coordinates in GENERIC0
+     * if point_quad_rasterization is TRUE. */
+    rs->rs.sprite_coord_enable = state->point_quad_rasterization *
+                                 (state->sprite_coord_enable | 1);
+
     /* Override some states for Draw. */
     rs->rs_draw.sprite_coord_enable = 0; /* We can do this in HW. */
 
@@ -1051,10 +1056,10 @@ static void* r300_create_rs_state(struct pipe_context* pipe,
 
     /* Point sprites */
     stuffing_enable = 0;
-    if (state->sprite_coord_enable) {
+    if (rs->rs.sprite_coord_enable) {
         stuffing_enable = R300_GB_POINT_STUFF_ENABLE;
         for (i = 0; i < 8; i++) {
-            if (state->sprite_coord_enable & (1 << i))
+            if (rs->rs.sprite_coord_enable & (1 << i))
                 stuffing_enable |=
                     R300_GB_TEX_ST << (R300_GB_TEX0_SOURCE_SHIFT + (i*2));
         }




More information about the mesa-commit mailing list