Mesa (master): swrast: add debug code to test combined depth/ stencil buffers
Brian Paul
brianp at kemper.freedesktop.org
Tue Dec 13 13:50:31 UTC 2011
Module: Mesa
Branch: master
Commit: d7c0fac90b1fe550df3d75777747c1ae9be41fc0
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=d7c0fac90b1fe550df3d75777747c1ae9be41fc0
Author: Brian Paul <brianp at vmware.com>
Date: Sat Dec 10 11:44:44 2011 -0700
swrast: add debug code to test combined depth/stencil buffers
Reviewed-by: Eric Anholt <eric at anholt.net>
---
src/mesa/swrast/s_renderbuffer.c | 54 +++++++++++++++++++++++++++++++++-----
1 files changed, 47 insertions(+), 7 deletions(-)
diff --git a/src/mesa/swrast/s_renderbuffer.c b/src/mesa/swrast/s_renderbuffer.c
index 7622e38..bb7cdeb 100644
--- a/src/mesa/swrast/s_renderbuffer.c
+++ b/src/mesa/swrast/s_renderbuffer.c
@@ -1888,6 +1888,31 @@ add_stencil_renderbuffer(struct gl_context *ctx, struct gl_framebuffer *fb,
}
+static GLboolean
+add_depth_stencil_renderbuffer(struct gl_context *ctx,
+ struct gl_framebuffer *fb)
+{
+ struct gl_renderbuffer *rb;
+
+ assert(fb->Attachment[BUFFER_DEPTH].Renderbuffer == NULL);
+ assert(fb->Attachment[BUFFER_STENCIL].Renderbuffer == NULL);
+
+ rb = _mesa_new_renderbuffer(ctx, 0);
+ if (!rb) {
+ _mesa_error(ctx, GL_OUT_OF_MEMORY, "Allocating depth+stencil buffer");
+ return GL_FALSE;
+ }
+
+ rb->InternalFormat = GL_DEPTH_STENCIL;
+
+ rb->AllocStorage = soft_renderbuffer_storage;
+ _mesa_add_renderbuffer(fb, BUFFER_DEPTH, rb);
+ _mesa_add_renderbuffer(fb, BUFFER_STENCIL, rb);
+
+ return GL_TRUE;
+}
+
+
/**
* Add a software-based accumulation renderbuffer to the given framebuffer.
* This is a helper routine for device drivers when creating a
@@ -1999,14 +2024,29 @@ _swrast_add_soft_renderbuffers(struct gl_framebuffer *fb,
frontRight, backRight);
}
- if (depth) {
- assert(fb->Visual.depthBits > 0);
- add_depth_renderbuffer(NULL, fb, fb->Visual.depthBits);
- }
+#if 0
+ /* This is pretty much for debugging purposes only since there's a perf
+ * hit for using combined depth/stencil in swrast.
+ */
+ if (depth && fb->Visual.depthBits == 24 &&
+ stencil && fb->Visual.stencilBits == 8) {
+ /* use combined depth/stencil buffer */
+ add_depth_stencil_renderbuffer(NULL, fb);
+ }
+ else
+#else
+ (void) add_depth_stencil_renderbuffer;
+#endif
+ {
+ if (depth) {
+ assert(fb->Visual.depthBits > 0);
+ add_depth_renderbuffer(NULL, fb, fb->Visual.depthBits);
+ }
- if (stencil) {
- assert(fb->Visual.stencilBits > 0);
- add_stencil_renderbuffer(NULL, fb, fb->Visual.stencilBits);
+ if (stencil) {
+ assert(fb->Visual.stencilBits > 0);
+ add_stencil_renderbuffer(NULL, fb, fb->Visual.stencilBits);
+ }
}
if (accum) {
More information about the mesa-commit
mailing list