Skip to content
GitLab
Explore
Sign in
Register
Commits on Source (2)
dont-init-glamor-on-llvmpipe.diff: Glamor shouldn't be used on llvmpipe
· 823eb263
Timo Aaltonen
authored
Oct 02, 2018
as it might end up crashing the server on a racy bootup. (LP: #1792932)
823eb263
release to cosmic
· f45460f6
Timo Aaltonen
authored
Oct 02, 2018
f45460f6
Show whitespace changes
Inline
Side-by-side
debian/changelog
View file @
f45460f6
xorg-server (2:1.20.1-3ubuntu2) cosmic; urgency=medium
* dont-init-glamor-on-llvmpipe.diff: Glamor shouldn't be used on
llvmpipe, as it might end up crashing the server on a racy bootup.
(LP: #1792932)
-- Timo Aaltonen <tjaalton@debian.org> Tue, 02 Oct 2018 21:40:03 +0300
xorg-server (2:1.20.1-3ubuntu1) cosmic; urgency=medium
* Merge from Debian.
...
...
debian/patches/dont-init-glamor-on-llvmpipe.diff
0 → 100644
View file @
f45460f6
commit 0a9415cf793babed1f28c61f8047d51de04f1528
Author: Adam Jackson <ajax@redhat.com>
Date: Fri Sep 14 11:33:43 2018 -0400
glamor_egl: Don't initialize on llvmpipe
Mesa started supporting GL_OES_EGL_image on llvmpipe in 17.3, after this
commit:
commit bbdeddd5fd0b797e1e281f058338b3da4d98029d
Author: Gurchetan Singh <gurchetansingh@chromium.org>
Date: Tue Aug 1 14:49:33 2017 -0700
st/dri: add drisw image extension
That's pretty cool, but it means glamor now thinks it can initialize on
llvmpipe. This is almost certainly not what anyone wants, as glamor on
llvmpipe is pretty much uniformly slower than fb.
This fixes both Xorg and Xwayland to refuse glamor in such a setup.
Xephyr is left alone, both because glamor is not the default there and
because Xephyr+glamor+llvmpipe is one of the easier ways to get xts to
exercise glamor.
The (very small) downside of this change is that you lose DRI3 support.
This wouldn't have helped you very much (since an lp glamor blit is
slower than a pixman blit), but it would eliminate the PutImage overhead
for llvmpipe's glXSwapBuffers. A future change should add DRI3 support
for the fb-only case.
Reviewed-by: Eric Anholt <eric@anholt.net>
Signed-off-by: Adam Jackson <ajax@redhat.com>
diff --git a/glamor/glamor_egl.c b/glamor/glamor_egl.c
index df278b1a1..9b930d603 100644
--- a/glamor/glamor_egl.c
+++ b/glamor/glamor_egl.c
@@ -898,6 +898,7 @@
Bool
glamor_egl_init(ScrnInfoPtr scrn, int fd)
{
struct glamor_egl_screen_private *glamor_egl;
+ const GLubyte *renderer;
glamor_egl = calloc(sizeof(*glamor_egl), 1);
if (glamor_egl == NULL)
@@ -992,6 +993,14 @@
glamor_egl_init(ScrnInfoPtr scrn, int fd)
"Failed to make EGL context current\n");
goto error;
}
+
+ renderer = glGetString(GL_RENDERER);
+ if (strstr((const char *)renderer, "llvmpipe")) {
+ xf86DrvMsg(scrn->scrnIndex, X_INFO,
+ "Refusing to try glamor on llvmpipe\n");
+ goto error;
+ }
+
/*
* Force the next glamor_make_current call to set the right context
* (in case of multiple GPUs using glamor)
@@ -1005,7 +1014,7 @@
glamor_egl_init(ScrnInfoPtr scrn, int fd)
}
xf86DrvMsg(scrn->scrnIndex, X_INFO, "glamor X acceleration enabled on %s\n",
- glGetString(GL_RENDERER));
+ renderer);
#ifdef GBM_BO_WITH_MODIFIERS
if (epoxy_has_egl_extension(glamor_egl->display,
diff --git a/hw/xwayland/xwayland-glamor-gbm.c b/hw/xwayland/xwayland-glamor-gbm.c
index 06fcf5239..25a354bf7 100644
--- a/hw/xwayland/xwayland-glamor-gbm.c
+++ b/hw/xwayland/xwayland-glamor-gbm.c
@@ -843,6 +843,11 @@
xwl_glamor_gbm_init_egl(struct xwl_screen *xwl_screen)
goto error;
}
+ if (strstr((const char *)glGetString(GL_RENDERER), "llvmpipe")) {
+ ErrorF("Refusing to try glamor on llvmpipe\n");
+ goto error;
+ }
+
if (!epoxy_has_gl_extension("GL_OES_EGL_image")) {
ErrorF("GL_OES_EGL_image not available\n");
goto error;
debian/patches/series
View file @
f45460f6
...
...
@@ -25,3 +25,4 @@ xi2-resize-touch.patch
fix-default-permissions.patch
prime-sync-refactor.diff
sync-i965-pciids.diff
dont-init-glamor-on-llvmpipe.diff