Mesa (master): r300-gallium: Don't emit UCP planes for SW TCL.

Corbin Simpson csimpson at kemper.freedesktop.org
Tue Jun 9 03:03:53 UTC 2009


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

Author: Corbin Simpson <MostAwesomeDude at gmail.com>
Date:   Mon Jun  8 19:55:33 2009 -0700

r300-gallium: Don't emit UCP planes for SW TCL.

---

 src/gallium/drivers/r300/r300_emit.c            |    4 ++++
 src/gallium/drivers/r300/r300_state.c           |   10 +++++++---
 src/gallium/drivers/r300/r300_state_invariant.c |    2 +-
 3 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/src/gallium/drivers/r300/r300_emit.c b/src/gallium/drivers/r300/r300_emit.c
index d81abe4..818880c 100644
--- a/src/gallium/drivers/r300/r300_emit.c
+++ b/src/gallium/drivers/r300/r300_emit.c
@@ -63,6 +63,10 @@ void r300_emit_clip_state(struct r300_context* r300,
     struct r300_screen* r300screen = r300_screen(r300->context.screen);
     CS_LOCALS(r300);
 
+    if (!r300screen->caps->has_tcl) {
+        return;
+    }
+
     BEGIN_CS(5 + (6 * 4));
     OUT_CS_REG(R300_VAP_PVS_VECTOR_INDX_REG,
             (r300screen->caps->is_r500 ?
diff --git a/src/gallium/drivers/r300/r300_state.c b/src/gallium/drivers/r300/r300_state.c
index 29e7219..01e2b51 100644
--- a/src/gallium/drivers/r300/r300_state.c
+++ b/src/gallium/drivers/r300/r300_state.c
@@ -120,9 +120,13 @@ static void r300_set_clip_state(struct pipe_context* pipe,
 {
     struct r300_context* r300 = r300_context(pipe);
 
-    r300->clip_state = *state;
-
-    r300->dirty_state |= R300_NEW_CLIP;
+    if (r300_screen(pipe->screen)->caps->has_tcl) {
+        r300->clip_state = *state;
+        r300->dirty_state |= R300_NEW_CLIP;
+    } else {
+        draw_flush(r300->draw);
+        draw_set_clip_state(r300->draw, state);
+    }
 }
 
 static void
diff --git a/src/gallium/drivers/r300/r300_state_invariant.c b/src/gallium/drivers/r300/r300_state_invariant.c
index 60eff08..e438114 100644
--- a/src/gallium/drivers/r300/r300_state_invariant.c
+++ b/src/gallium/drivers/r300/r300_state_invariant.c
@@ -69,7 +69,7 @@ void r300_emit_invariant_state(struct r300_context* r300)
     END_CS;
 
     /* XXX unsorted stuff from surface_fill */
-    BEGIN_CS(75 + (caps->has_tcl ? 7 : 0));
+    BEGIN_CS(77 + (caps->has_tcl ? 5 : 0));
     /* Flush PVS. */
     OUT_CS_REG(R300_VAP_PVS_STATE_FLUSH_REG, 0x0);
 




More information about the mesa-commit mailing list