From d1773ee30f4bce9717fda41d74e996841dcfa9a8 Mon Sep 17 00:00:00 2001 From: The412Banner Date: Mon, 12 Oct 2026 20:15:47 -0400 Subject: [PATCH] An Exynos with a Mali is a Mali, not an Xclipse The system route took vulkan.samsung.so as Samsung's Xclipse, but an Exynos 1280/1380 (Galaxy Tab S9 FE: Mali-G68) may name its HAL the same; with /dev/mali0 present that HAL is not the system route's, and the device is detected as the Mali it is. The chip table adds the Exynos 1380 and 1280 (s5e8835, s5e8825: Mali-G68). --- .../main/java/com/droiddeck/launcher/gpu/GpuInfo.kt | 1 + .../droiddeck/launcher/gpu/SystemVulkanDriver.java | 11 +++++++++-- .../com/droiddeck/launcher/gpu/DriverPairsTest.kt | 3 +++ 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/droiddeck/launcher/gpu/GpuInfo.kt b/app/src/main/java/com/droiddeck/launcher/gpu/GpuInfo.kt index 7662f4ce5..a2a950b15 100644 --- a/app/src/main/java/com/droiddeck/launcher/gpu/GpuInfo.kt +++ b/app/src/main/java/com/droiddeck/launcher/gpu/GpuInfo.kt @@ -181,6 +181,7 @@ data class GpuInfo( "mt6833" to "Mali-G57", "mt6835" to "Mali-G57", "mt6789" to "Mali-G57", "mt6785" to "Mali-G76", "mt6781" to "Mali-G52", "mt6769" to "Mali-G52", "mt8192" to "Mali-G57", "mt8195" to "Mali-G57", "gs101" to "Mali-G78", "gs201" to "Mali-G710", "zuma" to "Mali-G715", "zumapro" to "Mali-G715", + "s5e8835" to "Mali-G68", "s5e8825" to "Mali-G68", ) /** The Mali [ids] name a chip of, "Mali-G720 (by chip mt6989)", or null for an unknown chip. */ diff --git a/app/src/main/java/com/droiddeck/launcher/gpu/SystemVulkanDriver.java b/app/src/main/java/com/droiddeck/launcher/gpu/SystemVulkanDriver.java index b6f0e6efd..07ba47cd1 100644 --- a/app/src/main/java/com/droiddeck/launcher/gpu/SystemVulkanDriver.java +++ b/app/src/main/java/com/droiddeck/launcher/gpu/SystemVulkanDriver.java @@ -43,9 +43,16 @@ public final class SystemVulkanDriver { private SystemVulkanDriver() {} - /** The first vendor HAL present, or null. */ + /** + * The first vendor HAL present, or null. An Exynos with a Mali (Exynos 1280/1380: /dev/mali0) + * may name its HAL vulkan.samsung.so too; that is a Mali, not an Xclipse, and is not taken. + */ public static String hal() { - for (String path : HALS) if (new File(path).isFile()) return path; + for (String path : HALS) { + if (!new File(path).isFile()) continue; + if (path.endsWith("/vulkan.samsung.so") && new File("/dev/mali0").exists()) continue; + return path; + } return null; } diff --git a/app/src/test/java/com/droiddeck/launcher/gpu/DriverPairsTest.kt b/app/src/test/java/com/droiddeck/launcher/gpu/DriverPairsTest.kt index ee8d87f38..78451b4de 100644 --- a/app/src/test/java/com/droiddeck/launcher/gpu/DriverPairsTest.kt +++ b/app/src/test/java/com/droiddeck/launcher/gpu/DriverPairsTest.kt @@ -225,6 +225,9 @@ class DriverPairsTest { assertEquals("Mali-G720 (by chip mt6989)", GpuInfo.maliOfSoc(listOf("", "mt6989"))) assertEquals("Mali-G710 (by chip gs201)", GpuInfo.maliOfSoc(listOf("GS201"))) assertEquals(null, GpuInfo.maliOfSoc(listOf("unknown-chip"))) + // An Exynos with a Mali, and a Helio G99, by board name. + assertEquals(Family.MALI_JM, GpuInfo.familyOf(false, 0, mali = GpuInfo.maliOfSoc(listOf("s5e8835")))) + assertEquals(Family.MALI_JM, GpuInfo.familyOf(false, 0, mali = GpuInfo.maliOfSoc(listOf("MT6789")))) assertEquals(Family.MALI_G720, GpuInfo.familyOf(false, 0, mali = "Mali-G720 (by chip mt6989)")) assertEquals(Family.MALI_LATEST, GpuInfo.familyOf(false, 0, mali = "Mali-G925 (by chip mt6991)")) assertTrue(GpuInfo.maliKbaseCovered("Mali-G720 (by chip mt6989)"))