From b3a0fa30f7a9a7a051a4d6a889db033c03d8a7e9 Mon Sep 17 00:00:00 2001 From: Valentine Burley Date: Mon, 24 Nov 2025 13:04:55 +0100 Subject: [PATCH] egl: Disable kopper on Android Kopper is not supported on Android, and attempting to use it breaks zink on the platform. Disable kopper automatically when running on Android, fixing zink without `LIBGL_KOPPER_DISABLE`. Fixes: 3294cad3415 ("egl: Rename dri2_detect_swrast() and also detect kopper") Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/14331 Signed-off-by: Valentine Burley Reviewed-by: Yiwei Zhang Reviewed-by: Antonio Ospite Part-of: (cherry picked from commit 8a1ea724b49f0f18a8d4609e9f7ee191a084d718) --- .pick_status.json | 2 +- src/egl/drivers/dri2/egl_dri2.c | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index ab643d3c3bf..66a65e42ba0 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -3314,7 +3314,7 @@ "description": "egl: Disable kopper on Android", "nominated": true, "nomination_type": 2, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "3294cad34159bd5317e3dfb0cb4e0ba5caca9f77", "notes": null diff --git a/src/egl/drivers/dri2/egl_dri2.c b/src/egl/drivers/dri2/egl_dri2.c index 4e277eb6f2a..4af682d3fdc 100644 --- a/src/egl/drivers/dri2/egl_dri2.c +++ b/src/egl/drivers/dri2/egl_dri2.c @@ -542,8 +542,9 @@ dri2_detect_swrast_kopper(_EGLDisplay *disp) { struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp); + /* Kopper won't work on Android without extra platform level support. */ dri2_dpy->kopper = dri2_dpy->driver_name && !strcmp(dri2_dpy->driver_name, "zink") && - !debug_get_bool_option("LIBGL_KOPPER_DISABLE", false); + !debug_get_bool_option("LIBGL_KOPPER_DISABLE", false) && disp->Platform != _EGL_PLATFORM_ANDROID; dri2_dpy->swrast = (disp->Options.ForceSoftware && !dri2_dpy->kopper && strcmp(dri2_dpy->driver_name, "vmwgfx")) || !dri2_dpy->driver_name || strstr(dri2_dpy->driver_name, "swrast"); dri2_dpy->swrast_not_kms = dri2_dpy->swrast && (!dri2_dpy->driver_name || strcmp(dri2_dpy->driver_name, "kms_swrast"));