From 18085b0e402ba5a7fe9c6a06a8cbb0bfcaabebf7 Mon Sep 17 00:00:00 2001 From: Jocelyn Falempe Date: Fri, 18 Oct 2024 17:19:14 +0200 Subject: [PATCH] cogl/egl: Choose config only if needed MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit In try_create_context(), if COGL_EGL_WINSYS_FEATURE_NO_CONFIG_CONTEXT is set, don't try to choose an egl config. Signed-off-by: Jocelyn Falempe Signed-off-by: Jonas Ã…dahl Part-of: --- cogl/cogl/winsys/cogl-winsys-egl-private.h | 2 ++ cogl/cogl/winsys/cogl-winsys-egl-x11.c | 1 + cogl/cogl/winsys/cogl-winsys-egl.c | 27 +++++++++++++--------- 3 files changed, 19 insertions(+), 11 deletions(-) diff --git a/cogl/cogl/winsys/cogl-winsys-egl-private.h b/cogl/cogl/winsys/cogl-winsys-egl-private.h index 9acff6c57..3053f6794 100644 --- a/cogl/cogl/winsys/cogl-winsys-egl-private.h +++ b/cogl/cogl/winsys/cogl-winsys-egl-private.h @@ -121,6 +121,8 @@ typedef struct _CoglRendererEGL /* vtable for platform specific parts */ const CoglWinsysEGLVtable *platform_vtable; + gboolean needs_config; + /* Sync for latest submitted work */ EGLSyncKHR sync; diff --git a/cogl/cogl/winsys/cogl-winsys-egl-x11.c b/cogl/cogl/winsys/cogl-winsys-egl-x11.c index a7a7ead39..9969faf22 100644 --- a/cogl/cogl/winsys/cogl-winsys-egl-x11.c +++ b/cogl/cogl/winsys/cogl-winsys-egl-x11.c @@ -243,6 +243,7 @@ _cogl_winsys_renderer_connect (CoglRenderer *renderer, egl_renderer->platform_vtable = &_cogl_winsys_egl_vtable; egl_renderer->sync = EGL_NO_SYNC_KHR; + egl_renderer->needs_config = TRUE; if (!_cogl_xlib_renderer_connect (renderer, error)) goto error; diff --git a/cogl/cogl/winsys/cogl-winsys-egl.c b/cogl/cogl/winsys/cogl-winsys-egl.c index e29eab65b..adbf508df 100644 --- a/cogl/cogl/winsys/cogl-winsys-egl.c +++ b/cogl/cogl/winsys/cogl-winsys-egl.c @@ -318,19 +318,24 @@ try_create_context (CoglDisplay *display, edpy = egl_renderer->edpy; - if (!egl_renderer->platform_vtable->choose_config (display, - cfg_attribs, - &config, - &config_error)) + if (!(egl_renderer->private_features & + COGL_EGL_WINSYS_FEATURE_NO_CONFIG_CONTEXT) || + egl_renderer->needs_config) { - g_set_error (error, COGL_WINSYS_ERROR, - COGL_WINSYS_ERROR_CREATE_CONTEXT, - "Couldn't choose config: %s", config_error->message); - g_error_free (config_error); - goto err; - } + if (!egl_renderer->platform_vtable->choose_config (display, + cfg_attribs, + &config, + &config_error)) + { + g_set_error (error, COGL_WINSYS_ERROR, + COGL_WINSYS_ERROR_CREATE_CONTEXT, + "Couldn't choose config: %s", config_error->message); + g_error_free (config_error); + goto err; + } - egl_display->egl_config = config; + egl_display->egl_config = config; + } if (display->renderer->driver == COGL_DRIVER_GL3) {