| 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 |
| |