gl-renderer: do not even pick a config with configless_context
authorPekka Paalanen <pekka.paalanen@collabora.com>
Fri, 13 Sep 2019 13:25:34 +0000 (16:25 +0300)
committerPekka Paalanen <pekka.paalanen@collabora.com>
Fri, 4 Oct 2019 09:17:18 +0000 (12:17 +0300)
If configless context is supported, we can skip choosing the "base" config
completely as it will never be used.

This simplifies the code a little bit.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
libweston/renderer-gl/egl-glue.c
libweston/renderer-gl/gl-renderer.c

index 7f3dadadcdce7c7e7b3c10f7945298237b4e4993..daee7cc1d605f0a6a484bda947afe8f3c33e70a7 100644 (file)
@@ -198,8 +198,7 @@ gl_renderer_get_egl_config(struct gl_renderer *gr,
         * everything.
         */
        if (gr->egl_config != EGL_NO_CONFIG_KHR &&
-           egl_config != gr->egl_config &&
-           !gr->has_configless_context) {
+           egl_config != gr->egl_config) {
                weston_log("Found an EGLConfig but it is not usable because "
                           "neither EGL_KHR_no_config_context nor "
                           "EGL_MESA_configless_context are supported by EGL.\n");
index dfa50a83a0793d9887beec0c5acb6a9f97d2390c..6b5520f9e0733cb2433acd94064f2a0d50173fb8 100644 (file)
@@ -3454,19 +3454,21 @@ gl_renderer_display_create(struct weston_compositor *ec,
 
        log_egl_info(gr->egl_display);
 
-       gr->egl_config = gl_renderer_get_egl_config(gr, config_attribs,
-                                                   drm_formats,
-                                                   drm_formats_count);
-       if (gr->egl_config == EGL_NO_CONFIG_KHR) {
-               weston_log("failed to choose EGL config\n");
-               goto fail_terminate;
-       }
-
        ec->renderer = &gr->base;
 
        if (gl_renderer_setup_egl_extensions(ec) < 0)
                goto fail_with_error;
 
+       if (!gr->has_configless_context) {
+               gr->egl_config = gl_renderer_get_egl_config(gr, config_attribs,
+                                                           drm_formats,
+                                                           drm_formats_count);
+               if (gr->egl_config == EGL_NO_CONFIG_KHR) {
+                       weston_log("failed to choose EGL config\n");
+                       goto fail_terminate;
+               }
+       }
+
        ec->capabilities |= WESTON_CAP_ROTATION_ANY;
        ec->capabilities |= WESTON_CAP_CAPTURE_YFLIP;
        ec->capabilities |= WESTON_CAP_VIEW_CLIP_MASK;
@@ -3610,7 +3612,6 @@ gl_renderer_setup(struct weston_compositor *ec, EGLSurface egl_surface)
 {
        struct gl_renderer *gr = get_renderer(ec);
        const char *extensions;
-       EGLConfig context_config;
        EGLBoolean ret;
 
        EGLint context_attribs[16] = {
@@ -3639,20 +3640,15 @@ gl_renderer_setup(struct weston_compositor *ec, EGLSurface egl_surface)
        assert(nattr < ARRAY_LENGTH(context_attribs));
        context_attribs[nattr] = EGL_NONE;
 
-       context_config = gr->egl_config;
-
-       if (gr->has_configless_context)
-               context_config = EGL_NO_CONFIG_KHR;
-
        /* try to create an OpenGLES 3 context first */
        context_attribs[1] = 3;
-       gr->egl_context = eglCreateContext(gr->egl_display, context_config,
+       gr->egl_context = eglCreateContext(gr->egl_display, gr->egl_config,
                                           EGL_NO_CONTEXT, context_attribs);
        if (gr->egl_context == NULL) {
                /* and then fallback to OpenGLES 2 */
                context_attribs[1] = 2;
                gr->egl_context = eglCreateContext(gr->egl_display,
-                                                  context_config,
+                                                  gr->egl_config,
                                                   EGL_NO_CONTEXT,
                                                   context_attribs);
                if (gr->egl_context == NULL) {