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).
This commit is contained in:
Eric Anholt
2009-02-10 14:30:38 -08:00
parent a49ff9f95e
commit 5d5ae371ea
5 changed files with 53 additions and 41 deletions

View File

@@ -754,10 +754,10 @@ driCreateConfigs(GLenum fb_format, GLenum fb_type,
return configs; return configs;
} }
const __DRIconfig **driConcatConfigs(const __DRIconfig **a, __DRIconfig **driConcatConfigs(__DRIconfig **a,
const __DRIconfig **b) __DRIconfig **b)
{ {
const __DRIconfig **all; __DRIconfig **all;
int i, j, index; int i, j, index;
i = 0; i = 0;

View File

@@ -134,8 +134,8 @@ driCreateConfigs(GLenum fb_format, GLenum fb_type,
const GLenum * db_modes, unsigned num_db_modes, const GLenum * db_modes, unsigned num_db_modes,
const uint8_t * msaa_samples, unsigned num_msaa_modes); const uint8_t * msaa_samples, unsigned num_msaa_modes);
const __DRIconfig **driConcatConfigs(const __DRIconfig **a, __DRIconfig **driConcatConfigs(__DRIconfig **a,
const __DRIconfig **b); __DRIconfig **b);
int int
driGetConfigAttrib(const __DRIconfig *config, driGetConfigAttrib(const __DRIconfig *config,

View File

@@ -465,8 +465,6 @@ intelFillInModes(__DRIscreenPrivate *psp,
__GLcontextModes *m; __GLcontextModes *m;
unsigned depth_buffer_factor; unsigned depth_buffer_factor;
unsigned back_buffer_factor; unsigned back_buffer_factor;
GLenum fb_format;
GLenum fb_type;
int i; int i;
/* GLX_SWAP_COPY_OML is only supported because the Intel driver doesn't /* GLX_SWAP_COPY_OML is only supported because the Intel driver doesn't
@@ -501,19 +499,32 @@ intelFillInModes(__DRIscreenPrivate *psp,
back_buffer_factor = (have_back_buffer) ? 3 : 1; back_buffer_factor = (have_back_buffer) ? 3 : 1;
if (pixel_bits == 16) { if (pixel_bits == 16) {
fb_format = GL_RGB; configs = driCreateConfigs(GL_RGB, GL_UNSIGNED_SHORT_5_6_5,
fb_type = 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 { else {
fb_format = GL_BGRA; __DRIconfig **configs_a8r8g8b8;
fb_type = GL_UNSIGNED_INT_8_8_8_8_REV; __DRIconfig **configs_x8r8g8b8;
}
configs = driCreateConfigs(fb_format, fb_type, configs_a8r8g8b8 = driCreateConfigs(GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV,
depth_bits_array, stencil_bits_array, depth_bits_array,
depth_buffer_factor, back_buffer_modes, stencil_bits_array,
back_buffer_factor, depth_buffer_factor,
msaa_samples_array, 1); 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);
}
if (configs == NULL) { if (configs == NULL) {
fprintf(stderr, "[%s:%u] Error creating FBConfig!\n", __func__, fprintf(stderr, "[%s:%u] Error creating FBConfig!\n", __func__,
@@ -686,7 +697,7 @@ __DRIconfig **intelInitScreen2(__DRIscreenPrivate *psp)
}; };
uint8_t depth_bits[4], stencil_bits[4], msaa_samples_array[1]; uint8_t depth_bits[4], stencil_bits[4], msaa_samples_array[1];
int color; int color;
const __DRIconfig **configs = NULL; __DRIconfig **configs = NULL;
/* Calling driInitExtensions here, with a NULL context pointer, /* Calling driInitExtensions here, with a NULL context pointer,
* does not actually enable the extensions. It just makes sure * 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; fb_type[2] = GL_UNSIGNED_INT_8_8_8_8_REV;
for (color = 0; color < ARRAY_SIZE(fb_format); color++) { for (color = 0; color < ARRAY_SIZE(fb_format); color++) {
const __DRIconfig **new_configs; __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));
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) if (configs == NULL)
configs = new_configs; configs = new_configs;
else else
@@ -770,7 +780,7 @@ __DRIconfig **intelInitScreen2(__DRIscreenPrivate *psp)
return NULL; return NULL;
} }
return configs; return (const __DRIconfig **)configs;
} }
const struct __DriverAPIRec driDriverAPI = { const struct __DriverAPIRec driDriverAPI = {

View File

@@ -127,7 +127,7 @@ setupLoaderExtensions(__DRIscreen *psp,
} }
} }
static const __DRIconfig ** static __DRIconfig **
swrastFillInModes(__DRIscreen *psp, swrastFillInModes(__DRIscreen *psp,
unsigned pixel_bits, unsigned depth_bits, unsigned pixel_bits, unsigned depth_bits,
unsigned stencil_bits, GLboolean have_back_buffer) unsigned stencil_bits, GLboolean have_back_buffer)
@@ -200,7 +200,7 @@ swrastFillInModes(__DRIscreen *psp,
return NULL; return NULL;
} }
return (const __DRIconfig **)configs; return configs;
} }
static __DRIscreen * static __DRIscreen *
@@ -209,7 +209,7 @@ driCreateNewScreen(int scrn, const __DRIextension **extensions,
{ {
static const __DRIextension *emptyExtensionList[] = { NULL }; static const __DRIextension *emptyExtensionList[] = { NULL };
__DRIscreen *psp; __DRIscreen *psp;
const __DRIconfig **configs8, **configs16, **configs24, **configs32; __DRIconfig **configs8, **configs16, **configs24, **configs32;
(void) data; (void) data;
@@ -231,7 +231,8 @@ driCreateNewScreen(int scrn, const __DRIextension **extensions,
configs16 = driConcatConfigs(configs8, configs16); configs16 = driConcatConfigs(configs8, configs16);
configs24 = driConcatConfigs(configs16, configs24); configs24 = driConcatConfigs(configs16, configs24);
*driver_configs = driConcatConfigs(configs24, configs32); *driver_configs = (const __DRIconfig **)
driConcatConfigs(configs24, configs32);
driInitExtensions( NULL, card_extensions, GL_FALSE ); driInitExtensions( NULL, card_extensions, GL_FALSE );

View File

@@ -380,14 +380,15 @@ tdfxFillInModes(__DRIscreenPrivate *psp,
msaa_samples_array[0] = 0; msaa_samples_array[0] = 0;
return driCreateConfigs( return (const __DRIconfig **)
deep ? GL_RGBA : GL_RGB, driCreateConfigs(deep ? GL_RGBA : GL_RGB,
deep ? GL_UNSIGNED_INT_8_8_8_8 : GL_UNSIGNED_SHORT_5_6_5, deep ? GL_UNSIGNED_INT_8_8_8_8 :
depth_bits_array, GL_UNSIGNED_SHORT_5_6_5,
stencil_bits_array, depth_bits_array,
deep ? 2 : 4, stencil_bits_array,
db_modes, 2, deep ? 2 : 4,
msaa_samples_array, 1); db_modes, 2,
msaa_samples_array, 1);
} }
/** /**