diff options
author | Robert Foss <robert.foss@collabora.com> | 2018-07-24 11:09:38 +0200 |
---|---|---|
committer | Joonas Kylmälä <joonas.kylmala@iki.fi> | 2019-02-09 16:55:57 -0500 |
commit | 56f35ce55943c122b1ba52950fc59d76b3a9a9ed (patch) | |
tree | 948d7a95a14b64e11f7113c178a08344dd4756e8 | |
parent | 0c5ba2cebfe6504ca46b9162a34d027939666d08 (diff) | |
download | external_mesa3d-56f35ce55943c122b1ba52950fc59d76b3a9a9ed.tar.gz external_mesa3d-56f35ce55943c122b1ba52950fc59d76b3a9a9ed.tar.bz2 external_mesa3d-56f35ce55943c122b1ba52950fc59d76b3a9a9ed.zip |
platform/android: Enable kms_swrast fallback
Add support for the ForceSoftware option, which is togglable
on the Android platform through setting the "drm.gpu.force_software"
property to a non-zero value.
kms_swrast is also enabled as a fallback for when a driver is not
able to be loaded for for a drm node that was opened.
Signed-off-by: Robert Foss <robert.foss@collabora.com>
Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
-rw-r--r-- | src/egl/drivers/dri2/platform_android.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/src/egl/drivers/dri2/platform_android.c b/src/egl/drivers/dri2/platform_android.c index cc16fd8118f..b201327184c 100644 --- a/src/egl/drivers/dri2/platform_android.c +++ b/src/egl/drivers/dri2/platform_android.c @@ -1200,7 +1200,11 @@ droid_load_driver(_EGLDisplay *disp) struct dri2_egl_display *dri2_dpy = disp->DriverData; const char *err; - dri2_dpy->driver_name = loader_get_driver_for_fd(dri2_dpy->fd); + if (disp->Options.ForceSoftware) + dri2_dpy->driver_name = strdup("kms_swrast"); + else + dri2_dpy->driver_name = loader_get_driver_for_fd(dri2_dpy->fd); + if (dri2_dpy->driver_name == NULL) return false; @@ -1364,10 +1368,6 @@ dri2_initialize_android(_EGLDriver *drv, _EGLDisplay *disp) const char *err; int ret; - /* Not supported yet */ - if (disp->Options.ForceSoftware) - return EGL_FALSE; - loader_set_logger(_eglLog); dri2_dpy = calloc(1, sizeof(*dri2_dpy)); @@ -1386,10 +1386,12 @@ dri2_initialize_android(_EGLDriver *drv, _EGLDisplay *disp) dri2_dpy->fd = droid_open_device(disp); if (dri2_dpy->fd < 0) { - err = "DRI2: failed to open device"; + err = "DRI2: failed to open device, trying software device"; goto cleanup; } + /* Fallback to forcing software rendering is implemented using + * disp->Options.ForceSoftware in egldriver.c */ if (!droid_load_driver(disp)) { err = "DRI2: failed to load driver"; goto cleanup; |