thud migration: xorg-xserver: remove incompatible patch with new version 1.20
https://jira.digi.com/browse/DEL-6412 Signed-off-by: Arturo Buzarra <arturo.buzarra@digi.com>
This commit is contained in:
parent
fe64e5422d
commit
78497b7c24
|
|
@ -1,262 +0,0 @@
|
||||||
From 1c99ec67c526b21f6cde697c8efece82a7884a15 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Prabhu Sundararaj <prabhu.sundararaj@nxp.com>
|
|
||||||
Date: Tue, 18 Jul 2017 09:49:06 -0500
|
|
||||||
Subject: [PATCH] glamor_egl: Automatically choose a GLES2 context if desktop
|
|
||||||
GL fails.
|
|
||||||
|
|
||||||
Backport from xserver 1.19.x for Pyro
|
|
||||||
|
|
||||||
GLES2 support has been requested multiple times, and we've had this
|
|
||||||
code laying around trying to implement it. The GLES2 implementation
|
|
||||||
is not quite there yet (some pixel transfer failures), but it
|
|
||||||
shouldn't take much fixing at this point.
|
|
||||||
|
|
||||||
Upstream-Status: Inappropriate
|
|
||||||
|
|
||||||
Reviewed-by: Adam Jackson <ajax@redhat.com>
|
|
||||||
Signed-off-by: Eric Anholt <eric@anholt.net>
|
|
||||||
Signed-off-by: Prabhu Sundararaj <prabhu.sundararaj@nxp.com>
|
|
||||||
---
|
|
||||||
glamor/glamor_egl.c | 143 ++++++++++++++++++++++++++--------------------------
|
|
||||||
1 file changed, 71 insertions(+), 72 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/glamor/glamor_egl.c b/glamor/glamor_egl.c
|
|
||||||
index 4bde637..d6fd9c5 100644
|
|
||||||
--- a/glamor/glamor_egl.c
|
|
||||||
+++ b/glamor/glamor_egl.c
|
|
||||||
@@ -73,7 +73,7 @@ struct glamor_egl_screen_private {
|
|
||||||
#endif
|
|
||||||
int has_gem;
|
|
||||||
int gl_context_depth;
|
|
||||||
- int dri3_capable;
|
|
||||||
+
|
|
||||||
|
|
||||||
CloseScreenProcPtr saved_close_screen;
|
|
||||||
DestroyPixmapProcPtr saved_destroy_pixmap;
|
|
||||||
@@ -307,7 +307,7 @@ glamor_egl_create_textured_pixmap_from_gbm_bo(PixmapPtr pixmap,
|
|
||||||
glamor_make_current(glamor_priv);
|
|
||||||
|
|
||||||
image = eglCreateImageKHR(glamor_egl->display,
|
|
||||||
- glamor_egl->context,
|
|
||||||
+ EGL_NO_CONTEXT,
|
|
||||||
EGL_NATIVE_PIXMAP_KHR, bo, NULL);
|
|
||||||
if (image == EGL_NO_IMAGE_KHR) {
|
|
||||||
glamor_set_pixmap_type(pixmap, GLAMOR_DRM_ONLY);
|
|
||||||
@@ -447,6 +447,7 @@ glamor_egl_dri3_fd_name_from_tex(ScreenPtr screen,
|
|
||||||
glamor_get_name_from_bo(glamor_egl->fd, bo, &fd);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
+ /*fixed from Xserver 1.19.x*/
|
|
||||||
fd = gbm_bo_get_fd(bo);
|
|
||||||
}
|
|
||||||
*stride = pixmap->devKind;
|
|
||||||
@@ -477,9 +478,6 @@ glamor_back_pixmap_from_fd(PixmapPtr pixmap,
|
|
||||||
|
|
||||||
glamor_egl = glamor_egl_get_screen_private(scrn);
|
|
||||||
|
|
||||||
- if (!glamor_egl->dri3_capable)
|
|
||||||
- return FALSE;
|
|
||||||
-
|
|
||||||
if (bpp != 32 || !(depth == 24 || depth == 32) || width == 0 || height == 0)
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
@@ -669,7 +667,7 @@ glamor_egl_screen_init(ScreenPtr screen, struct glamor_context *glamor_ctx)
|
|
||||||
glamor_ctx->make_current = glamor_egl_make_current;
|
|
||||||
|
|
||||||
#ifdef DRI3
|
|
||||||
- if (glamor_egl->dri3_capable) {
|
|
||||||
+ {
|
|
||||||
glamor_screen_private *glamor_priv = glamor_get_screen_private(screen);
|
|
||||||
/* Tell the core that we have the interfaces for import/export
|
|
||||||
* of pixmaps.
|
|
||||||
@@ -733,25 +731,8 @@ Bool
|
|
||||||
glamor_egl_init(ScrnInfoPtr scrn, int fd)
|
|
||||||
{
|
|
||||||
struct glamor_egl_screen_private *glamor_egl;
|
|
||||||
- const char *version;
|
|
||||||
|
|
||||||
- EGLint config_attribs[] = {
|
|
||||||
-#ifdef GLAMOR_GLES2
|
|
||||||
- EGL_CONTEXT_CLIENT_VERSION, 2,
|
|
||||||
-#endif
|
|
||||||
- EGL_NONE
|
|
||||||
- };
|
|
||||||
- static const EGLint config_attribs_core[] = {
|
|
||||||
- EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR,
|
|
||||||
- EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT_KHR,
|
|
||||||
- EGL_CONTEXT_MAJOR_VERSION_KHR,
|
|
||||||
- GLAMOR_GL_CORE_VER_MAJOR,
|
|
||||||
- EGL_CONTEXT_MINOR_VERSION_KHR,
|
|
||||||
- GLAMOR_GL_CORE_VER_MINOR,
|
|
||||||
- EGL_NONE
|
|
||||||
- };
|
|
||||||
|
|
||||||
- glamor_identify(0);
|
|
||||||
glamor_egl = calloc(sizeof(*glamor_egl), 1);
|
|
||||||
if (glamor_egl == NULL)
|
|
||||||
return FALSE;
|
|
||||||
@@ -760,41 +741,26 @@ glamor_egl_init(ScrnInfoPtr scrn, int fd)
|
|
||||||
|
|
||||||
scrn->privates[xf86GlamorEGLPrivateIndex].ptr = glamor_egl;
|
|
||||||
glamor_egl->fd = fd;
|
|
||||||
-#ifdef GLAMOR_HAS_GBM
|
|
||||||
+
|
|
||||||
glamor_egl->gbm = gbm_create_device(glamor_egl->fd);
|
|
||||||
if (glamor_egl->gbm == NULL) {
|
|
||||||
ErrorF("couldn't get display device\n");
|
|
||||||
goto error;
|
|
||||||
}
|
|
||||||
|
|
||||||
- glamor_egl->display = glamor_egl_get_display(EGL_PLATFORM_GBM_MESA,
|
|
||||||
- glamor_egl->gbm);
|
|
||||||
+ glamor_egl->display = eglGetPlatformDisplayEXT(EGL_PLATFORM_GBM_KHR, glamor_egl->gbm, NULL);
|
|
||||||
if (!glamor_egl->display) {
|
|
||||||
xf86DrvMsg(scrn->scrnIndex, X_ERROR, "eglGetDisplay() failed\n");
|
|
||||||
goto error;
|
|
||||||
}
|
|
||||||
-#else
|
|
||||||
- glamor_egl->display = eglGetDisplay((EGLNativeDisplayType) (intptr_t) fd);
|
|
||||||
-#endif
|
|
||||||
|
|
||||||
- glamor_egl->has_gem = glamor_egl_check_has_gem(fd);
|
|
||||||
+ if (!eglInitialize(glamor_egl->display, NULL, NULL)) {
|
|
||||||
|
|
||||||
- if (!eglInitialize
|
|
||||||
- (glamor_egl->display, &glamor_egl->major, &glamor_egl->minor)) {
|
|
||||||
xf86DrvMsg(scrn->scrnIndex, X_ERROR, "eglInitialize() failed\n");
|
|
||||||
glamor_egl->display = EGL_NO_DISPLAY;
|
|
||||||
goto error;
|
|
||||||
}
|
|
||||||
|
|
||||||
-#ifndef GLAMOR_GLES2
|
|
||||||
- eglBindAPI(EGL_OPENGL_API);
|
|
||||||
-#else
|
|
||||||
- eglBindAPI(EGL_OPENGL_ES_API);
|
|
||||||
-#endif
|
|
||||||
-
|
|
||||||
- version = eglQueryString(glamor_egl->display, EGL_VERSION);
|
|
||||||
- xf86Msg(X_INFO, "%s: EGL version %s:\n", glamor_name, version);
|
|
||||||
-
|
|
||||||
#define GLAMOR_CHECK_EGL_EXTENSION(EXT) \
|
|
||||||
if (!epoxy_has_egl_extension(glamor_egl->display, "EGL_" #EXT)) { \
|
|
||||||
ErrorF("EGL_" #EXT " required.\n"); \
|
|
||||||
@@ -808,30 +774,66 @@ glamor_egl_init(ScrnInfoPtr scrn, int fd)
|
|
||||||
goto error; \
|
|
||||||
}
|
|
||||||
|
|
||||||
- GLAMOR_CHECK_EGL_EXTENSION(MESA_drm_image);
|
|
||||||
- GLAMOR_CHECK_EGL_EXTENSION(KHR_gl_renderbuffer_image);
|
|
||||||
-#ifdef GLAMOR_GLES2
|
|
||||||
- GLAMOR_CHECK_EGL_EXTENSIONS(KHR_surfaceless_context, KHR_surfaceless_gles2);
|
|
||||||
-#else
|
|
||||||
- GLAMOR_CHECK_EGL_EXTENSIONS(KHR_surfaceless_context,
|
|
||||||
- KHR_surfaceless_opengl);
|
|
||||||
-#endif
|
|
||||||
+ GLAMOR_CHECK_EGL_EXTENSION(KHR_surfaceless_context);
|
|
||||||
+
|
|
||||||
+ if (eglBindAPI(EGL_OPENGL_API)) {
|
|
||||||
+ static const EGLint config_attribs_core[] = {
|
|
||||||
+ EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR,
|
|
||||||
+ EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT_KHR,
|
|
||||||
+ EGL_CONTEXT_MAJOR_VERSION_KHR,
|
|
||||||
+ GLAMOR_GL_CORE_VER_MAJOR,
|
|
||||||
+ EGL_CONTEXT_MINOR_VERSION_KHR,
|
|
||||||
+ GLAMOR_GL_CORE_VER_MINOR,
|
|
||||||
+ EGL_NONE
|
|
||||||
+ };
|
|
||||||
+ static const EGLint config_attribs[] = {
|
|
||||||
+ EGL_NONE
|
|
||||||
+ };
|
|
||||||
|
|
||||||
-#ifndef GLAMOR_GLES2
|
|
||||||
- glamor_egl->context = eglCreateContext(glamor_egl->display,
|
|
||||||
- NULL, EGL_NO_CONTEXT,
|
|
||||||
- config_attribs_core);
|
|
||||||
-#else
|
|
||||||
- glamor_egl->context = NULL;
|
|
||||||
-#endif
|
|
||||||
- if (!glamor_egl->context) {
|
|
||||||
glamor_egl->context = eglCreateContext(glamor_egl->display,
|
|
||||||
NULL, EGL_NO_CONTEXT,
|
|
||||||
- config_attribs);
|
|
||||||
- if (glamor_egl->context == EGL_NO_CONTEXT) {
|
|
||||||
- xf86DrvMsg(scrn->scrnIndex, X_ERROR, "Failed to create EGL context\n");
|
|
||||||
+ config_attribs_core);
|
|
||||||
+
|
|
||||||
+
|
|
||||||
+ if (glamor_egl->context == EGL_NO_CONTEXT)
|
|
||||||
+ glamor_egl->context = eglCreateContext(glamor_egl->display,
|
|
||||||
+ NULL, EGL_NO_CONTEXT,
|
|
||||||
+ config_attribs);
|
|
||||||
+ }
|
|
||||||
+ if (glamor_egl->context == EGL_NO_CONTEXT) {
|
|
||||||
+ static const EGLint context_attribs[] = {
|
|
||||||
+ EGL_CONTEXT_CLIENT_VERSION, 2,
|
|
||||||
+ EGL_NONE
|
|
||||||
+ };
|
|
||||||
+ EGLint numconfigs;
|
|
||||||
+ EGLBoolean ret;
|
|
||||||
+ EGLConfig eglConfig;
|
|
||||||
+ static const EGLint config_attribs[] = {
|
|
||||||
+ EGL_SURFACE_TYPE, EGL_WINDOW_BIT,
|
|
||||||
+ EGL_RED_SIZE, 1,
|
|
||||||
+ EGL_GREEN_SIZE, 1,
|
|
||||||
+ EGL_BLUE_SIZE, 1,
|
|
||||||
+ EGL_ALPHA_SIZE, 1,
|
|
||||||
+ EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,
|
|
||||||
+ EGL_NONE
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ if (!eglBindAPI(EGL_OPENGL_ES_API)) {
|
|
||||||
+ xf86DrvMsg(scrn->scrnIndex, X_ERROR,
|
|
||||||
+ "glamor: Failed to bind either GL or GLES APIs.\n");
|
|
||||||
goto error;
|
|
||||||
}
|
|
||||||
+
|
|
||||||
+ ret = eglChooseConfig(glamor_egl->display, config_attribs, &eglConfig, 1, &numconfigs);
|
|
||||||
+
|
|
||||||
+ glamor_egl->context = eglCreateContext(glamor_egl->display,
|
|
||||||
+ eglConfig, EGL_NO_CONTEXT,
|
|
||||||
+ context_attribs);
|
|
||||||
+ }
|
|
||||||
+ if (glamor_egl->context == EGL_NO_CONTEXT) {
|
|
||||||
+ xf86DrvMsg(scrn->scrnIndex, X_ERROR,
|
|
||||||
+ "glamor: Failed to create GL or GLES2 contexts\n");
|
|
||||||
+ goto error;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!eglMakeCurrent(glamor_egl->display,
|
|
||||||
@@ -845,21 +847,18 @@ glamor_egl_init(ScrnInfoPtr scrn, int fd)
|
|
||||||
* (in case of multiple GPUs using glamor)
|
|
||||||
*/
|
|
||||||
lastGLContext = NULL;
|
|
||||||
-#ifdef GLAMOR_HAS_GBM
|
|
||||||
- if (epoxy_has_egl_extension(glamor_egl->display,
|
|
||||||
- "EGL_KHR_gl_texture_2D_image") &&
|
|
||||||
- epoxy_has_gl_extension("GL_OES_EGL_image"))
|
|
||||||
- glamor_egl->dri3_capable = TRUE;
|
|
||||||
-#endif
|
|
||||||
+
|
|
||||||
+ if (!epoxy_has_gl_extension("GL_OES_EGL_image")) {
|
|
||||||
+ xf86DrvMsg(scrn->scrnIndex, X_ERROR,
|
|
||||||
+ "glamor acceleration requires GL_OES_EGL_image\n");
|
|
||||||
+ goto error;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ xf86DrvMsg(scrn->scrnIndex, X_INFO, "glamor X acceleration enabled on %s\n",
|
|
||||||
+ glGetString(GL_RENDERER));
|
|
||||||
|
|
||||||
glamor_egl->saved_free_screen = scrn->FreeScreen;
|
|
||||||
scrn->FreeScreen = glamor_egl_free_screen;
|
|
||||||
-#ifdef GLAMOR_GLES2
|
|
||||||
- xf86DrvMsg(scrn->scrnIndex, X_INFO, "Using GLES2.\n");
|
|
||||||
- xf86DrvMsg(scrn->scrnIndex, X_WARNING,
|
|
||||||
- "Glamor is using GLES2 but GLX needs GL. "
|
|
||||||
- "Indirect GLX may not work correctly.\n");
|
|
||||||
-#endif
|
|
||||||
return TRUE;
|
|
||||||
|
|
||||||
error:
|
|
||||||
--
|
|
||||||
2.7.4
|
|
||||||
|
|
||||||
|
|
@ -1,8 +1,7 @@
|
||||||
# REPLACE meta-nxp-mx8
|
# REPLACE meta-nxp-mx8
|
||||||
FILESEXTRAPATHS_prepend := "${THISDIR}/${BPN}:"
|
FILESEXTRAPATHS_prepend := "${THISDIR}/${BPN}:"
|
||||||
|
|
||||||
SRC_URI += "file://0001-glamor-Use-CFLAGS-for-EGL-and-GBM.patch \
|
SRC_URI += "file://0001-glamor-Use-CFLAGS-for-EGL-and-GBM.patch"
|
||||||
file://0002-glamor_egl-Automatically-choose-a-GLES2-context-if-d.patch"
|
|
||||||
SRC_URI_remove = "file://0002-configure.ac-Fix-wayland-scanner-and-protocols-locat.patch"
|
SRC_URI_remove = "file://0002-configure.ac-Fix-wayland-scanner-and-protocols-locat.patch"
|
||||||
|
|
||||||
PACKAGECONFIG_remove_mx8 = "glamor"
|
PACKAGECONFIG_remove_mx8 = "glamor"
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue