Merge change I0953c1d5 into eclair
* changes: fix [2153873] EGL-1.4 software implementation misses surface attributes
This commit is contained in:
@@ -953,12 +953,17 @@ static config_pair_t const config_base_attribute_list[] = {
|
|||||||
{ EGL_BIND_TO_TEXTURE_RGB, EGL_FALSE },
|
{ EGL_BIND_TO_TEXTURE_RGB, EGL_FALSE },
|
||||||
{ EGL_MIN_SWAP_INTERVAL, 1 },
|
{ EGL_MIN_SWAP_INTERVAL, 1 },
|
||||||
{ EGL_MAX_SWAP_INTERVAL, 1 },
|
{ EGL_MAX_SWAP_INTERVAL, 1 },
|
||||||
|
{ EGL_LUMINANCE_SIZE, 0 },
|
||||||
|
{ EGL_ALPHA_MASK_SIZE, 0 },
|
||||||
|
{ EGL_COLOR_BUFFER_TYPE, EGL_RGB_BUFFER },
|
||||||
{ EGL_RENDERABLE_TYPE, EGL_OPENGL_ES_BIT },
|
{ EGL_RENDERABLE_TYPE, EGL_OPENGL_ES_BIT },
|
||||||
|
{ EGL_CONFORMANT, 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
// These configs can override the base attribute list
|
// These configs can override the base attribute list
|
||||||
// NOTE: when adding a config here, don't forget to update eglCreate*Surface()
|
// NOTE: when adding a config here, don't forget to update eglCreate*Surface()
|
||||||
|
|
||||||
|
|
||||||
static config_pair_t const config_0_attribute_list[] = {
|
static config_pair_t const config_0_attribute_list[] = {
|
||||||
{ EGL_BUFFER_SIZE, 16 },
|
{ EGL_BUFFER_SIZE, 16 },
|
||||||
{ EGL_ALPHA_SIZE, 0 },
|
{ EGL_ALPHA_SIZE, 0 },
|
||||||
@@ -1062,10 +1067,18 @@ static config_management_t const gConfigManagement[] = {
|
|||||||
{ EGL_BIND_TO_TEXTURE_RGB, config_management_t::exact },
|
{ EGL_BIND_TO_TEXTURE_RGB, config_management_t::exact },
|
||||||
{ EGL_MIN_SWAP_INTERVAL, config_management_t::exact },
|
{ EGL_MIN_SWAP_INTERVAL, config_management_t::exact },
|
||||||
{ EGL_MAX_SWAP_INTERVAL, config_management_t::exact },
|
{ EGL_MAX_SWAP_INTERVAL, config_management_t::exact },
|
||||||
|
{ EGL_LUMINANCE_SIZE, config_management_t::atLeast },
|
||||||
|
{ EGL_ALPHA_MASK_SIZE, config_management_t::atLeast },
|
||||||
|
{ EGL_COLOR_BUFFER_TYPE, config_management_t::exact },
|
||||||
|
{ EGL_RENDERABLE_TYPE, config_management_t::mask },
|
||||||
|
{ EGL_CONFORMANT, config_management_t::mask }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
static config_pair_t const config_defaults[] = {
|
static config_pair_t const config_defaults[] = {
|
||||||
{ EGL_SURFACE_TYPE, EGL_WINDOW_BIT },
|
// attributes that are not specified are simply ignored, if a particular
|
||||||
|
// one needs not be ignored, it must be specified here, eg:
|
||||||
|
// { EGL_SURFACE_TYPE, EGL_WINDOW_BIT },
|
||||||
};
|
};
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
@@ -1513,7 +1526,7 @@ EGLBoolean eglChooseConfig( EGLDisplay dpy, const EGLint *attrib_list,
|
|||||||
numAttributes++;
|
numAttributes++;
|
||||||
EGLint attr = *attrib_list++;
|
EGLint attr = *attrib_list++;
|
||||||
EGLint val = *attrib_list++;
|
EGLint val = *attrib_list++;
|
||||||
for (int i=0 ; i<numConfigs ; i++) {
|
for (int i=0 ; possibleMatch && i<numConfigs ; i++) {
|
||||||
if (!(possibleMatch & (1<<i)))
|
if (!(possibleMatch & (1<<i)))
|
||||||
continue;
|
continue;
|
||||||
if (isAttributeMatching(i, attr, val) == 0) {
|
if (isAttributeMatching(i, attr, val) == 0) {
|
||||||
@@ -1523,15 +1536,15 @@ EGLBoolean eglChooseConfig( EGLDisplay dpy, const EGLint *attrib_list,
|
|||||||
}
|
}
|
||||||
|
|
||||||
// now, handle the attributes which have a useful default value
|
// now, handle the attributes which have a useful default value
|
||||||
for (size_t j=0 ; j<NELEM(config_defaults) ; j++) {
|
for (size_t j=0 ; possibleMatch && j<NELEM(config_defaults) ; j++) {
|
||||||
// see if this attribute was specified, if not apply its
|
// see if this attribute was specified, if not, apply its
|
||||||
// default value
|
// default value
|
||||||
if (binarySearch<config_pair_t>(
|
if (binarySearch<config_pair_t>(
|
||||||
(config_pair_t const*)attrib_list,
|
(config_pair_t const*)attrib_list,
|
||||||
0, numAttributes-1,
|
0, numAttributes-1,
|
||||||
config_defaults[j].key) < 0)
|
config_defaults[j].key) < 0)
|
||||||
{
|
{
|
||||||
for (int i=0 ; i<numConfigs ; i++) {
|
for (int i=0 ; possibleMatch && i<numConfigs ; i++) {
|
||||||
if (!(possibleMatch & (1<<i)))
|
if (!(possibleMatch & (1<<i)))
|
||||||
continue;
|
continue;
|
||||||
if (isAttributeMatching(i,
|
if (isAttributeMatching(i,
|
||||||
|
|||||||
Reference in New Issue
Block a user