Skip to content

Flutter GPU must be enabled via the Flutter GPU manifest setting #168126

@eskov-ea

Description

@eskov-ea

Steps to reproduce

I'm trying to run example with Flutter GPU at https://medium.com/flutter/getting-started-with-flutter-gpu-f33d497b7c11

flutter channel master
flutter upgrade
flutter pub add flutter_gpu --sdk=flutter
flutter pub add flutter_gpu_shaders
flutter config --enable-native-assets
flutter pub add native_assets_cli
flutter run -d macos --enable-impeller

I tried to add suggested argument --enable-flutter-gpu to be attached to a device via edit configuration

Expected results

I expect the code to compile and executes with no crash as the tutorial says.

Actual results

Crash at runtime with the following output:

The following _Exception was thrown during paint():
Exception: Flutter GPU must be enabled via the Flutter GPU manifest setting. This can be done either via command line argument --enable-flutter-gpu or by adding the FLTEnableFlutterGPU key set to true on iOS or io.flutter.embedding.android.EnableFlutterGPU metadata key to true on Android.

Code sample

Code sample
[Paste your code here]

Screenshots or Video

Screenshots / Video demonstration

[Upload media here]

Logs

Logs
Launching lib/main.dart on macOS in debug mode...
Building macOS application...
--- xcodebuild: WARNING: Using the first of multiple matching destinations:
{ platform:macOS, arch:arm64, id:00006000-000470242262801E, name:My Mac }
{ platform:macOS, arch:x86_64, id:00006000-000470242262801E, name:My Mac }
✓ Built build/macos/Build/Products/Debug/gpu_test.app
2025-05-01 13:32:57.660 gpu_test[68323:22319671] Running with merged UI and platform thread. Experimental.
[IMPORTANT:flutter/shell/platform/embedder/embedder_surface_metal_impeller.mm(51)] Using the Impeller rendering backend (Metal).
Failed to foreground app; open returned 1
Debug service listening on ws://127.0.0.1:65135/JOuKpAuh00o=/ws
Syncing files to device macOS...
2025-05-01 13:32:58.187 gpu_test[68323:22319671] +[IMKClient subclass]: chose IMKClient_Modern
2025-05-01 13:32:58.187 gpu_test[68323:22319671] +[IMKInputSession subclass]: chose IMKInputSession_Modern

======== Exception caught by rendering library =====================================================
The following _Exception was thrown during paint():
Exception: Flutter GPU must be enabled via the Flutter GPU manifest setting. This can be done either via command line argument --enable-flutter-gpu or by adding the FLTEnableFlutterGPU key set to true on iOS or io.flutter.embedding.android.EnableFlutterGPU metadata key to true on Android.

The relevant error-causing widget was: 
  CustomPaint CustomPaint:file:///Users/evgeny/Practice/flutter/gpu_test/lib/main.dart:20:13
