Mesa (main): egl/surfaceless: try kms_swrast before swrast

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Jul 21 23:29:25 UTC 2021


Module: Mesa
Branch: main
Commit: 384181921c23fc7630b4a7d373f5b6755d20c8af
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=384181921c23fc7630b4a7d373f5b6755d20c8af

Author: Chia-I Wu <olvaffe at gmail.com>
Date:   Tue Jul 20 14:31:46 2021 -0700

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 at gmail.com>
Reviewed-by: Adam Jackson <ajax at redhat.com>
Reviewed-by: Emil Velikov <emil.l.velikov at 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)) {



More information about the mesa-commit mailing list