blob: 872749285e97007be30990f6b57278b73ead0c3a [file] [log] [blame]
From 384181921c23fc7630b4a7d373f5b6755d20c8af Mon Sep 17 00:00:00 2001
From: Chia-I Wu <olvaffe@gmail.com>
Date: Tue, 20 Jul 2021 14:31:46 -0700
Subject: [PATCH 1/2] egl/surfaceless: try kms_swrast before swrast
Before commit f7e0cdcf1a5, we tried these in order
- if (!ForceSoftware) surfaceless_probe_device(disp, false);
- surfaceless_probe_device(disp, true);
- surfaceless_probe_device_sw(disp);
The commit changed it to
- surfaceless_probe_device(disp, ForceSoftware);
- surfaceless_probe_device_sw(disp);
and broke 2D virtio-gpu and vgem when ForceSoftware is false. This
commit restores the old behavior.
Fixes: f7e0cdcf1a5 ("egl/surfaceless: simplify dri2_initialize_surfaceless()")
Signed-off-by: Chia-I Wu <olvaffe@gmail.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11992>
---
src/egl/drivers/dri2/platform_surfaceless.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/egl/drivers/dri2/platform_surfaceless.c b/src/egl/drivers/dri2/platform_surfaceless.c
index 2cd909c75a2..a420eb09ff6 100644
--- a/src/egl/drivers/dri2/platform_surfaceless.c
+++ b/src/egl/drivers/dri2/platform_surfaceless.c
@@ -327,14 +327,18 @@ dri2_initialize_surfaceless(_EGLDisplay *disp)
dri2_dpy->fd = -1;
disp->DriverData = (void *) dri2_dpy;
+ /* When ForceSoftware is false, we try the HW driver. When ForceSoftware
+ * is true, we try kms_swrast and swrast in order.
+ */
driver_loaded = surfaceless_probe_device(disp, disp->Options.ForceSoftware);
+ if (!driver_loaded && disp->Options.ForceSoftware) {
+ _eglLog(_EGL_DEBUG, "Falling back to surfaceless swrast without DRM.");
+ driver_loaded = surfaceless_probe_device_sw(disp);
+ }
if (!driver_loaded) {
- _eglLog(_EGL_DEBUG, "Falling back to surfaceless swrast without DRM.");
- if (!surfaceless_probe_device_sw(disp)) {
- err = "DRI2: failed to load driver";
- goto cleanup;
- }
+ err = "DRI2: failed to load driver";
+ goto cleanup;
}
if (!dri2_create_screen(disp)) {
--
2.32.0.402.g57bb445576-goog