Repository navigation
Closed
Labels
P1High-priority issues at the top of the work listHigh-priority issues at the top of the work lista: productionIssues experienced in live production appsIssues experienced in live production appsc: performanceRelates to speed or footprint issues (see "perf:" labels)Relates to speed or footprint issues (see "perf:" labels)e: device-specificOnly manifests on certain devicesOnly manifests on certain devicese: impellerImpeller rendering backend issues and features requestsImpeller rendering backend issues and features requestsengineflutter/engine related. See also e: labels.flutter/engine related. See also e: labels.needs repro infoAutomated crash report whose cause isn't yet knownAutomated crash report whose cause isn't yet knownperf: speedPerformance issues related to (mostly rendering) speedPerformance issues related to (mostly rendering) speedplatform-androidAndroid applications specificallyAndroid applications specificallyteam-engineOwned by Engine teamOwned by Engine teamtriaged-engineTriaged by Engine teamTriaged by Engine team
Description
Steps to reproduce
Environment
Flutter version: 3.38.2 (stable)
Platform: Android
Device: Moto G73
SoC: Dimensity 930
GPU: PowerVR BXM
Android version: 14
Build mode: Profile
Description
On a Moto G73 with PowerVR BXM GPU, running the same Flutter app in profile mode shows a significant FPS difference depending on Impeller.
- With Impeller enabled: ~80 FPS
- With Impeller disabled (Skia): ~117 FPS
This is measured in profile mode using devtools.
No Vulkan fallback warnings are shown.
The performance drop is visually noticeable as stutter/jank.
Expected results
Impeller performance should be comparable to or better than Skia.
Actual results
Impeller shows ~30% lower frame rate than Skia on this device.
Code sample
Code sample
[Paste your code here]Screenshots or Video
Screenshots / Video demonstration
[Upload media here]
Logs
Logs
[Paste your logs here]Flutter Doctor output
Doctor output
[Paste your output here]Metadata
Metadata
Assignees
Labels
P1High-priority issues at the top of the work listHigh-priority issues at the top of the work lista: productionIssues experienced in live production appsIssues experienced in live production appsc: performanceRelates to speed or footprint issues (see "perf:" labels)Relates to speed or footprint issues (see "perf:" labels)e: device-specificOnly manifests on certain devicesOnly manifests on certain devicese: impellerImpeller rendering backend issues and features requestsImpeller rendering backend issues and features requestsengineflutter/engine related. See also e: labels.flutter/engine related. See also e: labels.needs repro infoAutomated crash report whose cause isn't yet knownAutomated crash report whose cause isn't yet knownperf: speedPerformance issues related to (mostly rendering) speedPerformance issues related to (mostly rendering) speedplatform-androidAndroid applications specificallyAndroid applications specificallyteam-engineOwned by Engine teamOwned by Engine teamtriaged-engineTriaged by Engine teamTriaged by Engine team
Activity
tirth-patel-nc commentedon Jan 22, 2026
@Ashupaldeora For us to further investigate this issue, please provide a completed and minimal reproducible code sample that doesn’t include 3rd party plugins or complex production code. Also, please share the output
flutter doctor -v.the request is unclear and lacks enough detail to act on. please provide a clearer description and the expected behavior.
this tracker is for sdk-related issues only. for general help, please use stackoverflow or flutter community channels.
Thank you!
Ashupaldeora commentedon Jan 22, 2026
Below is a single-file, SDK-only minimal repro.
It can be pasted directly into lib/main.dart of a new Flutter project.
No third-party plugins, assets, or network requests are used.
Observed results (Moto G73, PowerVR BXM, Flutter 3.38.2, profile mode):
Impeller enabled: ~20 FPS average (Flutter DevTools)
Impeller disabled (Skia): ~70 FPS average
The difference is immediately visible during scroll and navigation.
Expected behavior:
Impeller performance should be comparable to Skia for common UI patterns involving images, shadows, and blur.
Actual behavior:
Impeller shows a severe performance regression (~3× lower FPS) on this device.
flutter doctor logs
[✓] Flutter (Channel stable, 3.38.2, on macOS 15.7.2 24G325 darwin-arm64, locale en-IN) [482ms]
• Flutter version 3.38.2 on channel stable at /Users/ashupalsmac/Documents/development/flutter
• Upstream repository https://github.com/flutter/flutter.git
• Framework revision f5a8537 (9 weeks ago), 2025-11-18 09:27:21 -0500
• Engine revision b5990e5
• Dart version 3.10.0
• DevTools version 2.51.1
• Feature flags: enable-web, enable-linux-desktop, enable-macos-desktop, enable-windows-desktop, enable-android, enable-ios, cli-animations,
enable-native-assets, omit-legacy-version-file, enable-lldb-debugging
[✓] Android toolchain - develop for Android devices (Android SDK version 36.0.0) [5.8s]
• Android SDK at /Users/ashupalsmac/Library/Android/sdk
• Emulator version 36.2.12.0 (build_id 14214601) (CL:N/A)
• Platform android-36.1, build-tools 36.0.0
• ANDROID_HOME = /Users/ashupalsmac/Library/Android/sdk
• Java binary at: /Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java
This is the JDK bundled with the latest Android Studio installation on this machine.
To manually set the JDK path, use:
flutter config --jdk-dir="path/to/jdk".• Java version OpenJDK Runtime Environment (build 21.0.8+-14196175-b1038.72)
• All Android licenses accepted.
[✓] Xcode - develop for iOS and macOS (Xcode 16.4) [1,493ms]
• Xcode at /Applications/Xcode.app/Contents/Developer
• Build 16F6
• CocoaPods version 1.16.2
[✓] Chrome - develop for the web [5ms]
• Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
[✓] Connected device (5 available) [6.4s]
• moto g73 5G (mobile) • ZD2229HRVB • android-arm64 • Android 14 (API 34)
• iPhone (wireless) (mobile) • 00008030-001E6D421A9A802E • ios • iOS 18.4.1 22E252
• iPhone 17 Pro Max (mobile) • AD796097-DB88-47DD-9C18-B37ADB59F1BC • ios • com.apple.CoreSimulator.SimRuntime.iOS-26-1 (simulator)
• macOS (desktop) • macos • darwin-arm64 • macOS 15.7.2 24G325 darwin-arm64
• Chrome (web) • chrome • web-javascript • Google Chrome 144.0.7559.60
[✓] Network resources [3.4s]
• All expected network resources are available.
• No issues found!
tirth-patel-nc commentedon Jan 23, 2026
@Ashupaldeora could you please share the flutter run -v & performance dump json via devtools?
Ashupaldeora commentedon Jan 23, 2026
Hi @tirth-patel-nc , thanks for looking into this.
I’ve attached the requested artifacts:
Verbose run logs
impeller_profile_run.txt — flutter run --profile -v (Impeller enabled)
skia_profile_run.txt — flutter run --profile --no-enable-impeller -v
DevTools performance json
impeller_performance.json
skia_performance.json
The timelines capture scrolling and navigation interactions where the FPS difference is most visible (Impeller ~20 FPS vs Skia ~70 FPS on Moto G73 / PowerVR BXM, Android 14).
6 remaining items
Ashupaldeora commentedon Jan 27, 2026
@gaaclarke At the moment I only have access to this device (Moto G73 / PowerVR BXM). I don’t have other Android devices available to test on right now.
That said, I did share a release build with a few friends on different Android devices, and they reported normal performance there.
flutter-triage-bot commentedon Jun 3, 2026
This issue is marked P1 but has had no recent status updates.
The P1 label indicates high-priority issues that are at the top of the work list. This is the highest priority level a bug can have if it isn't affecting a top-tier customer or breaking the build. Bugs marked P1 are generally actively being worked on unless the assignee is dealing with a P0 bug (or another P1 bug). Issues at this level should be resolved in a matter of months and should have monthly updates on GitHub.
Please consider where this bug really falls in our current priorities, and label it or assign it accordingly. This allows people to have a clearer picture of what work is actually planned. Thanks!
enoiu commentedon Jun 18, 2026
Hi, As I commented on #179921, I wanted to share some additional reports from my users that might be related to the PowerVR BXM GPU.
Unfortunately I couldn't capture the logs, but my users have been experiencing severe rendering bugs (fragmented pages, missing UI, shaking) on the following devices:
Since disabling Impeller causes huge performance drops for my drawing app, my only workaround was to downgrade to Flutter 3.35.7, which completely resolved the issue for them.
Since these devices also use PowerVR BXM GPUs, I thought this information might be helpful for your investigation!
gaaclarke commentedon Jun 18, 2026
@Ashupaldeora if you have a setup that reproduces the problem you can try forcing the app into OpenGLES. You can add the following flag to you manifest (it only works in profile and debug builds).
If that fixes the problem we can look into blocking those devices from using vulkan. The most likely explanation for what you are seeing is inferior vulkan drivers.
Ashupaldeora commentedon Jul 13, 2026
@gaaclarke
Yes, forcing the app to use OpenGLES improves the performance noticeably on the same device.
I don’t have exact FPS numbers right now, but with Vulkan the app feels much slower/jankier, while with OpenGLES it feels significantly smoother.
So it does look like the issue is specific to the Vulkan backend on this PowerVR BXM device.
perret123 commentedon Aug 19, 2026
Same GPU family, with the exact FPS numbers @gaaclarke asked for when suggesting the
ImpellerBackend=openglestest.Device: Acer Iconia A16 (
A16-11MN_EEA) — SoC Allwinner A733, GPU PowerVR B-Series BXM-4-64, GLES 3.2 driver24.2@6643903, Android 15 (API 35). Same A733 + BXM-4-64 MC1 combination @enoiu reported for the Teclast T60AI and Acer Iconia Tab A14.Flutter 3.47.0.
ImpellerBackendtoggled via manifest in--profilebuilds; Skia viaEnableImpeller=falsein--release.The collapse is orientation-dependent
The panel's native orientation is landscape (1920x1200 @60Hz, density 160, dpr 1.0). Each run is 5x navigating into a heavy screen and back, identical content and gestures, frame counts from
dumpsys SurfaceFlinger --timestats:Forcing OpenGLES fully fixes it — 39.4 vs 15.8 FPS, a 2.5x difference in the same build type, landing exactly on Skia's number. In the device's native orientation Vulkan is only ~15% behind Skia; in the rotated orientation it drops 55%.
Mechanism
dumpsys SurfaceFlingerHWC layer table for the Flutter surface, portrait:ROT_9000In landscape every layer composites as
DEVICE. In portrait this display engine (AllwinnerSUNXI HWC,DE.0) loses hardware overlay support and the whole screen falls back toCLIENT(GPU) composition. The OpenGLES and Skia backends pre-rotate into a display-oriented buffer; the Vulkan backend hands the compositor a portrait buffer taggedROT_90, and that rotated blit is what this driver handles badly.This likely also explains the "fragmented pages / missing UI / shaking" reports — at ~16 FPS with full-screen GPU composition, partial and stale frames are exactly what a user sees. A
screencapof the same screen is pixel-perfect, so the rendered content is correct; it just doesn't reach the display in time.Denylist note
driver_info_vk.cccurrently blocks onlypowervr_gpu_ < PowerVRGPU::kBXE, so BXM passes (since #173561) — while the enum itself markskAXE..kBXTas "Vulkan may work, but not tested".There is already a PowerVR DDK version floor in
IsKnownBadDriver()(25.1 /6794074), but it is gated on the Pixel 10 device ID. This tablet ships24.2@6643903, below that floor, and is not covered by it. A version-based rule rather than a device-ID-based one would catch this class of device.Happy to run further measurements on this hardware if that helps.
Denylists b-series powervr from vulkan (flutter#191808)
[CP-beta]Denylists b-series powervr from vulkan (#191904)
[CP-stable]Denylists b-series powervr from vulkan (#191903)
github-actions commentedon Sep 10, 2026
This thread has been automatically locked since there has not been any recent activity after it was closed. If you are still experiencing a similar issue, please open a new bug, including the output of
flutter doctor -vand a minimal reproduction of the issue.