When the exception was thrown, this was the stack: 
#0      new GpuContext._createDefault (package:flutter_gpu/src/context.dart:18:7)
#1      gpuContext (package:flutter_gpu/src/context.dart:187:42)
#2      gpuContext (package:flutter_gpu/src/context.dart)
#3      TrianglePainter.paint (package:gpu_test/main.dart:33:13)
#4      RenderCustomPaint._paintWithPainter (package:flutter/src/rendering/custom_paint.dart:593:13)
#5      RenderCustomPaint.paint (package:flutter/src/rendering/custom_paint.dart:641:7)
#6      RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3483:7)
#7      PaintingContext.paintChild (package:flutter/src/rendering/object.dart:261:13)
#8      RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:13)
#9      RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3483:7)
#10     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:261:13)
#11     RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:13)
#12     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3483:7)
#13     PaintingContext._repaintCompositedChild (package:flutter/src/rendering/object.dart:176:11)
#14     PaintingContext.repaintCompositedChild (package:flutter/src/rendering/object.dart:121:5)
#15     PaintingContext._compositeChild (package:flutter/src/rendering/object.dart:272:7)
#16     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:253:7)
#17     RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:13)
#18     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3483:7)
#19     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:261:13)
#20     RenderBoxContainerDefaultsMixin.defaultPaint (package:flutter/src/rendering/box.dart:3372:15)
#21     RenderStack.paintStack (package:flutter/src/rendering/stack.dart:704:5)
#22     RenderStack.paint (package:flutter/src/rendering/stack.dart:720:7)
#23     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3483:7)
#24     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:261:13)
#25     RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:13)
#26     RenderDecoratedBox.paint (package:flutter/src/rendering/proxy_box.dart:2450:11)
#27     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3483:7)
#28     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:261:13)
#29     RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:13)
#30     RenderFractionalTranslation.paint (package:flutter/src/rendering/proxy_box.dart:3072:13)
#31     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3483:7)
#32     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:261:13)
#33     RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:13)
#34     RenderFractionalTranslation.paint (package:flutter/src/rendering/proxy_box.dart:3072:13)
#35     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3483:7)
#36     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:261:13)
#37     RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:13)
#38     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3483:7)
#39     PaintingContext._repaintCompositedChild (package:flutter/src/rendering/object.dart:176:11)
#40     PaintingContext.repaintCompositedChild (package:flutter/src/rendering/object.dart:121:5)
#41     PaintingContext._compositeChild (package:flutter/src/rendering/object.dart:272:7)
#42     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:253:7)
#43     RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:13)
#44     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3483:7)
#45     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:261:13)
#46     RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:13)
#47     RenderOffstage.paint (package:flutter/src/rendering/proxy_box.dart:3877:11)
#48     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3483:7)
#49     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:261:13)
#50     RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:13)
#51     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3483:7)
#52     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:261:13)
#53     _RenderTheaterMixin.paint (package:flutter/src/widgets/overlay.dart:1120:15)
#54     _RenderTheater.paint (package:flutter/src/widgets/overlay.dart:1478:13)
#55     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3483:7)
#56     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:261:13)
#57     RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:13)
#58     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3483:7)
#59     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:261:13)
#60     RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:13)
#61     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3483:7)
#62     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:261:13)
#63     RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:13)
#64     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3483:7)
#65     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:261:13)
#66     RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:13)
#67     RenderCustomPaint.paint (package:flutter/src/rendering/custom_paint.dart:644:11)
#68     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3483:7)
#69     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:261:13)
#70     RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:13)
#71     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3483:7)
#72     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:261:13)
#73     RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:13)
#74     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3483:7)
#75     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:261:13)
#76     RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:13)
#77     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3483:7)
#78     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:261:13)
#79     RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:13)
#80     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3483:7)
#81     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:261:13)
#82     RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:13)
#83     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3483:7)
#84     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:261:13)
#85     RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:13)
#86     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3483:7)
#87     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:261:13)
#88     RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:13)
#89     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3483:7)
#90     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:261:13)
#91     RenderView.paint (package:flutter/src/rendering/view.dart:322:15)
#92     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3483:7)
#93     PaintingContext._repaintCompositedChild (package:flutter/src/rendering/object.dart:176:11)
#94     PaintingContext.repaintCompositedChild (package:flutter/src/rendering/object.dart:121:5)
#95     PipelineOwner.flushPaint (package:flutter/src/rendering/object.dart:1312:31)
#96     PipelineOwner.flushPaint (package:flutter/src/rendering/object.dart:1322:15)
#97     RendererBinding.drawFrame (package:flutter/src/rendering/binding.dart:631:23)
#98     WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:1231:13)
#99     RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:495:5)
#100    SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1438:15)
#101    SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1351:9)
#102    SchedulerBinding.scheduleWarmUpFrame.<anonymous closure> (package:flutter/src/scheduler/binding.dart:1060:9)
#103    PlatformDispatcher.scheduleWarmUpFrame.<anonymous closure> (dart:ui/platform_dispatcher.dart:889:16)
#107    _RawReceivePort._handleMessage (dart:isolate-patch/isolate_patch.dart:193:12)
(elided 3 frames from class _Timer and dart:async-patch)
The following RenderObject was being processed when the exception was fired: RenderCustomPaint#40a03
...  parentData: <none> (can use size)
...  constraints: BoxConstraints(w=800.0, h=600.0)
...  size: Size(800.0, 600.0)
...  painter: TrianglePainter#e40bf()
RenderObject: RenderCustomPaint#40a03
  parentData: <none> (can use size)
  constraints: BoxConstraints(w=800.0, h=600.0)
  size: Size(800.0, 600.0)
  painter: TrianglePainter#e40bf()
====================================================================================================

Flutter Doctor output

Doctor output
evgeny@MacBook-Pro-admin gpu_test % flutter doctor -v
[✓] Flutter (Channel main, 3.32.0-1.0.pre.343, on macOS 15.1 24B83 darwin-arm64, locale ru-RU) [14,6s]
    • Flutter version 3.32.0-1.0.pre.343 on channel main at /Users/evgeny/Documents/services/flutter-main
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 87753f3840 (4 hours ago), 2025-04-30 19:55:04 -0400
    • Engine revision 87753f3840
    • Dart version 3.9.0 (build 3.9.0-63.0.dev)
    • DevTools version 2.45.0

[✓] Android toolchain - develop for Android devices (Android SDK version 35.0.0) [3,7s]
    • Android SDK at /Users/evgeny/Library/Android/sdk
    • Emulator version 35.2.10.0 (build_id 12414864) (CL:N/A)
    • Platform android-35, build-tools 35.0.0
    • Java binary at: /Users/evgeny/Library/Java/JavaVirtualMachines/jbr-17.0.12/Contents/Home/bin/java
      This JDK is specified in your Flutter configuration.
      To change the current JDK, run: `flutter config --jdk-dir="path/to/jdk"`.
    • Java version OpenJDK Runtime Environment JBR-17.0.12+1-1207.37-nomod (build 17.0.12+1-b1207.37)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 16.2) [1 055ms]
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 16C5032a
    • CocoaPods version 1.16.2

[✓] Chrome - develop for the web [12ms]
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 2024.2) [11ms]
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 21.0.3+-79915917-b509.11)

[✓] VS Code (version 1.99.3) [10ms]
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension can be installed from:
      🔨 https://marketplace.visualstudio.com/items?itemName=Dart-Code.flutter

[✓] Connected device (2 available) [6,0s]
    • macOS (desktop) • macos  • darwin-arm64   • macOS 15.1 24B83 darwin-arm64
    • Chrome (web)    • chrome • web-javascript • Google Chrome 135.0.7049.115
    ! Error: Browsing on the local area network for iPhone  Евгений. Ensure the device is unlocked and attached with a cable or associated with the same local
      area network as this Mac.
      The device must be opted into Developer Mode to connect wirelessly. (code -27)

[✓] Network resources [1 363ms]
    • All expected network resources are available.

Metadata

Metadata

Assignees

Labels

P3Issues that are less important to the Flutter projectengineflutter/engine related. See also e: labels.flutter-gpuplatform-macBuilding on or for macOS specificallyr: fixedIssue is closed as already fixed in a newer versionteam-engineOwned by Engine teamtriaged-engineTriaged by Engine team

Type

No type

Projects

Status

✅ Done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions