cogl/egl: Add COGL_EGL_WINSYS_FEATURE_NO_CONFIG_CONTEXT
If the EGL_KHR_no_config_context extension is supported, pass EGL_NO_CONFIG_KHR to eglCreateContext. This will allow binding the context to surfaces created with different configs. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3139>
This commit is contained in:
parent
dc57aa6d97
commit
e437c854cd
@ -99,6 +99,12 @@ COGL_WINSYS_FEATURE_BEGIN (create_context,
|
||||
COGL_EGL_WINSYS_FEATURE_CREATE_CONTEXT)
|
||||
COGL_WINSYS_FEATURE_END ()
|
||||
|
||||
COGL_WINSYS_FEATURE_BEGIN (no_config_context,
|
||||
"KHR\0",
|
||||
"no_config_context\0",
|
||||
COGL_EGL_WINSYS_FEATURE_NO_CONFIG_CONTEXT)
|
||||
COGL_WINSYS_FEATURE_END ()
|
||||
|
||||
COGL_WINSYS_FEATURE_BEGIN (buffer_age,
|
||||
"EXT\0",
|
||||
"buffer_age\0",
|
||||
|
@ -101,6 +101,7 @@ typedef enum _CoglEGLWinsysFeature
|
||||
COGL_EGL_WINSYS_FEATURE_FENCE_SYNC = 1L << 5,
|
||||
COGL_EGL_WINSYS_FEATURE_SURFACELESS_CONTEXT = 1L << 6,
|
||||
COGL_EGL_WINSYS_FEATURE_CONTEXT_PRIORITY = 1L << 7,
|
||||
COGL_EGL_WINSYS_FEATURE_NO_CONFIG_CONTEXT = 1L << 8,
|
||||
} CoglEGLWinsysFeature;
|
||||
|
||||
typedef struct _CoglRendererEGL
|
||||
|
@ -428,10 +428,21 @@ try_create_context (CoglDisplay *display,
|
||||
|
||||
attribs[i++] = EGL_NONE;
|
||||
|
||||
egl_display->egl_context = eglCreateContext (edpy,
|
||||
config,
|
||||
EGL_NO_CONTEXT,
|
||||
attribs);
|
||||
if (egl_renderer->private_features &
|
||||
COGL_EGL_WINSYS_FEATURE_NO_CONFIG_CONTEXT)
|
||||
{
|
||||
egl_display->egl_context = eglCreateContext (edpy,
|
||||
EGL_NO_CONFIG_KHR,
|
||||
EGL_NO_CONTEXT,
|
||||
attribs);
|
||||
}
|
||||
else
|
||||
{
|
||||
egl_display->egl_context = eglCreateContext (edpy,
|
||||
config,
|
||||
EGL_NO_CONTEXT,
|
||||
attribs);
|
||||
}
|
||||
|
||||
if (egl_display->egl_context == EGL_NO_CONTEXT)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user