Skip to content

Disable Impeller on Linux - #2080

Merged
crossle merged 1 commit into
mainfrom
fix/linux-disable-impeller
Oct 21, 2026
Merged

crossle merged 1 commit into
mainfrom
fix/linux-disable-impeller

Conversation

@boyan01

@boyan01 boyan01 commented Oct 21, 2026

Copy link
Copy Markdown
Collaborator

Summary

Flutter 3.47 made Impeller the default Linux renderer. On the Mesa SVGA3D driver (VMware with 3D acceleration) Impeller draws blank and partial frames, so the whole window keeps flickering. Upstream: flutter/flutter#192915 (open, P2).

Release builds ignore FLUTTER_ENGINE_SWITCHES, so --no-enable-impeller is not available to users. The runner opts out instead:

 g_autoptr(FlDartProject) project = fl_dart_project_new();
 fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments);
+fl_dart_project_set_enable_impeller(project, FALSE);

This covers every Flutter view in the app:

my_application.cc   FlDartProject (Impeller off)
  FlView main window
  bot_window_composer   fl_view_new_for_engine(main engine)   # same engine
desktop_webview_window 0.4.0   native GtkHeaderBar, no FlDartProject

Evidence

VMware Fusion, Ubuntu 24.04.3 aarch64, GNOME Wayland, Mesa 25.2.8 SVGA3D. Release 6.3.2 binary, 8 screenshots in a burst per run.

Run Renderer GL driver Result
Default Impeller SVGA3D Blank and partial frames
LIBGL_ALWAYS_SOFTWARE=1 Impeller llvmpipe OK
Impeller disabled Skia SVGA3D OK
  • Before: the window alternates between blank and half-drawn frames.
    After: stable frames. The differences in the burst were only the unread count changing.

The "Impeller disabled" run injected fl_dart_project_set_enable_impeller(project, FALSE) into the existing release binary with LD_PRELOAD. A build from this branch has not been run yet. CI flutter build linux checks that it compiles.

Merge Danger

Door: two-way

Revert the line to go back to Impeller, for example once #192915 is fixed.

Blast Radius: Linux

All Linux users render with Skia again, as before 3.47. flutter/flutter#194433 reports Impeller jank on AMD radeonsi that Skia does not have, so real GPUs should not get slower. macOS and Windows are not touched.

Impeller became the default Linux renderer in Flutter 3.47. With the Mesa SVGA3D driver (VMware with 3D acceleration) it draws blank and partial frames, so the whole window flickers (flutter/flutter#192915). Release builds ignore FLUTTER_ENGINE_SWITCHES, so users cannot opt out themselves. Go back to Skia, the renderer used before 3.47.
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 21, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-21T07:11:23.810488Z 2fb13b6 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@boyan01
boyan01 requested review from YeungKC and crossle October 21, 2026 08:25
@crossle
crossle merged commit 1e17301 into main Oct 21, 2026
10 checks passed
@crossle
crossle deleted the fix/linux-disable-impeller branch October 21, 2026 09:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants