perf(android): use Skia on 32-bit Android TVs

This commit is contained in:
edde746
2026-07-25 16:45:59 +02:00
parent 77da82b648
commit 5c221468d6
2 changed files with 9 additions and 7 deletions
@@ -32,12 +32,9 @@ internal object FlutterRendererPolicy {
return FlutterRenderer.SKIA return FlutterRenderer.SKIA
} }
// Impeller's Vulkan and OpenGLES backends both leave stale frames on the // 32-bit Android TV SoCs are the low-memory / low-throughput class. Skia avoids
// affected 32-bit TCL TV when Plezy uses its transparent TextureView // Impeller/Vulkan's substantially higher raster cost on these devices.
// composition (#1658). Restore the pre-2.9.0 Skia path for this hardware. if (!is64Bit) return FlutterRenderer.SKIA
if (!is64Bit && manufacturer.equals("TCL", ignoreCase = true)) {
return FlutterRenderer.SKIA
}
return FlutterRenderer.IMPELLER return FlutterRenderer.IMPELLER
} }
@@ -19,6 +19,11 @@ class FlutterRendererPolicyTest {
assertEquals(FlutterRenderer.IMPELLER, select(manufacturer = "TCL", is64Bit = true)) assertEquals(FlutterRenderer.IMPELLER, select(manufacturer = "TCL", is64Bit = true))
} }
@Test
fun ordinary32BitAndroidTvUsesSkia() {
assertEquals(FlutterRenderer.SKIA, select(manufacturer = "SEI Robotics", is64Bit = false))
}
@Test @Test
fun unsupportedTvsStayOnSkia() { fun unsupportedTvsStayOnSkia() {
assertEquals(FlutterRenderer.SKIA, select(sdkInt = 30)) assertEquals(FlutterRenderer.SKIA, select(sdkInt = 30))
@@ -38,7 +43,7 @@ class FlutterRendererPolicyTest {
fun ordinaryAndroidDevicesKeepAutomaticImpellerBackend() { fun ordinaryAndroidDevicesKeepAutomaticImpellerBackend() {
assertEquals( assertEquals(
FlutterRenderer.IMPELLER, FlutterRenderer.IMPELLER,
select(manufacturer = "Samsung", isAndroidTv = false, sdkInt = 28, supportsVulkan11 = false) select(manufacturer = "Samsung", isAndroidTv = false, sdkInt = 28, supportsVulkan11 = false, is64Bit = false)
) )
} }