From: Stanislav Vorobiov Date: Wed, 5 Mar 2014 08:55:45 +0000 (+0400) Subject: YaGL: Allow using EGL_DONT_CARE in eglChooseConfig X-Git-Tag: Tizen_Studio_1.3_Release_p2.3.1~475^2~2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=429bf064eb64a282664d082d7ac896f4a16b3ee5;p=sdk%2Femulator%2Fqemu.git YaGL: Allow using EGL_DONT_CARE in eglChooseConfig EGL_DONT_CARE must be allowed to be used in config attributes Change-Id: If20440b863a5525d8f0d63c4d778db65f7959ff6 --- diff --git a/hw/yagl/yagl_apis/egl/yagl_host_egl_calls.c b/hw/yagl/yagl_apis/egl/yagl_host_egl_calls.c index 883231a3e6..e52ab90390 100644 --- a/hw/yagl/yagl_apis/egl/yagl_host_egl_calls.c +++ b/hw/yagl/yagl_apis/egl/yagl_host_egl_calls.c @@ -451,42 +451,48 @@ EGLBoolean yagl_host_eglChooseConfig(yagl_host_handle dpy_, 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); @@ -495,42 +501,52 @@ EGLBoolean yagl_host_eglChooseConfig(yagl_host_handle dpy_, 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; @@ -542,34 +558,39 @@ EGLBoolean yagl_host_eglChooseConfig(yagl_host_handle dpy_, 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;