diff options
author | Veeresh Kadasani <external.vkadasani@jp.adit-jv.com> | 2019-11-15 14:37:16 +0900 |
---|---|---|
committer | Daniel Stone <daniel@fooishbar.org> | 2019-11-25 20:16:45 +0000 |
commit | bdfc11cd1bad41eaf91e07c0c4f13b9248448bc6 (patch) | |
tree | 9ec0d64f1de44608e4ccf0bc731d04b835cb981d | |
parent | 3ef098fad1da217cec275e35c5e9f9131d00d0bb (diff) |
simple-dmabuf-egl: make application generic
Don't exit if EGL_KHR_no_config_context extension
is not supported
Signed-off-by: Veeresh Kadasani <external.vkadasani@jp.adit-jv.com>
-rw-r--r-- | clients/simple-dmabuf-egl.c | 31 |
1 files changed, 26 insertions, 5 deletions
diff --git a/clients/simple-dmabuf-egl.c b/clients/simple-dmabuf-egl.c index 9e83d338..acd79bfc 100644 --- a/clients/simple-dmabuf-egl.c +++ b/clients/simple-dmabuf-egl.c @@ -89,7 +89,9 @@ struct display { struct { EGLDisplay display; EGLContext context; + EGLConfig conf; bool has_dma_buf_import_modifiers; + bool has_no_config_context; PFNEGLQUERYDMABUFMODIFIERSEXTPROC query_dma_buf_modifiers; PFNEGLCREATEIMAGEKHRPROC create_image; PFNEGLDESTROYIMAGEKHRPROC destroy_image; @@ -1122,10 +1124,20 @@ display_set_up_egl(struct display *display) EGL_CONTEXT_CLIENT_VERSION, 2, EGL_NONE }; - EGLint major, minor; + EGLint major, minor, ret, count; const char *egl_extensions = NULL; const char *gl_extensions = NULL; + EGLint config_attribs[] = { + EGL_SURFACE_TYPE, EGL_WINDOW_BIT, + EGL_RED_SIZE, 1, + EGL_GREEN_SIZE, 1, + EGL_BLUE_SIZE, 1, + EGL_ALPHA_SIZE, 1, + EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT, + EGL_NONE + }; + display->egl.display = weston_platform_get_egl_display(EGL_PLATFORM_GBM_KHR, display->gbm.device, NULL); @@ -1159,14 +1171,23 @@ display_set_up_egl(struct display *display) goto error; } - if (!weston_check_egl_extension(egl_extensions, + if (weston_check_egl_extension(egl_extensions, "EGL_KHR_no_config_context")) { - fprintf(stderr, "EGL_KHR_no_config_context not supported\n"); - goto error; + display->egl.has_no_config_context = true; + } + + if (display->egl.has_no_config_context) { + display->egl.conf = EGL_NO_CONFIG_KHR; + } else { + fprintf(stderr, + "Warning: EGL_KHR_no_config_context not supported\n"); + ret = eglChooseConfig(display->egl.display, config_attribs, + &display->egl.conf, 1, &count); + assert(ret && count >= 1); } display->egl.context = eglCreateContext(display->egl.display, - EGL_NO_CONFIG_KHR, + display->egl.conf, EGL_NO_CONTEXT, context_attribs); if (display->egl.context == EGL_NO_CONTEXT) { |