aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRobert Foss <robert.foss@collabora.com>2018-07-24 11:09:38 +0200
committerJoonas Kylmälä <joonas.kylmala@iki.fi>2019-02-09 16:55:57 -0500
commit56f35ce55943c122b1ba52950fc59d76b3a9a9ed (patch)
tree948d7a95a14b64e11f7113c178a08344dd4756e8
parent0c5ba2cebfe6504ca46b9162a34d027939666d08 (diff)
downloadexternal_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.c14
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;