radeon: With DRI1, if we have HW stencil, only expose fbconfigs with stencil.
authorMichel Dänzer <daenzer@vmware.com>
Mon, 20 Jul 2009 18:26:28 +0000 (20:26 +0200)
committerMichel Dänzer <daenzer@vmware.com>
Mon, 20 Jul 2009 18:34:04 +0000 (20:34 +0200)
Otherwise simple apps like glxgears pick up a DirectColor visual since the X
server mixes the depth 32 visual in with the other GLX visuals, and this seems
to result in a (mostly) black screen due to a bad ColorMap for a lot of people.

The bad ColorMap may be a bug in the apps, the X server or X driver, and
regardless of that I think the X server should ideally make the depth 32 GLX
visual separate from the rest again, but in the meantime this makes us cope.

(depth_bits is either 16 or 24, never 0)

src/mesa/drivers/dri/radeon/radeon_screen.c

index 791f59826bd5418ccf9d582b6eefd11733a6313e..a977bedbc28fab1fa0f57ec6fb92fcfd0663d2df 100644 (file)
@@ -283,12 +283,12 @@ radeonFillInModes( __DRIscreenPrivate *psp,
      * with a stencil buffer.  It will be a sw fallback, but some apps won't
      * care about that.
      */
-    stencil_bits_array[0] = 0;
+    stencil_bits_array[0] = stencil_bits;
     stencil_bits_array[1] = (stencil_bits == 0) ? 8 : stencil_bits;
 
     msaa_samples_array[0] = 0;
 
-    depth_buffer_factor = ((depth_bits != 0) || (stencil_bits != 0)) ? 2 : 1;
+    depth_buffer_factor = (stencil_bits == 0) ? 2 : 1;
     back_buffer_factor  = (have_back_buffer) ? 2 : 1;
 
     if (pixel_bits == 16) {