Mesa (master): r300g/swtcl: fix WPOS

Marek Olšák mareko at kemper.freedesktop.org
Fri May 28 01:31:25 UTC 2010


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

Author: Marek Olšák <maraeo at gmail.com>
Date:   Fri May 28 01:39:27 2010 +0200

r300g/swtcl: fix WPOS

There you are! r300->viewport_state is undefined when using SW TCL.

Piglit score (r300g.tests):
HW TCL: 231/275
SW TCL: 233/275

---

 src/gallium/drivers/r300/r300_emit.c    |   13 ++++++-------
 src/gallium/drivers/r300/r300_vs_draw.c |    4 ++--
 2 files changed, 8 insertions(+), 9 deletions(-)

diff --git a/src/gallium/drivers/r300/r300_emit.c b/src/gallium/drivers/r300/r300_emit.c
index 123b084..a55a545 100644
--- a/src/gallium/drivers/r300/r300_emit.c
+++ b/src/gallium/drivers/r300/r300_emit.c
@@ -134,7 +134,6 @@ static const float * get_rc_constant_state(
     struct r300_context * r300,
     struct rc_constant * constant)
 {
-    struct r300_viewport_state* viewport = r300->viewport_state.state;
     struct r300_textures_state* texstate = r300->textures_state.state;
     static float vec[4] = { 0.0, 0.0, 0.0, 1.0 };
     struct pipe_resource *tex;
@@ -151,15 +150,15 @@ static const float * get_rc_constant_state(
             break;
 
         case RC_STATE_R300_VIEWPORT_SCALE:
-            vec[0] = viewport->xscale;
-            vec[1] = viewport->yscale;
-            vec[2] = viewport->zscale;
+            vec[0] = r300->viewport.scale[0];
+            vec[1] = r300->viewport.scale[1];
+            vec[2] = r300->viewport.scale[2];
             break;
 
         case RC_STATE_R300_VIEWPORT_OFFSET:
-            vec[0] = viewport->xoffset;
-            vec[1] = viewport->yoffset;
-            vec[2] = viewport->zoffset;
+            vec[0] = r300->viewport.translate[0];
+            vec[1] = r300->viewport.translate[1];
+            vec[2] = r300->viewport.translate[2];
             break;
 
         default:
diff --git a/src/gallium/drivers/r300/r300_vs_draw.c b/src/gallium/drivers/r300/r300_vs_draw.c
index 5858492..d64040b 100644
--- a/src/gallium/drivers/r300/r300_vs_draw.c
+++ b/src/gallium/drivers/r300/r300_vs_draw.c
@@ -352,7 +352,7 @@ void r300_draw_init_vertex_shader(struct draw_context *draw,
     /* Init the VS output table for the rasterizer. */
     r300_init_vs_outputs(vs);
 
-    /**/
+    /* Make the last generic be WPOS. */
+    vs->outputs.wpos = vs->outputs.generic[transform.last_generic + 1];
     vs->outputs.generic[transform.last_generic + 1] = ATTR_UNUSED;
-    vs->outputs.wpos -= 1;
 }




More information about the mesa-commit mailing list