Mesa (master): r300-gallium: Update clear() code.

Corbin Simpson csimpson at kemper.freedesktop.org
Sun Apr 5 05:30:47 UTC 2009


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

Author: Corbin Simpson <MostAwesomeDude at gmail.com>
Date:   Sat Apr  4 22:30:14 2009 -0700

r300-gallium: Update clear() code.

We have a huge optimization opportunity, but for now we'll just use the util.

---

 src/gallium/drivers/r300/r300_clear.c |   13 ++++++++-----
 src/gallium/drivers/r300/r300_clear.h |   15 ++++++++++++---
 2 files changed, 20 insertions(+), 8 deletions(-)

diff --git a/src/gallium/drivers/r300/r300_clear.c b/src/gallium/drivers/r300/r300_clear.c
index 8506ed2..8b9cb81 100644
--- a/src/gallium/drivers/r300/r300_clear.c
+++ b/src/gallium/drivers/r300/r300_clear.c
@@ -22,11 +22,14 @@
 
 #include "r300_clear.h"
 
-/* This gets its own file because Intel's is in its own file.
- * I assume there's a good reason. */
+/* Clears currently bound buffers. */
 void r300_clear(struct pipe_context* pipe,
-                struct pipe_surface* ps,
-                unsigned color)
+                unsigned buffers,
+                const float* rgba,
+                double depth,
+                unsigned stencil)
 {
-    pipe->surface_fill(pipe, ps, 0, 0, ps->width, ps->height, color);
+    /* XXX we can and should do one clear if both color and zs are set */
+    util_clear(pipe, &r300_context(pipe)->framebuffer_state,
+            buffers, rgba, depth, stencil);
 }
diff --git a/src/gallium/drivers/r300/r300_clear.h b/src/gallium/drivers/r300/r300_clear.h
index e24a069..cd59005 100644
--- a/src/gallium/drivers/r300/r300_clear.h
+++ b/src/gallium/drivers/r300/r300_clear.h
@@ -20,8 +20,17 @@
  * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
  * USE OR OTHER DEALINGS IN THE SOFTWARE. */
 
-#include "pipe/p_context.h"
+#ifndef R300_CLEAR_H
+#define R300_CLEAR_H
+
+#include "util/u_clear.h"
+
+#include "r300_context.h"
 
 void r300_clear(struct pipe_context* pipe,
-                struct pipe_surface* ps,
-                unsigned color);
+                unsigned buffers,
+                const float* rgba,
+                double depth,
+                unsigned stencil);
+
+#endif /* R300_CLEAR_H */




More information about the mesa-commit mailing list