From: Dave Airlie <[email protected]> This adds support to Xwayland to try and use OpenGL core profile for glamor first.
Signed-off-by: Dave Airlie <[email protected]> --- hw/xwayland/xwayland-glamor.c | 22 +++++++++++++++++++++- hw/xwayland/xwayland.h | 1 + 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/hw/xwayland/xwayland-glamor.c b/hw/xwayland/xwayland-glamor.c index c357217..9655079 100644 --- a/hw/xwayland/xwayland-glamor.c +++ b/hw/xwayland/xwayland-glamor.c @@ -270,6 +270,15 @@ xwl_drm_init_egl(struct xwl_screen *xwl_screen) { EGLint major, minor; const char *version; + static const EGLint config_attribs_core[] = { + EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR, + EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT_KHR, + EGL_CONTEXT_MAJOR_VERSION_KHR, + 3, + EGL_CONTEXT_MINOR_VERSION_KHR, + 3, + EGL_NONE + }; if (xwl_screen->egl_display) return; @@ -297,8 +306,15 @@ xwl_drm_init_egl(struct xwl_screen *xwl_screen) version = eglQueryString(xwl_screen->egl_display, EGL_VERSION); ErrorF("glamor: EGL version %s:\n", version); + xwl_screen->glamor_uses_core_profile = FALSE; xwl_screen->egl_context = eglCreateContext(xwl_screen->egl_display, - NULL, EGL_NO_CONTEXT, NULL); + NULL, EGL_NO_CONTEXT, config_attribs_core); + if (!xwl_screen->egl_context) + xwl_screen->egl_context = eglCreateContext(xwl_screen->egl_display, + NULL, EGL_NO_CONTEXT, NULL); + else + xwl_screen->glamor_uses_core_profile = TRUE; + if (xwl_screen->egl_context == EGL_NO_CONTEXT) { ErrorF("Failed to create EGL context\n"); return; @@ -534,12 +550,16 @@ Bool xwl_glamor_init(struct xwl_screen *xwl_screen) { ScreenPtr screen = xwl_screen->screen; + int flags = GLAMOR_USE_EGL_SCREEN; if (xwl_screen->egl_context == EGL_NO_CONTEXT) { ErrorF("Disabling glamor and dri3, EGL setup failed\n"); return FALSE; } + if (xwl_screen->glamor_uses_core_profile) + flags |= GLAMOR_USE_CORE_PROFILE; + if (!glamor_init(xwl_screen->screen, GLAMOR_USE_EGL_SCREEN)) { ErrorF("Failed to initialize glamor\n"); return FALSE; diff --git a/hw/xwayland/xwayland.h b/hw/xwayland/xwayland.h index a7d7119..52228a9 100644 --- a/hw/xwayland/xwayland.h +++ b/hw/xwayland/xwayland.h @@ -92,6 +92,7 @@ struct xwl_screen { void *egl_display, *egl_context; struct gbm_device *gbm; struct glamor_context *glamor_ctx; + Bool glamor_uses_core_profile; }; struct xwl_window { -- 2.4.3 _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
