[Mesa-dev] [PATCH 09/10] intel: Add assertions to intelCreateBuffer()

Chad Versace chad at chad-versace.us
Sat Jun 4 17:45:42 PDT 2011


Assert that the GLX config has an expected depth/stencil bit combination:
one of d24/s8, d16/s0, d0/s0. These are the only depth/stencil
configurations that we advertise.

Remove the check for software stencil, because given the assertions'
constraints the check always fails.

CC: Eric Anholt <eric at anholt.net>
CC: Ian Romanick <idr at freedesktop.org>
CC: Kenneth Graunke <kenneth at whitecape.org>
CC: Kristian Høgsberg <krh at bitplanet.net>
Signed-off-by: Chad Versace <chad at chad-versace.us>
---
 src/mesa/drivers/dri/intel/intel_screen.c |   15 ++++++++++++---
 1 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/src/mesa/drivers/dri/intel/intel_screen.c b/src/mesa/drivers/dri/intel/intel_screen.c
index 646b960..21dc8dc 100644
--- a/src/mesa/drivers/dri/intel/intel_screen.c
+++ b/src/mesa/drivers/dri/intel/intel_screen.c
@@ -364,8 +364,6 @@ intelCreateBuffer(__DRIscreen * driScrnPriv,
       return GL_FALSE;          /* not implemented */
    }
    else {
-      GLboolean swStencil = (mesaVis->stencilBits > 0 &&
-                             mesaVis->depthBits != 24);
       gl_format rgbFormat;
 
       struct gl_framebuffer *fb = CALLOC_STRUCT(gl_framebuffer);
@@ -391,6 +389,11 @@ intelCreateBuffer(__DRIscreen * driScrnPriv,
          _mesa_add_renderbuffer(fb, BUFFER_BACK_LEFT, &rb->Base);
       }
 
+      /*
+       * Assert here that the gl_config has an expected depth/stencil bit
+       * combination: one of d24/s8, d16/s0, d0/s0. (See intelInitScreen2(),
+       * which constructs the advertised configs.)
+       */
       if (mesaVis->depthBits == 24) {
 	 assert(mesaVis->stencilBits == 8);
 	 /* combined depth/stencil buffer */
@@ -401,17 +404,23 @@ intelCreateBuffer(__DRIscreen * driScrnPriv,
 	 _mesa_add_renderbuffer(fb, BUFFER_STENCIL, &depthStencilRb->Base);
       }
       else if (mesaVis->depthBits == 16) {
+	 assert(mesaVis->stencilBits == 0);
          /* just 16-bit depth buffer, no hw stencil */
          struct intel_renderbuffer *depthRb
 	    = intel_create_renderbuffer(MESA_FORMAT_Z16);
          _mesa_add_renderbuffer(fb, BUFFER_DEPTH, &depthRb->Base);
       }
+      else {
+	 assert(mesaVis->depthBits == 0);
+	 assert(mesaVis->stencilBits == 0);
+      }
 
       /* now add any/all software-based renderbuffers we may need */
       _mesa_add_soft_renderbuffers(fb,
                                    GL_FALSE, /* never sw color */
                                    GL_FALSE, /* never sw depth */
-                                   swStencil, mesaVis->accumRedBits > 0,
+                                   GL_FALSE, /* never sw stencil */
+                                   mesaVis->accumRedBits > 0,
                                    GL_FALSE, /* never sw alpha */
                                    GL_FALSE  /* never sw aux */ );
       driDrawPriv->driverPrivate = fb;
-- 
1.7.5.2



More information about the mesa-dev mailing list