Mesa (master): intel: Add x8r8g8b8 visuals to DRI1 fbconfigs alongside a8r8gb8.

Eric Anholt anholt at kemper.freedesktop.org
Wed Feb 11 02:45:37 UTC 2009


Module: Mesa
Branch: master
Commit: 5d5ae371eaeca7e33e638af3aee1ae8e162db0a7
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=5d5ae371eaeca7e33e638af3aee1ae8e162db0a7

Author: Eric Anholt <eric at anholt.net>
Date:   Tue Feb 10 14:30:38 2009 -0800

intel: Add x8r8g8b8 visuals to DRI1 fbconfigs alongside a8r8gb8.

This involved fixing driConcatConfigs to not return const (which had made a
mess of a previous patch too).

---

 src/mesa/drivers/dri/common/utils.c       |    6 +-
 src/mesa/drivers/dri/common/utils.h       |    4 +-
 src/mesa/drivers/dri/intel/intel_screen.c |   60 +++++++++++++++++------------
 src/mesa/drivers/dri/swrast/swrast.c      |    9 ++--
 src/mesa/drivers/dri/tdfx/tdfx_screen.c   |   17 ++++----
 5 files changed, 54 insertions(+), 42 deletions(-)

diff --git a/src/mesa/drivers/dri/common/utils.c b/src/mesa/drivers/dri/common/utils.c
index 5175ab0..6b44ed9 100644
--- a/src/mesa/drivers/dri/common/utils.c
+++ b/src/mesa/drivers/dri/common/utils.c
@@ -754,10 +754,10 @@ driCreateConfigs(GLenum fb_format, GLenum fb_type,
     return configs;
 }
 
