draw: Properly limit vertex buffer fetches on draw arrays.
[mesa.git] / src / gallium / drivers / r300 / r300_emit.c
index 1da6044eb87f21d91e9ecfad2da330b6e2303ec1..6ddb5066bb8f20fdcc65dede7869b07aa074e7a9 100644 (file)
@@ -441,19 +441,6 @@ void r300_emit_fb_state(struct r300_context* r300, unsigned size, void* state)
             OUT_CS_REG(R300_ZB_ZMASK_OFFSET, 0);
             OUT_CS_REG(R300_ZB_ZMASK_PITCH, surf->pitch_zmask);
         }
-    /* Set up a dummy zbuffer. Otherwise occlusion queries won't work.
-     * Use the first colorbuffer, we will disable writes in the DSA state
-     * so as not to corrupt it. */
-    } else if (fb->nr_cbufs) {
-        surf = r300_surface(fb->cbufs[0]);
-
-        OUT_CS_REG(R300_ZB_FORMAT, R300_DEPTHFORMAT_16BIT_INT_Z);
-
-        OUT_CS_REG(R300_ZB_DEPTHOFFSET, 0);
-        OUT_CS_RELOC(surf);
-
-        OUT_CS_REG(R300_ZB_DEPTHPITCH, 4 | R300_DEPTHMICROTILE_TILED_SQUARE);
-        OUT_CS_RELOC(surf);
     }
 
     END_CS;
@@ -1118,6 +1105,9 @@ void r300_emit_hiz_clear(struct r300_context *r300, unsigned size, void *state)
     tex = r300_resource(fb->zsbuf->texture);
 
     BEGIN_CS(size);
+    OUT_CS_REG(R300_ZB_ZCACHE_CTLSTAT,
+        R300_ZB_ZCACHE_CTLSTAT_ZC_FLUSH_FLUSH_AND_FREE |
+        R300_ZB_ZCACHE_CTLSTAT_ZC_FREE_FREE);
     OUT_CS_PKT3(R300_PACKET3_3D_CLEAR_HIZ, 2);
     OUT_CS(0);
     OUT_CS(tex->tex.hiz_dwords[fb->zsbuf->u.tex.level]);
@@ -1140,6 +1130,9 @@ void r300_emit_zmask_clear(struct r300_context *r300, unsigned size, void *state
     tex = r300_resource(fb->zsbuf->texture);
 
     BEGIN_CS(size);
+    OUT_CS_REG(R300_ZB_ZCACHE_CTLSTAT,
+        R300_ZB_ZCACHE_CTLSTAT_ZC_FLUSH_FLUSH_AND_FREE |
+        R300_ZB_ZCACHE_CTLSTAT_ZC_FREE_FREE);
     OUT_CS_PKT3(R300_PACKET3_3D_CLEAR_ZMASK, 2);
     OUT_CS(0);
     OUT_CS(tex->tex.zmask_dwords[fb->zsbuf->u.tex.level]);