summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorŁukasz Spintzyk <lukasz.spintzyk@synaptics.com>2021-06-08 18:53:07 +0200
committerMatt Turner <mattst88@gmail.com>2021-06-09 19:25:30 +0000
commit4e11bd390a28144fac03dc21a6caf0800596e2fa (patch)
treed31c7e56b37f5bef0f4755cdd83bda43ca0d9076
parent6272529339f975777f22bb0e6162ac43480ae257 (diff)
modesetting: Disable reverse prime offload mode for displays running on evdi,udl
This mode for displays running on evdi/udl as side effect of failed glamor_egl_init reverse_prime_offload_mode was initialized to FALSE After Mesa upgrade to 21.0.0 GL_RENDERER is not llvmpipe that results in successful glamor_egl_init and reverse_prime_offload_mode enabled. This commit is explicitly disabling reverse_prime_offload_mode for evdi and udl drivers Signed-off-by: Łukasz Spintzyk <lukasz.spintzyk@synaptics.com> (cherry picked from commit 7e7c147105ac704a7b33bdee0f85dc9ccdd8f747)
-rw-r--r--hw/xfree86/drivers/modesetting/driver.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/hw/xfree86/drivers/modesetting/driver.c b/hw/xfree86/drivers/modesetting/driver.c
index ef4a3147d..8ca3e897a 100644
--- a/hw/xfree86/drivers/modesetting/driver.c
+++ b/hw/xfree86/drivers/modesetting/driver.c
@@ -1752,18 +1752,30 @@ ScreenInit(ScreenPtr pScreen, int argc, char **argv)
"Failed to initialize the Present extension.\n");
}
/* enable reverse prime if we are a GPU screen, and accelerated, and not
- * i915. i915 is happy scanning out from sysmem. */
+ * i915, evdi or udl. i915 is happy scanning out from sysmem.
+ * evdi and udl are virtual drivers scanning out from sysmem
+ * backed dumb buffers.
+ */
if (pScreen->isGPU) {
drmVersionPtr version;
/* enable if we are an accelerated GPU screen */
ms->drmmode.reverse_prime_offload_mode = TRUE;
- /* disable if we detect i915 */
if ((version = drmGetVersion(ms->drmmode.fd))) {
if (!strncmp("i915", version->name, version->name_len)) {
ms->drmmode.reverse_prime_offload_mode = FALSE;
}
+ if (!strncmp("evdi", version->name, version->name_len)) {
+ ms->drmmode.reverse_prime_offload_mode = FALSE;
+ }
+ if (!strncmp("udl", version->name, version->name_len)) {
+ ms->drmmode.reverse_prime_offload_mode = FALSE;
+ }
+ if (!ms->drmmode.reverse_prime_offload_mode) {
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "Disable reverse prime offload mode for %s.\n", version->name);
+ }
drmFreeVersion(version);
}
}