Mesa (master): egl/android: use swrast option in droid_load_driver

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Mar 27 17:39:50 UTC 2019


Module: Mesa
Branch: master
Commit: d4e7982b6ef494775556de333f8ad00d082d748b
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=d4e7982b6ef494775556de333f8ad00d082d748b

Author: Gurchetan Singh <gurchetansingh at chromium.org>
Date:   Wed Mar 13 10:49:20 2019 -0700

egl/android: use swrast option in droid_load_driver

Load the kms_swrast driver when specified.
Doesn't work with drm_gralloc.

v2: remove unneeded line (@eric)
v3: Remove swrast_loader_extensions (@evelikov)

Reviewed-by: Emil Velikov <emil.velikov at collabora.com>
Reviewed-by: Eric Engestrom <eric.engestrom at intel.com>

---

 src/egl/drivers/dri2/platform_android.c | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/src/egl/drivers/dri2/platform_android.c b/src/egl/drivers/dri2/platform_android.c
index 1c508b9feb3..b6d58338d46 100644
--- a/src/egl/drivers/dri2/platform_android.c
+++ b/src/egl/drivers/dri2/platform_android.c
@@ -1365,6 +1365,21 @@ droid_load_driver(_EGLDisplay *disp, bool swrast)
       goto error;
    }
 #else
+   if (swrast) {
+      /* Use kms swrast only with vgem / virtio_gpu.
+       * virtio-gpu fallbacks to software rendering when 3D features
+       * are unavailable since 6c5ab.
+       */
+      if (strcmp(dri2_dpy->driver_name, "vgem") == 0 ||
+          strcmp(dri2_dpy->driver_name, "virtio_gpu") == 0) {
+         free(dri2_dpy->driver_name);
+         dri2_dpy->driver_name = strdup("kms_swrast");
+      } else {
+         err = "DRI3: failed to find software capable driver";
+         goto error;
+      }
+   }
+
    dri2_dpy->loader_extensions = droid_image_loader_extensions;
    if (!dri2_load_driver_dri3(disp)) {
       err = "DRI3: failed to load driver";
@@ -1432,6 +1447,9 @@ droid_open_device(_EGLDisplay *disp, bool swrast)
    struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp);
    int fd = -1, err = -EINVAL;
 
+   if (swrast)
+      return EGL_FALSE;
+
    if (dri2_dpy->gralloc->perform)
       err = dri2_dpy->gralloc->perform(dri2_dpy->gralloc,
                                        GRALLOC_MODULE_PERFORM_GET_DRM_FD,




More information about the mesa-commit mailing list