jwinarske / meta-flutter

Yocto meta layer for recipes related to using Google Flutter Engine
MIT License
45 stars 22 forks source link

Hardware acceleration in flutter-wayland #10

Closed limbouser closed 4 years ago

limbouser commented 4 years ago

Does flutter-wayland provide hardware acceleration by default, I had observed a delay while running the flutter gallery app provided by the flutter team on flutter-wayland. Do you have an idea about those?

jwinarske commented 4 years ago

The default configuration is configured for hardware as opposed to software rendering. That's done with Engine build flags. That said you can still have a target such as some iMX devices don't have a GPU, and the bottom of the stack is a software framebuffer.

The primary source of start delay is from not running an Ahead of Time (AOT) image.

limbouser commented 4 years ago

Does this work on a Pi with h/w acceleration or without ? ie, on a Pi with Zeus image using your layer.

jwinarske commented 4 years ago

I suspect your start delay has to do with not running the application as compiled (AOT). If you don't build app as AOT, then it will be interpreted, which results in the app taking a long time to load. This is unrelated to the engine build.

limbouser commented 4 years ago

I was trying the flutter gallery application itself provided by the Flutter team.

jwinarske commented 4 years ago

Unless you build the app as AOT, it will be built as interpreted.

limbouser commented 4 years ago

Can I run an AOT app using flutter_wayland?

jwinarske commented 4 years ago

Yes

limbouser commented 4 years ago

And how would that be actually? I want to minimize the delay on start and there is a significant amount of delay for the icons to load

jwinarske commented 4 years ago

The current implementation is single threaded. The engine can support more.

jwinarske commented 4 years ago

I documented the steps to build AOT here https://github.com/jwinarske/meta-flutter/issues/7

limbouser commented 4 years ago

I need some clarification about steps to build AOT from #7

These are the manual steps in master to generate ELF shared library

you have mentioned 'master' in the beginning of step, does that mean I have try all this on a master commit of flutter engine?

Build engine of same commit for Host, to get the following

For host means, I have to bitbake the flutter-engine-native recipe file? If yes, do I have add the flag
--runtime-mode release to flutter-engine-native recipe?

I bitbaked flutter-engine with the --runtime-mode release flag, and no file named dart or frontend_server.dart.snapshot were not present in this path cortexa7*/flutter-engine/git-r0/git/src/out/linux_release_arm/

I assume flutter-engine-aot mentioned in the steps you have taken is the flutter-engine package itself.

Edit: All the files you mentioned dart and frontend_server.dart.snapshot were obtained in tmp/work/x86_64-linux/flutter-engine-native/git-r0/git/src/out/host_release_unopt when I built the flutter-engine-native with the '--runtime-mode release' flag but according to your #7 it should be in tmp/work/cortexa7t2hf-neon-vfpv4-poky-linux-gnueabi/flutter-engine-aot/git-r0/git/src/out/linux_release_arm/

Edit: I have used flutter-engine-native recipe file without the release flags and used the files in out/host_release/unopt to generate app.dill and libapp.so . Do I need anyother files to run flutter-wayland, how do I package them and run it on flutter-wayland?

jwinarske commented 4 years ago

There's work in the tools support area. AOT toolset generation is currently manual. One of the key host side artifacts are built during the target build. Manual building of tools isn't a regular activity, so a low priority.

limbouser commented 4 years ago

Sorry for all the trouble caused over this AOT, the commit for flutter_wayland hasn't been changed so as to include AOT mode. It worked when that change was made.