Repository navigation
Description
Steps to reproduce
- On a Linux host whose GPU driver reports as
SVGA3D(VMware virtual GPU via Mesa — seeflutter doctor -voutput below), runflutter createon any app with a moderately complex screen (multipleTextwidgets,TextFields, buttons, an icon — e.g. a settings/login form), thenflutter run -d linux. - Leave the window open and idle (or with a
Timer.periodictriggeringsetState/rebuilds every 1–3s, as is common for apps polling a backend for status). - Watch the window continuously.
A brand-new flutter create counter app (trivial widget tree: one Text + one FloatingActionButton) does not reproduce this — I used it as a control.
Expected results
The window renders once and stays stable; on rebuild it redraws promptly and completely.
Actual results
The window continuously flickers: content visibly draws in slowly/partially, sometimes the whole window goes blank for a frame or more, then redraws again — repeating indefinitely while the window is open, not tied to any particular user interaction. I confirmed this isn't an app-side fade/opacity animation (grepped the app's source for FadeTransition/AnimatedOpacity/TweenAnimationBuilder — none present on the affected screen); the flicker is purely a rendering/compositing symptom.
I bisected this with flutter downgrade: Flutter 3.44.8 (2026-07-23) does not reproduce it on this same machine/app; Flutter 3.47.4 (2026-09-10) reproduces it reliably. This lines up with #186706, which made Impeller the default Linux desktop renderer around that window. The log confirms Impeller/GLES is active:
[IMPORTANT:flutter/shell/platform/embedder/embedder_surface_gl_impeller.cc(126)] Using the Impeller rendering backend (OpenGLESSDF).
Screenshots taken ~0.6s apart with the app idle (no user interaction), while a Timer.periodic in the app rebuilds the widget tree every 1-3s:
- Frame A: form fully rendered (title, two text fields, button, labels)
- Frame B (~0.6s later): same window, entire content area blank
- Frame C (~0.6s later): content partially back, some text elements still faint/incompletely composited
This is consistent with related reports of Impeller having rendering/performance problems specifically on weak or virtualized/software-ish GPU drivers (Mesa llvmpipe/SVGA3D), e.g. #169508 (Mesa software rendering + backdrop filter glitches on Linux, 3.32.0 regression). It's plausible the trivial counter app simply doesn't have enough paint work per frame to expose slow/incomplete compositing on this GPU, while a real-world screen with normal UI density does.
Related issues
- [linux] Set Impeller as default renderer #186706 — [linux] Set Impeller as default renderer (confirms the timing of this regression)
- [Impeller][macOS] Whole-window flickering when scrolling an image grid on Intel (x86_64) Macs (default renderer since 3.47) #191538 — [Impeller][macOS] Whole-window flickering... (default renderer since 3.47) — same regression class, different platform
- [Linux][Regression][3.32.0] Rendering glitches when using backdrop filter and forcing Mesa software rendering (LIBGL_ALWAYS_SOFTWARE=1) #169508 — [Linux][Regression][3.32.0] Rendering glitches with backdrop filter + Mesa software rendering
- UI flickers on Linux Desktop when mouse hovers over icon buttons #172079 — UI flickers on Linux Desktop when mouse hovers over icon buttons (narrower, possibly related Linux/Impeller flicker report)
- [Linux] Flutter Window Flickering on Ubuntu in VMware with 3D Acceleration Enabled #140766 — closed for lack of a minimal repro / doctor output; also reported
SVGA3D(VMware) as the GPU, also flicker-on-interaction rather than continuous, but same underlying driver
Logs
[IMPORTANT:flutter/shell/platform/embedder/embedder_surface_gl_impeller.cc(126)] Using the Impeller rendering backend (OpenGLESSDF).
No GPU-side errors, crashes, or GDK-CRITICAL assertions logged — the app runs and is usable, just visibly flickering/slow to redraw throughout the session.
Flutter Doctor output
[✓] Flutter (Channel stable, 3.47.4, on Ubuntu 26.04.1 LTS 7.0.0-31-generic, locale en_US.UTF-8) [16ms]
• Flutter version 3.47.4 on channel stable at /home/gkirkendall/flutter
• Upstream repository https://github.com/flutter/flutter.git
• Framework revision 9584c6713b (6 days ago), 2026-09-10 15:25:10 -0700
• Engine revision 06a2e2a110
• Dart version 3.13.3
• DevTools version 2.60.0
[✓] Linux toolchain - develop for Linux desktop [143ms]
• Ubuntu clang version 21.1.8 (6ubuntu1)
• cmake version 4.2.3
• ninja version 1.13.2
• pkg-config version 2.5.1
• OpenGL core renderer: SVGA3D; build: RELEASE; LLVM; (X11)
• OpenGL core version: 4.3 (Core Profile) Mesa 26.0.8-1ubuntu0.3 (X11)
• OpenGL core shading language version: 4.30 (X11)
• OpenGL ES renderer: SVGA3D; build: RELEASE; LLVM; (X11)
• OpenGL ES version: OpenGL ES 3.1 Mesa 26.0.8-1ubuntu0.3 (X11)
• OpenGL ES shading language version: OpenGL ES GLSL ES 3.10 (X11)
• GL_EXT_framebuffer_blit: yes (X11)
• GL_EXT_texture_format_BGRA8888: yes (X11)
[✓] Connected device (2 available) [90ms]
• Linux (desktop) • linux • linux-arm64 • Ubuntu 26.04.1 LTS 7.0.0-31-generic
• Chrome (web) • chrome • web-javascript • Chromium 150.0.7871.100 snap
[✓] Network resources [324ms]
• All expected network resources are available.
This is a VMware virtual machine (arm64 guest), GPU exposed via Mesa's SVGA3D gallium driver — not a real/passthrough GPU.
Activity
suryaKommana2662 commentedon Sep 17, 2026
@gkirkendall Thanks for the detailed report. I tested this locally on Flutter 3.47.4 stable using a ChromeOS Linux container with the following environment:
Mesa OpenGL/ES renderer
: llvmpipeImpeller rendering backend:
OpenGLESSDFThe reported issue was reproduced in the reporter's environment with a
Mesa SVGA3Drenderer on a VMware virtual machine. I left the application running and observed it for several minutes, but did not observe the reported continuous whole-window flickering, blank frames, or incomplete redraws in my environment. I also confirmed that Impeller was active during the test:Using the Impeller rendering backend (OpenGLESSDF).The main difference between the two environments is the graphics renderer: the reporter uses
SVGA3D, while my ChromeOS Linux container usesllvmpipe. I have included the file used for this local test below. routing to theteam-enginefor further investigationcode
Flutter Doctor Output
infinite-persistence commentedon Sep 17, 2026
Environment
Output
--no-enable-impellerimpeller.mp4
daniele-athome commentedon Oct 2, 2026
For people searching the "workaround" keyword within the page 🙃 the workaround is adding this parameter to the run command:
Disable Impeller on Linux (#2080)
GVladi commentedon Oct 21, 2026
But you cannot do it, if you are just running a flutter desktop app built by someone else.
I can confirm the same rendering issue when Impeller is used on my VMWare Kubuntu VM:
robert-ancell commentedon Nov 4, 2026
This is a bug in the SVGA3D driver, see https://gitlab.freedesktop.org/mesa/mesa/-/work_items/16775. The workaround for Flutter apps is to disable impeller.
[Impeller] Use separate uniform buffers on VMware SVGA3D (flutter#196022