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
}
// Impeller's Vulkan and OpenGLES backends both leave stale frames on the
// affected 32-bit TCL TV when Plezy uses its transparent TextureView
// composition (#1658). Restore the pre-2.9.0 Skia path for this hardware.
if (!is64Bit && manufacturer.equals("TCL", ignoreCase = true)) {
return FlutterRenderer.SKIA
}
// 32-bit Android TV SoCs are the low-memory / low-throughput class. Skia avoids
// Impeller/Vulkan's substantially higher raster cost on these devices.
if (!is64Bit) return FlutterRenderer.SKIA
return FlutterRenderer.IMPELLER
}
@@ -19,6 +19,11 @@ class FlutterRendererPolicyTest {
assertEquals(FlutterRenderer.IMPELLER, select(manufacturer = "TCL", is64Bit = true))
}
@Test
fun ordinary32BitAndroidTvUsesSkia() {
assertEquals(FlutterRenderer.SKIA, select(manufacturer = "SEI Robotics", is64Bit = false))
}
@Test
fun unsupportedTvsStayOnSkia() {
assertEquals(FlutterRenderer.SKIA, select(sdkInt = 30))
@@ -38,7 +43,7 @@ class FlutterRendererPolicyTest {
fun ordinaryAndroidDevicesKeepAutomaticImpellerBackend() {
assertEquals(
FlutterRenderer.IMPELLER,
select(manufacturer = "Samsung", isAndroidTv = false, sdkInt = 28, supportsVulkan11 = false)
select(manufacturer = "Samsung", isAndroidTv = false, sdkInt = 28, supportsVulkan11 = false, is64Bit = false)
)
}