Eliminate struct pipe_region.
[mesa.git] / src / mesa / pipe / softpipe / sp_clear.c
index 46370b4ed9a4deb2834bcde37add49a5787b018d..496b38fd5f12b82ef5449823ebd0945286a80da5 100644 (file)
@@ -47,27 +47,27 @@ softpipe_clear(struct pipe_context *pipe, struct pipe_surface *ps,
                unsigned clearValue)
 {
    struct softpipe_context *softpipe = softpipe_context(pipe);
-   struct softpipe_surface *sps = softpipe_surface(ps);
-   unsigned x, y, w, h;
 
    softpipe_update_derived(softpipe); /* not needed?? */
 
-   w = softpipe->framebuffer.cbufs[0]->width;
-   h = softpipe->framebuffer.cbufs[0]->height;
+   if (ps == sp_tile_cache_get_surface(softpipe, softpipe->zbuf_cache)) {
+      float clear[4];
+      clear[0] = 1.0; /* XXX hack */
+      sp_tile_cache_clear(softpipe->zbuf_cache, clear);
+   }
+   else if (ps == sp_tile_cache_get_surface(softpipe, softpipe->cbuf_cache[0])) {
+      float clear[4];
+      clear[0] = 0.2f; /* XXX hack */
+      clear[1] = 0.2f; /* XXX hack */
+      clear[2] = 0.2f; /* XXX hack */
+      clear[3] = 0.2f; /* XXX hack */
+      sp_tile_cache_clear(softpipe->cbuf_cache[0], clear);
+   }
 
-   /* Use the X coord to trick region_fill() into filling at an offset
-    * from the start of the region.  Perhaps pipe_region should have the
-    * 'offset' field, not pipe_surface???
-    */
-   assert(ps->offset % ps->region->cpp == 0);
-   x = ps->offset / ps->region->cpp;
-   y = 0;
+   pipe->surface_fill(pipe, ps, 0, 0, ps->width, ps->height, clearValue);
 
-   assert(w <= ps->region->pitch);
-   assert(h <= ps->region->height);
 
-   /* XXX skip this fill if we're using tile cache */
-   pipe->region_fill(pipe, ps->region, 0, x, y, w, h, clearValue);
-
-   sp_clear_tile_cache(sps, clearValue);
+#if 0
+   sp_clear_tile_cache(ps, clearValue);
+#endif
 }