intel: Expose a minimal number of configs with accumulation buffer
authorIan Romanick <ian.d.romanick@intel.com>
Mon, 8 Feb 2010 19:21:29 +0000 (11:21 -0800)
committerIan Romanick <ian.d.romanick@intel.com>
Wed, 10 Feb 2010 18:50:28 +0000 (10:50 -0800)
Expose one config per color depth that includes accumulation buffer.
We could probably expose only one config with accumulation buffer, but
that would require figuring out the actual color depth.  This is
easier and only exposes 2 useless configs.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Kristian Høgsberg <krh@bitplanet.net>
src/mesa/drivers/dri/intel/intel_screen.c

index 8344b82f181e8efcd0a49e94300c465de02577dc..551b97e42a64fb7e57f5e59703adb97dfc047e4a 100644 (file)
@@ -388,6 +388,9 @@ __DRIconfig **intelInitScreen2(__DRIscreen *psp)
    depth_bits[0] = 0;
    stencil_bits[0] = 0;
 
+   /* Generate a rich set of useful configs that do not include an
+    * accumulation buffer.
+    */
    for (color = 0; color < ARRAY_SIZE(fb_format); color++) {
       __DRIconfig **new_configs;
       int depth_factor;
@@ -414,6 +417,31 @@ __DRIconfig **intelInitScreen2(__DRIscreen *psp)
                                     ARRAY_SIZE(back_buffer_modes),
                                     msaa_samples_array,
                                     ARRAY_SIZE(msaa_samples_array),
+                                    GL_FALSE);
+      if (configs == NULL)
+        configs = new_configs;
+      else
+        configs = driConcatConfigs(configs, new_configs);
+   }
+
+   /* Generate the minimum possible set of configs that include an
+    * accumulation buffer.
+    */
+   for (color = 0; color < ARRAY_SIZE(fb_format); color++) {
+      __DRIconfig **new_configs;
+
+      if (fb_type[color] == GL_UNSIGNED_SHORT_5_6_5) {
+        depth_bits[0] = 16;
+        stencil_bits[0] = 0;
+      } else {
+        depth_bits[0] = 24;
+        stencil_bits[0] = 8;
+      }
+
+      new_configs = driCreateConfigs(fb_format[color], fb_type[color],
+                                    depth_bits, stencil_bits, 1,
+                                    back_buffer_modes + 1, 1,
+                                    msaa_samples_array, 1,
                                     GL_TRUE);
       if (configs == NULL)
         configs = new_configs;