Skip to content

[Impeller] [Windows] --no-enable-impeller does not disable Impeller in release mode #190910

Closed

Description

@Razorex001

On master version, running an app in release mode with --no-enable-impeller flag does not result in the app using Skia.
I didn't check if this issue is present also in the latest beta/stable versions of flutter.

I was not sure if I should have reported this as an issue or not because I'm not sure if this is intentional or not, because it's been like this for long time, and I do not know how can it be that nobody noticed about this.

Steps to reproduce

Run any app with:

flutter run -d windows --release --no-enable-impeller

Look in the terminal where it will show:

[IMPORTANT:flutter/shell/platform/embedder/embedder_surface_gl_impeller.cc(127)] Using the Impeller rendering backend (OpenGLESSDF).

Note that the log that says it's using the Impeller rendering backend is not sent erroneously, because I can confirm that the performance of my apps is exactly the impeller one.

This issue doesn't happen in profile mode or in debug mode, where the flag --no-enable-impeller correctly results in the apps running using Skia.

Expected results

What should happen normally is that when a flutter app is ran in release mode with the --no-enable-impeller flag, the app should use Skia, and not Impeller.

Actual results

What happens instead is that the message

[IMPORTANT:flutter/shell/platform/embedder/embedder_surface_gl_impeller.cc(127)] Using the Impeller rendering backend (OpenGLESSDF).

is displayed, and the performance of the apps match the one normally seen when running them on impeller.

Code sample

Code sample not needed because I believe you can test this with any flutter app on windows.

Screenshots or Video

Screenshots / Video demonstration

[Upload media here]

Logs

Logs
flutter run -d windows --release --no-enable-impeller
Launching lib\main.dart on Windows in release mode...
Building Windows application...                                    51,6s
√ Built build\windows\x64\runner\Release\flutter_impeller_windows_scroll_repro_clean.exe

Flutter run key commands.
h List all available interactive commands.
c Clear the screen
q Quit (terminate the application on the device).

[IMPORTANT:flutter/shell/platform/embedder/embedder_surface_gl_impeller.cc(127)] Using the Impeller rendering backend (OpenGLESSDF).

Flutter Doctor output

Doctor output
flutter doctor -v                                    
[√] Flutter (Channel master, 3.47.0-1.0.pre-504, on Microsoft Windows [Version 10.0.19045.7548], locale it-IT) [2,7s]
    • Flutter version 3.47.0-1.0.pre-504 on channel master at C:\src\flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision b5971cabf9 (5 hours ago), 2026-08-11 04:51:22 +0000
    • Engine revision b5971cabf9
    • Dart version 3.14.0 (build 3.14.0-111.0.dev)
    • DevTools version 2.61.0-dev.0
    • Feature flags: enable-web, enable-linux-desktop, enable-macos-desktop, enable-windows-desktop, enable-android, enable-ios, cli-animations, enable-native-assets,
      enable-record-use, enable-swift-package-manager, omit-legacy-version-file, enable-windowing, enable-lldb-debugging, enable-uiscene-migration, enable-riscv64

[√] Windows Version (10 Pro 64-bit, 22H2, 2009) [2,6s]

[√] Android toolchain - develop for Android devices (Android SDK version 36.1.0) [3,0s]
    • Android SDK at C:\Users\moret\AppData\Local\Android\sdk
    • Emulator version 36.6.11.0 (build_id 15507667) (CL:N/A)
    • Platform android-36.1, build-tools 36.1.0
    • Java binary at: C:\Program Files\Android\Android Studio\jbr\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.10+-14961533-b1163.108)
    • All Android licenses accepted.

[√] Chrome - develop for the web [123ms]
    • Chrome at C:\Program Files\Google\Chrome\Application\chrome.exe

[√] Visual Studio - develop Windows apps (Visual Studio Community 2022 17.14.37 (July 2026)) [121ms]
    • Visual Studio at C:\Program Files\Microsoft Visual Studio\2022\Community
    • Visual Studio Community 2022 version 17.14.37516.0
    • Windows 10 SDK version 10.0.26100.0

