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:
@@ -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;
|
||||||
|
@@ -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,
|
||||||
|
@@ -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 = {
|
||||||
|
@@ -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 );
|
||||||
|
|
||||||
|
@@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Reference in New Issue
Block a user