gl-renderer: Use EGL_KHR_no_config_context
This patch makes use of recently implemented EGL_KHR_no_config_context extension in Mesa, which superseeds EGL_MESA_configless_context. See also (and the follow-up patch): https://lists.freedesktop.org/archives/mesa-dev/2016-September/128510.html v2: - Extend existing infrastructure for EGL_MESA_configless_context per suggestion from Emmanuel Gil Peyrot. Signed-off-by: Armin Krezović <krezovic.armin@gmail.com> Reviewed-by: Daniel Stone <daniels@collabora.com>
This commit is contained in:
committed by
Daniel Stone
parent
c3ded6603f
commit
e3bfee18df
@@ -2660,8 +2660,8 @@ gl_renderer_create_window_surface(struct gl_renderer *gr,
|
|||||||
if (egl_config != gr->egl_config &&
|
if (egl_config != gr->egl_config &&
|
||||||
!gr->has_configless_context) {
|
!gr->has_configless_context) {
|
||||||
weston_log("attempted to use a different EGL config for an "
|
weston_log("attempted to use a different EGL config for an "
|
||||||
"output but EGL_MESA_configless_context is not "
|
"output but EGL_KHR_no_config_context or "
|
||||||
"supported\n");
|
"EGL_MESA_configless_context is not supported\n");
|
||||||
return EGL_NO_SURFACE;
|
return EGL_NO_SURFACE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2853,7 +2853,8 @@ gl_renderer_setup_egl_extensions(struct weston_compositor *ec)
|
|||||||
weston_log("warning: EGL_EXT_swap_buffers_with_damage not "
|
weston_log("warning: EGL_EXT_swap_buffers_with_damage not "
|
||||||
"supported. Performance could be affected.\n");
|
"supported. Performance could be affected.\n");
|
||||||
|
|
||||||
if (weston_check_egl_extension(extensions, "EGL_MESA_configless_context"))
|
if (weston_check_egl_extension(extensions, "EGL_KHR_no_config_context") ||
|
||||||
|
weston_check_egl_extension(extensions, "EGL_MESA_configless_context"))
|
||||||
gr->has_configless_context = 1;
|
gr->has_configless_context = 1;
|
||||||
|
|
||||||
if (weston_check_egl_extension(extensions, "EGL_KHR_surfaceless_context"))
|
if (weston_check_egl_extension(extensions, "EGL_KHR_surfaceless_context"))
|
||||||
@@ -3234,7 +3235,7 @@ gl_renderer_setup(struct weston_compositor *ec, EGLSurface egl_surface)
|
|||||||
context_config = gr->egl_config;
|
context_config = gr->egl_config;
|
||||||
|
|
||||||
if (gr->has_configless_context)
|
if (gr->has_configless_context)
|
||||||
context_config = EGL_NO_CONFIG_MESA;
|
context_config = EGL_NO_CONFIG_KHR;
|
||||||
|
|
||||||
gr->egl_context = eglCreateContext(gr->egl_display, context_config,
|
gr->egl_context = eglCreateContext(gr->egl_display, context_config,
|
||||||
EGL_NO_CONTEXT, context_attribs);
|
EGL_NO_CONTEXT, context_attribs);
|
||||||
|
|||||||
@@ -135,6 +135,10 @@ typedef EGLBoolean (EGLAPIENTRYP PFNEGLSWAPBUFFERSWITHDAMAGEEXTPROC) (EGLDisplay
|
|||||||
#define EGL_NO_CONFIG_MESA ((EGLConfig)0)
|
#define EGL_NO_CONFIG_MESA ((EGLConfig)0)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef EGL_NO_CONFIG_KHR
|
||||||
|
#define EGL_NO_CONFIG_KHR ((EGLConfig)0)
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef EGL_EXT_platform_base
|
#ifndef EGL_EXT_platform_base
|
||||||
#define EGL_EXT_platform_base 1
|
#define EGL_EXT_platform_base 1
|
||||||
typedef EGLDisplay (EGLAPIENTRYP PFNEGLGETPLATFORMDISPLAYEXTPROC) (EGLenum platform, void *native_display, const EGLint *attrib_list);
|
typedef EGLDisplay (EGLAPIENTRYP PFNEGLGETPLATFORMDISPLAYEXTPROC) (EGLenum platform, void *native_display, const EGLint *attrib_list);
|
||||||
|
|||||||
Reference in New Issue
Block a user