dummy.frame_buffer_level = attrib_list[i + 1];
break;
case EGL_BUFFER_SIZE:
- if (attrib_list[i + 1] < 0) {
+ if ((attrib_list[i + 1] != EGL_DONT_CARE) &&
+ (attrib_list[i + 1] < 0)) {
YAGL_SET_ERR(EGL_BAD_ATTRIBUTE);
goto out;
}
dummy.buffer_size = attrib_list[i + 1];
break;
case EGL_RED_SIZE:
- if (attrib_list[i + 1] < 0) {
+ if ((attrib_list[i + 1] != EGL_DONT_CARE) &&
+ (attrib_list[i + 1] < 0)) {
YAGL_SET_ERR(EGL_BAD_ATTRIBUTE);
goto out;
}
dummy.red_size = attrib_list[i + 1];
break;
case EGL_GREEN_SIZE:
- if (attrib_list[i + 1] < 0) {
+ if ((attrib_list[i + 1] != EGL_DONT_CARE) &&
+ (attrib_list[i + 1] < 0)) {
YAGL_SET_ERR(EGL_BAD_ATTRIBUTE);
goto out;
}
dummy.green_size = attrib_list[i + 1];
break;
case EGL_BLUE_SIZE:
- if (attrib_list[i + 1] < 0) {
+ if ((attrib_list[i + 1] != EGL_DONT_CARE) &&
+ (attrib_list[i + 1] < 0)) {
YAGL_SET_ERR(EGL_BAD_ATTRIBUTE);
goto out;
}
dummy.blue_size = attrib_list[i + 1];
break;
case EGL_ALPHA_SIZE:
- if (attrib_list[i + 1] < 0) {
+ if ((attrib_list[i + 1] != EGL_DONT_CARE) &&
+ (attrib_list[i + 1] < 0)) {
YAGL_SET_ERR(EGL_BAD_ATTRIBUTE);
goto out;
}
dummy.alpha_size = attrib_list[i + 1];
break;
case EGL_CONFIG_CAVEAT:
- if ((attrib_list[i + 1] != EGL_NONE) &&
+ if ((attrib_list[i + 1] != EGL_DONT_CARE) &&
+ (attrib_list[i + 1] != EGL_NONE) &&
(attrib_list[i + 1] != EGL_SLOW_CONFIG) &&
(attrib_list[i + 1] != EGL_NON_CONFORMANT_CONFIG)) {
YAGL_SET_ERR(EGL_BAD_ATTRIBUTE);
dummy.caveat = attrib_list[i + 1];
break;
case EGL_CONFIG_ID:
- if (attrib_list[i + 1] < 0) {
+ if ((attrib_list[i + 1] != EGL_DONT_CARE) &&
+ (attrib_list[i + 1] < 0)) {
YAGL_SET_ERR(EGL_BAD_ATTRIBUTE);
goto out;
}
- config_id = attrib_list[i + 1];
- has_config_id = true;
+ if (attrib_list[i + 1] != EGL_DONT_CARE) {
+ config_id = attrib_list[i + 1];
+ has_config_id = true;
+ }
break;
case EGL_DEPTH_SIZE:
- if (attrib_list[i + 1] < 0) {
+ if ((attrib_list[i + 1] != EGL_DONT_CARE) &&
+ (attrib_list[i + 1] < 0)) {
YAGL_SET_ERR(EGL_BAD_ATTRIBUTE);
goto out;
}
dummy.depth_size = attrib_list[i + 1];
break;
case EGL_MAX_SWAP_INTERVAL:
- if (attrib_list[i + 1] < 0) {
+ if ((attrib_list[i + 1] != EGL_DONT_CARE) &&
+ (attrib_list[i + 1] < 0)) {
YAGL_SET_ERR(EGL_BAD_ATTRIBUTE);
goto out;
}
dummy.max_swap_interval = attrib_list[i + 1];
break;
case EGL_MIN_SWAP_INTERVAL:
- if (attrib_list[i + 1] < 0) {
+ if ((attrib_list[i + 1] != EGL_DONT_CARE) &&
+ (attrib_list[i + 1] < 0)) {
YAGL_SET_ERR(EGL_BAD_ATTRIBUTE);
goto out;
}
dummy.min_swap_interval = attrib_list[i + 1];
break;
case EGL_CONFORMANT:
- if ((attrib_list[i + 1] &
- ~(EGL_OPENGL_ES_BIT|
- EGL_OPENVG_BIT|
- EGL_OPENGL_ES2_BIT|
- EGL_OPENGL_BIT)) != 0) {
- YAGL_SET_ERR(EGL_BAD_ATTRIBUTE);
- goto out;
+ if ((attrib_list[i + 1] != EGL_DONT_CARE) &&
+ ((attrib_list[i + 1] &
+ ~(EGL_OPENGL_ES_BIT|
+ EGL_OPENVG_BIT|
+ EGL_OPENGL_ES2_BIT|
+ EGL_OPENGL_BIT)) != 0)) {
+ if (((attrib_list[i + 1] & EGL_OPENGL_ES3_BIT_KHR) == 0) ||
+ (dpy->backend->gl_version < yagl_gl_3_1_es3)) {
+ YAGL_SET_ERR(EGL_BAD_ATTRIBUTE);
+ goto out;
+ }
}
dummy.conformant = attrib_list[i + 1];
break;
break;
case EGL_NATIVE_VISUAL_TYPE:
dummy.native_visual_type = attrib_list[i + 1];
- if ((attrib_list[i + 1] < 0) || (attrib_list[i + 1] > 1)) {
+ if ((attrib_list[i + 1] != EGL_DONT_CARE) &&
+ ((attrib_list[i + 1] < 0) || (attrib_list[i + 1] > 1))) {
YAGL_SET_ERR(EGL_BAD_ATTRIBUTE);
goto out;
}
break;
case EGL_SAMPLE_BUFFERS:
- if (attrib_list[i + 1] < 0) {
+ if ((attrib_list[i + 1] != EGL_DONT_CARE) &&
+ (attrib_list[i + 1] < 0)) {
YAGL_SET_ERR(EGL_BAD_ATTRIBUTE);
goto out;
}
dummy.sample_buffers_num = attrib_list[i + 1];
break;
case EGL_SAMPLES:
- if (attrib_list[i + 1] < 0) {
+ if ((attrib_list[i + 1] != EGL_DONT_CARE) &&
+ (attrib_list[i + 1] < 0)) {
YAGL_SET_ERR(EGL_BAD_ATTRIBUTE);
goto out;
}
dummy.samples_per_pixel = attrib_list[i + 1];
break;
case EGL_STENCIL_SIZE:
- if (attrib_list[i + 1] < 0) {
+ if ((attrib_list[i + 1] != EGL_DONT_CARE) &&
+ (attrib_list[i + 1] < 0)) {
YAGL_SET_ERR(EGL_BAD_ATTRIBUTE);
goto out;
}
dummy.stencil_size = attrib_list[i + 1];
break;
case EGL_TRANSPARENT_TYPE:
- if ((attrib_list[i + 1] != EGL_NONE) &&
+ if ((attrib_list[i + 1] != EGL_DONT_CARE) &&
+ (attrib_list[i + 1] != EGL_NONE) &&
(attrib_list[i + 1] != EGL_TRANSPARENT_RGB)) {
YAGL_SET_ERR(EGL_BAD_ATTRIBUTE);
goto out;