fix(android): use Skia on 32-bit TCL TVs

This commit is contained in:
edde746
2026-07-25 08:33:06 +02:00
parent fb27621c75
commit 9a6f48a4cb
2 changed files with 9 additions and 10 deletions
@@ -5,8 +5,7 @@ internal enum class FlutterRenderer(
val shellArgument: String?
) {
SKIA("Skia", "--enable-impeller=false"),
IMPELLER("Impeller", null),
IMPELLER_OPEN_GLES("Impeller (OpenGLES)", "--impeller-backend=opengles")
IMPELLER("Impeller", null)
}
/** Selects the Flutter UI renderer before the engine starts. */
@@ -33,11 +32,11 @@ internal object FlutterRendererPolicy {
return FlutterRenderer.SKIA
}
// PowerVR BXE-4-32 drivers in TCL's 32-bit Android 12 TV platform leave
// stale Vulkan frames on screen while scrolling (#1658, flutter/flutter#189767).
// Impeller's OpenGLES backend renders correctly on the same hardware.
// 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.IMPELLER_OPEN_GLES
return FlutterRenderer.SKIA
}
return FlutterRenderer.IMPELLER
@@ -6,12 +6,12 @@ import org.junit.Test
class FlutterRendererPolicyTest {
@Test
fun affected32BitTclTvUsesImpellerOpenGles() {
fun affected32BitTclTvUsesSkia() {
val renderer = select(manufacturer = "TCL", is64Bit = false)
assertEquals(FlutterRenderer.IMPELLER_OPEN_GLES, renderer)
assertEquals("--impeller-backend=opengles", renderer.shellArgument)
assertEquals("Impeller (OpenGLES)", renderer.diagnosticName)
assertEquals(FlutterRenderer.SKIA, renderer)
assertEquals("--enable-impeller=false", renderer.shellArgument)
assertEquals("Skia", renderer.diagnosticName)
}
@Test