summaryrefslogtreecommitdiff
path: root/src/mesa/drivers/x11/xm_dd.c
diff options
context:
space:
mode:
authorBrian <brian@i915.localnet.net>2007-08-01 12:58:38 -0600
committerBrian <brian@i915.localnet.net>2007-08-01 12:58:38 -0600
commitfb206809ba2a131fd9034e10a00592f2d0d81fce (patch)
tree16f5f207e20fdb15e69d6bdca9b078fb425cbe04 /src/mesa/drivers/x11/xm_dd.c
parente99b673cb062a2fead92d1d7d373926d148ade71 (diff)
Checkpoint: glClear changes - working, bug very rough.
Diffstat (limited to 'src/mesa/drivers/x11/xm_dd.c')
-rw-r--r--src/mesa/drivers/x11/xm_dd.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/mesa/drivers/x11/xm_dd.c b/src/mesa/drivers/x11/xm_dd.c
index 5725414856..0aa47d55e4 100644
--- a/src/mesa/drivers/x11/xm_dd.c
+++ b/src/mesa/drivers/x11/xm_dd.c
@@ -435,6 +435,32 @@ clear_buffers(GLcontext *ctx, GLbitfield buffers)
}
+void
+xmesa_clear(struct pipe_context *pipe, GLboolean color, GLboolean depth,
+ GLboolean stencil, GLboolean accum)
+{
+ struct softpipe_context *sp = (struct softpipe_context *) pipe;
+ if (color) {
+ GET_CURRENT_CONTEXT(ctx);
+ GLuint i;
+ softpipe_update_derived(sp);
+ for (i = 0; i < sp->framebuffer.num_cbufs; i++) {
+ struct pipe_surface *ps = sp->framebuffer.cbufs[i];
+ struct xmesa_renderbuffer *xrb = (struct xmesa_renderbuffer *) ps->rb;
+ const GLint x = sp->cliprect.minx;
+ const GLint y = sp->cliprect.miny;
+ const GLint w = sp->cliprect.maxx - x;
+ const GLint h = sp->cliprect.maxy - y;
+ xrb->clearFunc(ctx, xrb, x, y, w, h);
+ }
+ color = GL_FALSE;
+ }
+
+ softpipe_clear(pipe, color, depth, stencil, accum);
+}
+
+
+
#ifndef XFree86Server
/* XXX this was never tested in the Xserver environment */