[PATCH weston] gl-renderer: Use EGL_KHR_no_config_context

Emmanuel Gil Peyrot emmanuel.peyrot at collabora.com
Tue Sep 27 13:18:39 UTC 2016


On Tue, Sep 27, 2016 at 12:29:51PM +0200, Armin Krezović wrote:
> 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
> 
> Signed-off-by: Armin Krezović <krezovic.armin at gmail.com>
> ---
>  libweston/gl-renderer.c    | 14 +++++++++++---
>  libweston/weston-egl-ext.h |  3 +++
>  2 files changed, 14 insertions(+), 3 deletions(-)
> 
> diff --git a/libweston/gl-renderer.c b/libweston/gl-renderer.c
> index 031576b..7ef7b89 100644
> --- a/libweston/gl-renderer.c
> +++ b/libweston/gl-renderer.c
> @@ -199,6 +199,8 @@ struct gl_renderer {
>  
>  	int has_egl_buffer_age;
>  
> +	int has_no_config_context;
> +
>  	int has_configless_context;

You don’t need to keep two different booleans for that, both extensions
are implemented and exposed the same way, only the wording changes a
bit.

>  
>  	int has_surfaceless_context;
> @@ -2564,10 +2566,11 @@ gl_renderer_output_create(struct weston_output *output,
>  	}
>  
>  	if (egl_config != gr->egl_config &&
> +	    !gr->has_no_config_context &&
>  	    !gr->has_configless_context) {
>  		weston_log("attempted to use a different EGL config for an "
> -			   "output but EGL_MESA_configless_context is not "
> -			   "supported\n");
> +			   "output but EGL_KHR_no_config_context or "
> +			   "EGL_MESA_configless_context is not supported\n");
>  		return -1;
>  	}
>  
> @@ -2726,6 +2729,9 @@ gl_renderer_setup_egl_extensions(struct weston_compositor *ec)
>  		weston_log("warning: EGL_EXT_swap_buffers_with_damage not "
>  			   "supported. Performance could be affected.\n");
>  
> +	if (weston_check_egl_extension(extensions, "EGL_KHR_no_config_context"))
> +		gr->has_no_config_context = 1;
> +
>  	if (weston_check_egl_extension(extensions, "EGL_MESA_configless_context"))
>  		gr->has_configless_context = 1;

Same here, you can safely set gr->has_no_config_context instead.

>  
> @@ -3101,7 +3107,9 @@ gl_renderer_setup(struct weston_compositor *ec, EGLSurface egl_surface)
>  
>  	context_config = gr->egl_config;
>  
> -	if (gr->has_configless_context)
> +	if (gr->has_no_config_context)
> +		context_config = EGL_NO_CONFIG_KHR;
> +	else if (gr->has_configless_context)
>  		context_config = EGL_NO_CONFIG_MESA;

And same here, the EGL_NO_CONFIG_KHR and EGL_NO_CONFIG_MESA values are
the same, so as long as you have both in the header (you do), it will
not be an issue.

>  
>  	gr->egl_context = eglCreateContext(gr->egl_display, context_config,
> diff --git a/libweston/weston-egl-ext.h b/libweston/weston-egl-ext.h
> index 6e36996..50964a8 100644
> --- a/libweston/weston-egl-ext.h
> +++ b/libweston/weston-egl-ext.h
> @@ -152,5 +152,8 @@ typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPLATFORMPIXMAPSURFACEEXTPROC) (EGLD
>  #define EGL_PLATFORM_X11_KHR 0x31D5
>  #endif
>  
> +#ifndef EGL_NO_CONFIG_KHR
> +#define EGL_NO_CONFIG_KHR ((EGLConfig)0)
> +#endif
>  
>  #endif
> -- 
> 2.10.0
> 
> _______________________________________________
> wayland-devel mailing list
> wayland-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/wayland-devel

-- 
Emmanuel Gil Peyrot
Collabora Ltd.


More information about the wayland-devel mailing list