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_EGL_WINSYS_FEATURE_CREATE_CONTEXT)
|
||||||
COGL_WINSYS_FEATURE_END ()
|
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,
|
COGL_WINSYS_FEATURE_BEGIN (buffer_age,
|
||||||
"EXT\0",
|
"EXT\0",
|
||||||
"buffer_age\0",
|
"buffer_age\0",
|
||||||
|
@ -101,6 +101,7 @@ typedef enum _CoglEGLWinsysFeature
|
|||||||
COGL_EGL_WINSYS_FEATURE_FENCE_SYNC = 1L << 5,
|
COGL_EGL_WINSYS_FEATURE_FENCE_SYNC = 1L << 5,
|
||||||
COGL_EGL_WINSYS_FEATURE_SURFACELESS_CONTEXT = 1L << 6,
|
COGL_EGL_WINSYS_FEATURE_SURFACELESS_CONTEXT = 1L << 6,
|
||||||
COGL_EGL_WINSYS_FEATURE_CONTEXT_PRIORITY = 1L << 7,
|
COGL_EGL_WINSYS_FEATURE_CONTEXT_PRIORITY = 1L << 7,
|
||||||
|
COGL_EGL_WINSYS_FEATURE_NO_CONFIG_CONTEXT = 1L << 8,
|
||||||
} CoglEGLWinsysFeature;
|
} CoglEGLWinsysFeature;
|
||||||
|
|
||||||
typedef struct _CoglRendererEGL
|
typedef struct _CoglRendererEGL
|
||||||
|
@ -428,10 +428,21 @@ try_create_context (CoglDisplay *display,
|
|||||||
|
|
||||||
attribs[i++] = EGL_NONE;
|
attribs[i++] = EGL_NONE;
|
||||||
|
|
||||||
egl_display->egl_context = eglCreateContext (edpy,
|
if (egl_renderer->private_features &
|
||||||
config,
|
COGL_EGL_WINSYS_FEATURE_NO_CONFIG_CONTEXT)
|
||||||
EGL_NO_CONTEXT,
|
{
|
||||||
attribs);
|
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)
|
if (egl_display->egl_context == EGL_NO_CONTEXT)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user