r300: Clean up CS counting.
authorCorbin Simpson <MostAwesomeDude@gmail.com>
Fri, 6 Feb 2009 09:59:26 +0000 (01:59 -0800)
committerCorbin Simpson <MostAwesomeDude@gmail.com>
Fri, 6 Feb 2009 09:59:26 +0000 (01:59 -0800)
src/gallium/drivers/r300/r300_cs.h
src/gallium/drivers/r300/r300_surface.c

index 734ccb13d9df2b7bf38f85c5d504fe608c649a93..385b61a096ce0497afccea6558eb526ad1c1b9d0 100644 (file)
@@ -107,6 +107,7 @@ static uint32_t pack_float_32(float f)
     assert(bo); \
     OUT_CS(offset); \
     cs_winsys->write_cs_reloc(cs, bo, rd, wd, flags); \
+    cs_count -= 2; \
 } while (0)
 
 #define END_CS do { \
index 3db013cd7e5a628904793c76fe528238ae33582b..1ed4a4e3bcffba5c8312ec7355aaa8a2435fd084 100644 (file)
@@ -39,8 +39,8 @@ static void r300_surface_fill(struct pipe_context* pipe,
     g = (float)((color >>  8) & 0xff) / 255.0f;
     b = (float)((color >>  0) & 0xff) / 255.0f;
     debug_printf("r300: Filling surface %p at (%d,%d),"
-        " dimensions %dx%d, color 0x%x\n",
-        dest, x, y, w, h, color);
+        " dimensions %dx%d (stride %d), color 0x%x\n",
+        dest, x, y, w, h, dest->stride, color);
 
     /* Fallback? */
     if (0) {
@@ -52,7 +52,7 @@ static void r300_surface_fill(struct pipe_context* pipe,
         return;
     }
 
-BEGIN_CS((caps->is_r500) ? 309 : 322);
+BEGIN_CS((caps->is_r500) ? 309 : 280);
 R300_PACIFY;
 OUT_CS_REG(R300_TX_INVALTAGS, 0x0);
 R300_PACIFY;
@@ -273,11 +273,14 @@ OUT_CS_REG(R300_VAP_PVS_UPLOAD_DATA, 0xF02203);
 OUT_CS_REG(R300_VAP_PVS_UPLOAD_DATA, 0xD10021);
 OUT_CS_REG(R300_VAP_PVS_UPLOAD_DATA, 0x1248021);
 OUT_CS_REG(R300_VAP_PVS_UPLOAD_DATA, 0x0);
+R300_PACIFY;
+END_CS;
 
 r300_emit_blend_state(r300, &blend_clear_state);
 r300_emit_blend_color_state(r300, &blend_color_clear_state);
 r300_emit_dsa_state(r300, &dsa_clear_state);
 
+BEGIN_CS(36);
 R300_PACIFY;
 /* Flush colorbuffer and blend caches. */
 OUT_CS_REG(R300_RB3D_DSTCACHE_CTLSTAT,
@@ -290,7 +293,6 @@ OUT_CS_REG(R300_ZB_ZCACHE_CTLSTAT,
 OUT_CS_REG_SEQ(R300_RB3D_COLOROFFSET0, 1);
 OUT_CS_RELOC(dest->buffer, 0, 0, RADEON_GEM_DOMAIN_VRAM, 0);
 /* XXX this should not be so rigid and it still doesn't work right */
-debug_printf("Buffer width (stride): %d\n", dest->stride);
 OUT_CS_REG(R300_RB3D_COLORPITCH0, (dest->stride >> 2) | R300_COLOR_FORMAT_ARGB8888);
 OUT_CS_REG(RB3D_COLOR_CHANNEL_MASK, 0x0000000F);
 /* XXX Packet3 */