Mesa (master): r300-gallium: Clean up more invariant state.

Corbin Simpson csimpson at kemper.freedesktop.org
Sun May 17 20:24:39 UTC 2009


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

Author: Corbin Simpson <MostAwesomeDude at gmail.com>
Date:   Sun May 17 13:23:39 2009 -0700

r300-gallium: Clean up more invariant state.

GA_ENHANCE is now the kernel's problem.

---

 src/gallium/drivers/r300/r300_state_invariant.c |   27 ++++++-----------------
 src/gallium/drivers/r300/r300_surface.c         |   10 +++++---
 2 files changed, 13 insertions(+), 24 deletions(-)

diff --git a/src/gallium/drivers/r300/r300_state_invariant.c b/src/gallium/drivers/r300/r300_state_invariant.c
index 3e1580c..0acbcbf 100644
--- a/src/gallium/drivers/r300/r300_state_invariant.c
+++ b/src/gallium/drivers/r300/r300_state_invariant.c
@@ -34,7 +34,7 @@ void r300_emit_invariant_state(struct r300_context* r300)
     struct r300_capabilities* caps = r300_screen(r300->context.screen)->caps;
     CS_LOCALS(r300);
 
-    BEGIN_CS(30 + (caps->has_tcl ? 2: 0));
+    BEGIN_CS(28 + (caps->has_tcl ? 2: 0));
 
     /*** Graphics Backend (GB) ***/
     /* Various GB enables */
@@ -50,20 +50,6 @@ void r300_emit_invariant_state(struct r300_context* r300)
     /* AA enable */
     OUT_CS_REG(R300_GB_AA_CONFIG, 0x0);
 
-    /*** Geometry Assembly (GA) ***/
-    /* GA errata fixes. */
-    if (caps->is_r500) {
-        OUT_CS_REG(R300_GA_ENHANCE,
-                R300_GA_ENHANCE_DEADLOCK_CNTL_PREVENT_TCL |
-                R300_GA_ENHANCE_FASTSYNC_CNTL_ENABLE |
-                R500_GA_ENHANCE_REG_READWRITE_ENABLE |
-                R500_GA_ENHANCE_REG_NOSTALL_ENABLE);
-    } else {
-        OUT_CS_REG(R300_GA_ENHANCE,
-                R300_GA_ENHANCE_DEADLOCK_CNTL_PREVENT_TCL |
-                R300_GA_ENHANCE_FASTSYNC_CNTL_ENABLE);
-    }
-
     /*** Fog (FG) ***/
     OUT_CS_REG(R300_FG_FOG_BLEND, 0x0);
     OUT_CS_REG(R300_FG_FOG_COLOR_R, 0x0);
@@ -86,7 +72,7 @@ void r300_emit_invariant_state(struct r300_context* r300)
     END_CS;
 
     /* XXX unsorted stuff from surface_fill */
-    BEGIN_CS(79 + (caps->has_tcl ? 7 : 0));
+    BEGIN_CS(77 + (caps->has_tcl ? 7 : 0));
     /* Flush PVS. */
     OUT_CS_REG(R300_VAP_PVS_STATE_FLUSH_REG, 0x0);
 
@@ -113,11 +99,14 @@ void r300_emit_invariant_state(struct r300_context* r300)
     OUT_CS_32F(0.0);
     OUT_CS_REG_SEQ(R300_GA_POINT_S1, 1);
     OUT_CS_32F(1.0);
+    /* XXX line tex stuffing */
+    OUT_CS_REG_SEQ(R300_GA_LINE_S0, 1);
+    OUT_CS_32F(0.0);
+    OUT_CS_REG_SEQ(R300_GA_LINE_S1, 1);
+    OUT_CS_32F(1.0);
     OUT_CS_REG(R300_GA_TRIANGLE_STIPPLE, 0x5 |
         (0x5 << R300_GA_TRIANGLE_STIPPLE_Y_SHIFT_SHIFT));
     /* XXX this big chunk should be refactored into rs_state */
-    OUT_CS_REG(R300_GA_LINE_S0, 0x00000000);
-    OUT_CS_REG(R300_GA_LINE_S1, 0x3F800000);
     OUT_CS_REG(R300_GA_SOLID_RG, 0x00000000);
     OUT_CS_REG(R300_GA_SOLID_BA, 0x00000000);
     OUT_CS_REG(R300_GA_POLY_MODE, 0x00000000);
@@ -144,8 +133,6 @@ void r300_emit_invariant_state(struct r300_context* r300)
     OUT_CS_REG(R300_VAP_VTX_STATE_CNTL, 0x1);
     OUT_CS_REG(R300_VAP_VSM_VTX_ASSM, 0x405);
     OUT_CS_REG(R300_SE_VTE_CNTL, 0x0000043F);
-    /* Vertex size. */
-    OUT_CS_REG(R300_VAP_VTX_SIZE, 0x8);
 
     /* XXX */
     OUT_CS_REG(R300_SC_CLIP_RULE, 0xaaaa);
diff --git a/src/gallium/drivers/r300/r300_surface.c b/src/gallium/drivers/r300/r300_surface.c
index 17b4250..ceaafe1 100644
--- a/src/gallium/drivers/r300/r300_surface.c
+++ b/src/gallium/drivers/r300/r300_surface.c
@@ -179,6 +179,9 @@ static void r300_surface_fill(struct pipe_context* pipe,
         ((h * 6)  & R300_POINTSIZE_Y_MASK) |
         ((w * 6) << R300_POINTSIZE_X_SHIFT));
 
+    /* Vertex size. */
+    OUT_CS_REG(R300_VAP_VTX_SIZE, 0x8);
+
     /* Packet3 with our point vertex */
     OUT_CS_PKT3(R200_3D_DRAW_IMMD_2, 8);
     OUT_CS(R300_PRIM_TYPE_POINT | R300_PRIM_WALK_RING |
@@ -194,11 +197,7 @@ static void r300_surface_fill(struct pipe_context* pipe,
     OUT_CS_32F(b);
     OUT_CS_32F(a);
 
-    /* XXX figure out why this is 0xA and not 0x2 */
     OUT_CS_REG(R300_RB3D_DSTCACHE_CTLSTAT, 0xA);
-    /* XXX OUT_CS_REG(R300_ZB_ZCACHE_CTLSTAT,
-        R300_ZB_ZCACHE_CTLSTAT_ZC_FLUSH_FLUSH_AND_FREE |
-        R300_ZB_ZCACHE_CTLSTAT_ZC_FREE_FREE); */
 
     END_CS;
 
@@ -287,6 +286,9 @@ static void r300_surface_copy(struct pipe_context* pipe,
     /* Two components of texture 0 */
     OUT_CS_REG(R300_VAP_OUTPUT_VTX_FMT_1, 0x2);
 
+    /* Vertex size. */
+    OUT_CS_REG(R300_VAP_VTX_SIZE, 0x8);
+
     /* Packet3 with our texcoords */
     OUT_CS_PKT3(R200_3D_DRAW_IMMD_2, 16);
     OUT_CS(R300_PRIM_TYPE_QUADS | R300_PRIM_WALK_RING |




More information about the mesa-commit mailing list