-const __DRIconfig **driConcatConfigs(const __DRIconfig **a,
-				     const __DRIconfig **b)
+__DRIconfig **driConcatConfigs(__DRIconfig **a,
+			       __DRIconfig **b)
 {
-    const __DRIconfig **all;
+    __DRIconfig **all;
     int i, j, index;
 
     i = 0;
diff --git a/src/mesa/drivers/dri/common/utils.h b/src/mesa/drivers/dri/common/utils.h
index a4ef509..9e9e5bc 100644
--- a/src/mesa/drivers/dri/common/utils.h
+++ b/src/mesa/drivers/dri/common/utils.h
@@ -134,8 +134,8 @@ driCreateConfigs(GLenum fb_format, GLenum fb_type,
 		 const GLenum * db_modes, unsigned num_db_modes,
     		 const uint8_t * msaa_samples, unsigned num_msaa_modes);
 
-const __DRIconfig **driConcatConfigs(const __DRIconfig **a,
-				     const __DRIconfig **b);
+__DRIconfig **driConcatConfigs(__DRIconfig **a,
+			       __DRIconfig **b);
 
 int
 driGetConfigAttrib(const __DRIconfig *config,
diff --git a/src/mesa/drivers/dri/intel/intel_screen.c b/src/mesa/drivers/dri/intel/intel_screen.c
index 4c06170..a522711 100644
--- a/src/mesa/drivers/dri/intel/intel_screen.c
+++ b/src/mesa/drivers/dri/intel/intel_screen.c
@@ -465,8 +465,6 @@ intelFillInModes(__DRIscreenPrivate *psp,
    __GLcontextModes *m;
    unsigned depth_buffer_factor;
    unsigned back_buffer_factor;
-   GLenum fb_format;
-   GLenum fb_type;
    int i;
 
    /* GLX_SWAP_COPY_OML is only supported because the Intel driver doesn't
@@ -501,20 +499,33 @@ intelFillInModes(__DRIscreenPrivate *psp,
    back_buffer_factor = (have_back_buffer) ? 3 : 1;
 
    if (pixel_bits == 16) {
-      fb_format = GL_RGB;
-      fb_type = GL_UNSIGNED_SHORT_5_6_5;
+      configs = driCreateConfigs(GL_RGB, GL_UNSIGNED_SHORT_5_6_5,
+				 depth_bits_array, stencil_bits_array,
+				 depth_buffer_factor, back_buffer_modes,
+				 back_buffer_factor,
+				 msaa_samples_array, 1);
    }
    else {
-      fb_format = GL_BGRA;
-      fb_type = GL_UNSIGNED_INT_8_8_8_8_REV;
+      __DRIconfig **configs_a8r8g8b8;
+      __DRIconfig **configs_x8r8g8b8;
+
+      configs_a8r8g8b8 = driCreateConfigs(GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV,
+					  depth_bits_array,
+					  stencil_bits_array,
+					  depth_buffer_factor,
+					  back_buffer_modes,
+					  back_buffer_factor,
+					  msaa_samples_array, 1);
+      configs_x8r8g8b8 = driCreateConfigs(GL_BGR, GL_UNSIGNED_INT_8_8_8_8_REV,
+					  depth_bits_array,
+					  stencil_bits_array,
+					  depth_buffer_factor,
+					  back_buffer_modes,
+					  back_buffer_factor,
+					  msaa_samples_array, 1);
+      configs = driConcatConfigs(configs_a8r8g8b8, configs_x8r8g8b8);
    }
 
-   configs = driCreateConfigs(fb_format, fb_type,
-			      depth_bits_array, stencil_bits_array,
-			      depth_buffer_factor, back_buffer_modes,
-			      back_buffer_factor,
-                              msaa_samples_array, 1);
-
    if (configs == NULL) {
     fprintf(stderr, "[%s:%u] Error creating FBConfig!\n", __func__,
               __LINE__);
@@ -686,7 +697,7 @@ __DRIconfig **intelInitScreen2(__DRIscreenPrivate *psp)
    };
    uint8_t depth_bits[4], stencil_bits[4], msaa_samples_array[1];
    int color;
-   const __DRIconfig **configs = NULL;
+   __DRIconfig **configs = NULL;
 
    /* Calling driInitExtensions here, with a NULL context pointer,
     * does not actually enable the extensions.  It just makes sure
@@ -747,17 +758,16 @@ __DRIconfig **intelInitScreen2(__DRIscreenPrivate *psp)
    fb_type[2] = GL_UNSIGNED_INT_8_8_8_8_REV;
 
    for (color = 0; color < ARRAY_SIZE(fb_format); color++) {
-      const __DRIconfig **new_configs;
-
-      new_configs = (const __DRIconfig **)
-	 driCreateConfigs(fb_format[color], fb_type[color],
-			  depth_bits,
-			  stencil_bits,
-			  ARRAY_SIZE(depth_bits),
-			  back_buffer_modes,
-			  ARRAY_SIZE(back_buffer_modes),
-                          msaa_samples_array, ARRAY_SIZE(msaa_samples_array));
-
+      __DRIconfig **new_configs;
+
+      new_configs = driCreateConfigs(fb_format[color], fb_type[color],
+				     depth_bits,
+				     stencil_bits,
+				     ARRAY_SIZE(depth_bits),
+				     back_buffer_modes,
+				     ARRAY_SIZE(back_buffer_modes),
+				     msaa_samples_array,
+				     ARRAY_SIZE(msaa_samples_array));
       if (configs == NULL)
 	 configs = new_configs;
       else
@@ -770,7 +780,7 @@ __DRIconfig **intelInitScreen2(__DRIscreenPrivate *psp)
       return NULL;
    }
 
-   return configs;
+   return (const __DRIconfig **)configs;
 }
 
 const struct __DriverAPIRec driDriverAPI = {
diff --git a/src/mesa/drivers/dri/swrast/swrast.c b/src/mesa/drivers/dri/swrast/swrast.c
index b00f4ff..2e7f113 100644
--- a/src/mesa/drivers/dri/swrast/swrast.c
+++ b/src/mesa/drivers/dri/swrast/swrast.c
@@ -127,7 +127,7 @@ setupLoaderExtensions(__DRIscreen *psp,
     }
 }
 
-static const __DRIconfig **
+static __DRIconfig **
 swrastFillInModes(__DRIscreen *psp,
 		  unsigned pixel_bits, unsigned depth_bits,
 		  unsigned stencil_bits, GLboolean have_back_buffer)
@@ -200,7 +200,7 @@ swrastFillInModes(__DRIscreen *psp,
 	return NULL;
     }
 
-    return (const __DRIconfig **)configs;
+    return configs;
 }
 
 static __DRIscreen *
@@ -209,7 +209,7 @@ driCreateNewScreen(int scrn, const __DRIextension **extensions,
 {
     static const __DRIextension *emptyExtensionList[] = { NULL };
     __DRIscreen *psp;
-    const __DRIconfig **configs8, **configs16, **configs24, **configs32;
+    __DRIconfig **configs8, **configs16, **configs24, **configs32;
 
     (void) data;
 
@@ -231,7 +231,8 @@ driCreateNewScreen(int scrn, const __DRIextension **extensions,
 
     configs16 = driConcatConfigs(configs8, configs16);
     configs24 = driConcatConfigs(configs16, configs24);
-    *driver_configs = driConcatConfigs(configs24, configs32);
+    *driver_configs = (const __DRIconfig **)
+       driConcatConfigs(configs24, configs32);
 
     driInitExtensions( NULL, card_extensions, GL_FALSE );
 
diff --git a/src/mesa/drivers/dri/tdfx/tdfx_screen.c b/src/mesa/drivers/dri/tdfx/tdfx_screen.c
index 6d509a4..5f2f5cf 100644
--- a/src/mesa/drivers/dri/tdfx/tdfx_screen.c
+++ b/src/mesa/drivers/dri/tdfx/tdfx_screen.c
@@ -380,14 +380,15 @@ tdfxFillInModes(__DRIscreenPrivate *psp,
 
 	msaa_samples_array[0] = 0;
 
-	return driCreateConfigs(
-		deep ? GL_RGBA : GL_RGB,
-		deep ? GL_UNSIGNED_INT_8_8_8_8 : GL_UNSIGNED_SHORT_5_6_5,
-		depth_bits_array,
-		stencil_bits_array,
-		deep ? 2 : 4,
-		db_modes, 2,
-                msaa_samples_array, 1);
+	return (const __DRIconfig **)
+	   driCreateConfigs(deep ? GL_RGBA : GL_RGB,
+			    deep ? GL_UNSIGNED_INT_8_8_8_8 :
+				   GL_UNSIGNED_SHORT_5_6_5,
+			    depth_bits_array,
+			    stencil_bits_array,
+			    deep ? 2 : 4,
+			    db_modes, 2,
+			    msaa_samples_array, 1);
 }
 
 /**




More information about the mesa-commit mailing list