[√] Connected device (3 available) [297ms]
    • Windows (desktop) • windows • windows-x64    • Microsoft Windows [Version 10.0.19045.7548]
    • Chrome (web)      • chrome  • web-javascript • Google Chrome 151.0.7922.76
    • Edge (web)        • edge    • web-javascript • Microsoft Edge 151.0.4129.72

[√] Network resources [637ms]
    • All expected network resources are available.

• No issues found!

Activity

  1. puneetkukreja98 commented on Aug 11, 2026

    @puneetkukreja98
    Contributor

    @Razorex001 Thanks for reporting the issue. I was able to reproduce it on latest master. When running in release mode with --no-enable-impeller, the logs show Using the Impeller rendering backend... whereas this doesn't happen in profile and debug mode.

    Console logs:

    PS C:\Google\win_impeller_master_app> flutter run -d windows --release --no-enable-impeller
    Launching lib\main.dart on Windows in release mode...
    Building Windows application...                                    34.4s
    √ Built build\windows\x64\runner\Release\win_impeller_master_app.exe
    
    Flutter run key commands.
    h List all available interactive commands.
    c Clear the screen
    q Quit (terminate the application on the device).
    
    [IMPORTANT:flutter/shell/platform/embedder/embedder_surface_gl_impeller.cc(127)] Using the Impeller rendering backend (OpenGLESSDF).
    
    Application finished.
    PS C:\Google\win_impeller_master_app> flutter run -d windows --profile --no-enable-impeller
    Launching lib\main.dart on Windows in profile mode...
    Building Windows application...                                    14.3s
    √ Built build\windows\x64\runner\Profile\win_impeller_master_app.exe
    
    Flutter run key commands.
    h List all available interactive commands.
    c Clear the screen
    q Quit (terminate the application on the device).
    
    A Dart VM Service on Windows is available at: http://127.0.0.1:61089/nP6kCVuOiTE=/
    The Flutter DevTools debugger and profiler on Windows is available at:
    http://127.0.0.1:61089/nP6kCVuOiTE=/devtools/?uri=ws://127.0.0.1:61089/nP6kCVuOiTE=/ws

    Flutter doctor -v:

    [√] Flutter (Channel master, 3.47.0-1.0.pre-505, on Microsoft Windows [Version 10.0.26200.8875], locale en-IN) [3.2s]
        • Flutter version 3.47.0-1.0.pre-505 on channel master at C:\Developer\flutter
        • Upstream repository https://github.com/flutter/flutter.git
        • Framework revision f20f4b26de (3 hours ago), 2026-08-11 10:01:39 +0000
        • Engine revision f20f4b26de
        • Dart version 3.14.0 (build 3.14.0-114.0.dev)
        • DevTools version 2.61.0-dev.0
        • Feature flags: enable-web, enable-linux-desktop, enable-macos-desktop, enable-windows-desktop, enable-android,
          enable-ios, cli-animations, enable-native-assets, enable-record-use, enable-swift-package-manager,
          omit-legacy-version-file, enable-windowing, enable-lldb-debugging, enable-uiscene-migration, enable-riscv64
    
    [√] Windows Version (Windows 11 or higher, 25H2, 2009) [2.4s]
    
    [√] Android toolchain - develop for Android devices (Android SDK version 37.0.0) [3.5s]
        • Android SDK at C:\Users\Puneet\AppData\Local\Android\sdk
        • Emulator version 36.6.11.0 (build_id 15507667) (CL:N/A)
        • Platform android-37.1, build-tools 37.0.0
        • Java binary at: C:\Program Files\Android\Android Studio1\jbr\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.10+-14961533-b1163.108)
        • All Android licenses accepted.
    
    [√] Chrome - develop for the web [104ms]
        • Chrome at C:\Program Files\Google\Chrome\Application\chrome.exe
    
    [√] Visual Studio - develop Windows apps (Visual Studio Community 2026 18.3.2) [102ms]
        • Visual Studio at C:\Program Files\Microsoft Visual Studio\18\Community
        • Visual Studio Community 2026 version 18.3.11520.95
        • Windows 10 SDK version 10.0.26100.0
    
    [√] Connected device (3 available) [307ms]
        • Windows (desktop) • windows • windows-x64    • Microsoft Windows [Version 10.0.26200.8875]
        • Chrome (web)      • chrome  • web-javascript • Google Chrome 151.0.7922.77
        • Edge (web)        • edge    • web-javascript • Microsoft Edge 151.0.4129.72
    
    [√] Network resources [987ms]
        • All expected network resources are available.
    
    • No issues found!
  2. puneetkukreja98 commented on Aug 11, 2026

    @puneetkukreja98
    Contributor

    Related issue: #187737

  3. added
    engineflutter/engine related. See also e: labels.
    platform-windowsBuilding on or for Windows specifically
    e: impellerImpeller rendering backend issues and features requests
    fyi-windowsFor the attention of the Windows platform team
    and removed
    in triagePresently being triaged by the triage team
    on Aug 11, 2026
  4. added
    P0Critical issues such as a build break or regression
    P1High-priority issues at the top of the work list
    and removed
    P0Critical issues such as a build break or regression
    on Aug 12, 2026
  5. loic-sharma commented on Aug 12, 2026

    @loic-sharma
    Member

    @Razorex001 Thanks for filing this bug! Are you able to opt-out of Impeller in release mode if you add the following content to your windows\runner\main.cpp file?

    project.set_impeller_switch(flutter::ImpellerSwitch::Disabled);

    @gaaclarke I marked this as a P1 as this might prevent people from opt-ing out of Impeller on stable.

  6. Razorex001 commented on Aug 12, 2026

    @Razorex001
    Author

    @Razorex001 Thanks for filing this bug! Are you able to opt-out of Impeller in release mode if you add the following content to your windows\runner\main.cpp file?

    project.set_impeller_switch(flutter::ImpellerSwitch::Disabled);
    @gaaclarke I marked this as a P1 as this might prevent people from opt-ing out of Impeller on stable.

    I just tested it. running app with:

    flutter run -d windows --release --no-enable-impeller
    

    with ImpellerSwitch disabled in main.cpp the app used Skia so I was able to opt-out.

    Also running the app with:

    flutter run -d windows --release
    

    results in Skia being used. This is still not ideal because one would expect that when the flag is not used, it uses Impeller by default, but at the very least it is possible to opt out with that line, which I guess is better than nothing.

  7. gaaclarke commented on Aug 12, 2026

    @gaaclarke
    Member

    This is still not ideal because one would expect that when the flag is not used, it uses Impeller by default

    That's the intended behavior. If you supply no command-line flag you will get whatever the project settings are or impeller if you never set them.

    There is a case where the project flag and the command-line flag do no agree, we need to give preference to one of them. The way it should work is that command-line flags get the preference.

  8. gaaclarke commented on Aug 12, 2026

    @gaaclarke
    Member

    This is works-as-intended. The flags that control the graphics backend intentionally don't work in release builds. You are supposed to set them with internal project flags. We could be a better partner though and warn users when that flag is ignored. I'll file a followup issue for that.

  9. gaaclarke commented on Aug 12, 2026

    @gaaclarke
    Member

    filed: #191027

  10. github-actions commented on Aug 26, 2026

    @github-actions

    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 -v and a minimal reproduction of the issue.

  11. locked as resolved and limited conversation to collaborators on Aug 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    P1High-priority issues at the top of the work liste: impellerImpeller rendering backend issues and features requestsengineflutter/engine related. See also e: labels.fyi-windowsFor the attention of the Windows platform teamplatform-windowsBuilding on or for Windows specificallyteam-engineOwned by Engine team

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions