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) {