sony / flutter-embedded-linux Goto Github PK
View Code? Open in Web Editor NEWEmbedded Linux embedding for Flutter
License: BSD 3-Clause "New" or "Revised" License
Embedded Linux embedding for Flutter
License: BSD 3-Clause "New" or "Revised" License
I think a suitable message is "Couldn't find a encoder"
I can run the Gallery app (master) AOT on a NVIDIA Xavier (demo-image-egl - master) using flutter-drm-eglstream-backend. LC_ALL needs to be properly set or you get a gray screen with a small flutter logo on top of the screen. Mouse swipes don't work, only click and scroll. Most of the screens support swipes.
root@jetson-xavier-nx-devkit:~# LC_ALL=en_GB flutter-drm-eglstream-backend -b /usr/share/flutter-gallery/sony
[WARNING][linuxes_window_drm.h(112)] FLUTTER_DRM_DEVICE is not set, use /dev/dri/card0
[INFO][native_window_drm.cc(67)] resolution: 1680x1440
[INFO][linuxes_window_drm.h(140)] Display output resolution: 1680x1440
[ERROR][native_window_drm.cc(43)] Couldn't move the mouse cursor: -14
[ERROR][native_window_drm.cc(43)] Couldn't move the mouse cursor: -14
[ERROR][native_window_drm.cc(43)] Couldn't move the mouse cursor: -14
[ERROR][native_window_drm.cc(43)] Couldn't move the mouse cursor: -14
[ERROR][native_window_drm.cc(43)] Couldn't move the mouse cursor: -14
[ERROR][native_window_drm.cc(43)] Couldn't move the mouse cursor: -14
[ERROR][native_window_drm.cc(43)] Couldn't move the mouse cursor: -14
[ERROR][native_window_drm.cc(43)] Couldn't move the mouse cursor: -14
[ERROR][native_window_drm.cc(43)] Couldn't move the mouse cursor: -14
[ERROR][native_window_drm.cc(43)] Couldn't move the mouse cursor: -14
[ERROR][native_window_drm.cc(43)] Couldn't move the mouse cursor: -14
Built with meta-flutter
Just finished running through the instructions to get an App built for an RPi4. Although I now have the app running (via drm backend) I did have some confusion with where to put the built libflutter_engine.so file.
I could only get it to run correctly if I copied libflutter_engine.so to both the cmake build directory as well as /usr/lib on the target device. I'm not sure if this is due to a bug or intended behavior. If it is intended behavior then I feel like the documentation needs some adjustment to reflect that.
Perhaps Step 5 of BUILDING-ENGINE-EMBEDDER.md
could be amended to also include installing libflutter_engine.so to /usr/lib on the target device.
It would also be worth amending step 3) of the Install Flutter Engine library
section of the readme for those who download the engine from google infra.
Hi,
I was wondering if you might be interested in using Ozone to abstract away the back ends for Wayland, DRM, etc.
That would also bring along support for X11, Cast and any future backends as well.
There is no dependency on any other toolkit like GTK or even a dependency on Chromium.
It would bring along support for running headless, using hardware overlays and zero-copy texture uploads for things like low power hardware accelerated video on embedded and desktop platforms.
Currently, the virtual keyboard input is only enabled when running as weston-desktop-shell. Reported from: https://twitter.com/PakoSStoyanov/status/1391034963030597632
Only a small issue but the BUILDING-ENGINE-EMBEDDER.md
is missing a step to install ninja-build.
This caused a minor bit of confusion for myself as I'm new to Linux and C/C++ building.
The following errors are output on the DRM-GBM backend.
[WARNING][context_egl.cc(100)] Failed to create EGL off-screen surface.(eglGetError: EGL_BAD_ALLOC)
[WARNING][linuxes_surface.cc(27)] Off-Screen surface is invalid.
The documentation implies that libflutter_engine.so
has to be installed here:
While this is the preferred method, the libraries can be loaded without placing them in /urs/lib
.
The following method can be used instead:
LD_LIBRARY_PATH=<path_to_engine> ./flutter-client ./sample/build/linux/x64/debug/bundle
This could be useful when:
libflutter_engine.so
Add headless rendering mode support. This feature is very low priority since it's not normal use cases.
Compiling the standalone wayland client caused a compile error:
Used commands:
cmake -DUSER_PROJECT_PATH=examples/flutter-wayland-client ..
cmake --build .
Environment:
Custom Yocto SDK - Cross compilation for arm64.
Error from the build:
In file included from /home/user/flutter/flutter-embedded-linux/src/flutter/shell/platform/linux_embedded/flutter_linuxes.cc:29:
/home/user/flutter/flutter-embedded-linux/src/flutter/shell/platform/linux_embedded/window/linuxes_window_wayland.h:76:17: error: declaration of ‘wl_pointer* flutter::LinuxesWindowWayland::CursorInfo::wl_pointer’ changes meaning of ‘wl_pointer’ [-fpermissive]
76 | wl_pointer* wl_pointer;
| ^~~~~~~~~~
In file included from /opt/yoctosdk/3.1/sysroots/aarch64-yoctosdk-linux/usr/include/wayland-client.h:40,
from /home/user/flutter/flutter-embedded-linux/src/flutter/shell/platform/linux_embedded/window/linuxes_window_wayland.h:8,
from /home/user/flutter/flutter-embedded-linux/src/flutter/shell/platform/linux_embedded/flutter_linuxes.cc:29:
/opt/yoctosdk/3.1/sysroots/aarch64-yoctosdk-linux/usr/include/wayland-client-protocol.h:78:8: note: ‘wl_pointer’ declared here as ‘struct wl_pointer’
78 | struct wl_pointer;
| ^~~~~~~~~~
Workaround:
Rename wl_pointer in CursorInfo.
Running a Yocto rpi4-64 dunfell weston build, flutter-client launches and does not render to the Wayland display. I am using this layer recipe to build the flutter engine and flutter-client.
This software requires some libraries such as xkbcommon for user inputs. In some use cases, user input events such as keyboard and mouse are not required. It can reduce the necessary libraries by adding a new compiler option.
Some system settings are fixed at specific values. It is necessary to make these APIs so that the settings can be changed from the upper layer.
settings.AddMember("alwaysUse24HourFormat", true, allocator);
settings.AddMember("textScaleFactor", 1.0, allocator);
settings.AddMember("platformBrightness", "light", allocator);
There is no information on how to gather logs or to trace errors.
To gather some further information about the DRM segfault I'm getting on my aarch64 devices, I've built the drm backend with an additional parameter so that lldb and gdb can provide more detailed feedback:
cmake -DUSER_PROJECT_PATH=examples/flutter-drm-backend -DCMAKE_BUILD_TYPE=Debug ..
What would be the preferred method of capturing/tracing errors with the embedder?
If the resolution of the display changes while displaying the screen with the EGLStream backend, the screen display is not updated.
Do you have a plan to add a Yocto support for flutter-embedded-linux?
Yocto Layer for the Flutter already exists :
https://github.com/jwinarske/meta-flutter
It has support for some of the engines, such as flutter-pi.
Currently, the version we support weston is 6.0.1. So, we need to update to the latest version. However, many BSPs have not supported the latest version yet. So, we need to consider how to support multi-version. Does Weston have backwards compatibility?
Jeston Nano: weston version 6.0.1
Patches for weston examples. MIT licensed reference recipes here
From 09fec6d14ee6aeb3e5472f1eb8aa7e7e70c2a7c0 Mon Sep 17 00:00:00 2001
From: Joel Winarske <[email protected]>
Date: Wed, 14 Apr 2021 16:53:46 +0000
Subject: [PATCH 1/3] weston parser fixes for desktop
---
examples/flutter-weston-desktop-shell/main.cc | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/examples/flutter-weston-desktop-shell/main.cc b/examples/flutter-weston-desktop-shell/main.cc
index db81ea9..51d04ec 100644
--- a/examples/flutter-weston-desktop-shell/main.cc
+++ b/examples/flutter-weston-desktop-shell/main.cc
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include <config-parser.h>
+#include <libweston/config-parser.h>
#include <flutter/dart_project.h>
#include <flutter/flutter_view_controller.h>
@@ -12,14 +12,14 @@
int main(int argc, char** argv) {
// Works as a weston desktop shell.
- int show_cursor = 1;
+ bool show_cursor = true;
auto config_file = weston_config_get_name_from_env();
auto config = weston_config_parse(config_file);
auto s =
weston_config_get_section(config, "flutter_linux_wayland", NULL, NULL);
char* path = nullptr;
if (s) {
- weston_config_section_get_bool(s, "show-cursor", &show_cursor, 1);
+ weston_config_section_get_bool(s, "show-cursor", &show_cursor, true);
weston_config_section_get_string(
s, "flutter-project-path", &path,
"../../sample-app/sample/build/linux/x64/release/bundle");
--
2.30.2
From ef8fc6cc91a23445fd52fc2f0f456a3be94a92d9 Mon Sep 17 00:00:00 2001
From: Joel Winarske <[email protected]>
Date: Wed, 14 Apr 2021 16:55:23 +0000
Subject: [PATCH 2/3] weston parser fixes for desktop vkey
---
.../flutter-weston-desktop-shell-virtual-keyboard/main.cc | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/examples/flutter-weston-desktop-shell-virtual-keyboard/main.cc b/examples/flutter-weston-desktop-shell-virtual-keyboard/main.cc
index db81ea9..51d04ec 100644
--- a/examples/flutter-weston-desktop-shell-virtual-keyboard/main.cc
+++ b/examples/flutter-weston-desktop-shell-virtual-keyboard/main.cc
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include <config-parser.h>
+#include <libweston/config-parser.h>
#include <flutter/dart_project.h>
#include <flutter/flutter_view_controller.h>
@@ -12,14 +12,14 @@
int main(int argc, char** argv) {
// Works as a weston desktop shell.
- int show_cursor = 1;
+ bool show_cursor = true;
auto config_file = weston_config_get_name_from_env();
auto config = weston_config_parse(config_file);
auto s =
weston_config_get_section(config, "flutter_linux_wayland", NULL, NULL);
char* path = nullptr;
if (s) {
- weston_config_section_get_bool(s, "show-cursor", &show_cursor, 1);
+ weston_config_section_get_bool(s, "show-cursor", &show_cursor, true);
weston_config_section_get_string(
s, "flutter-project-path", &path,
"../../sample-app/sample/build/linux/x64/release/bundle");
--
2.30.2
Without this the LIBWESTON_INCLUDE_DIRS is not getting picked up:
From abc1619e40dc49f4f5feec997636837a0a0d8606 Mon Sep 17 00:00:00 2001
From: Joel Winarske <[email protected]>
Date: Wed, 14 Apr 2021 16:56:29 +0000
Subject: [PATCH 3/3] weston include dir
---
cmake/package.cmake | 1 +
1 file changed, 1 insertion(+)
diff --git a/cmake/package.cmake b/cmake/package.cmake
index 96ad106..ce198b8 100644
--- a/cmake/package.cmake
+++ b/cmake/package.cmake
@@ -32,6 +32,7 @@ else()
string(REPLACE "." ";" WESTON_VERSION_LIST ${WESTON_VERSION})
list(GET WESTON_VERSION_LIST 0 WESTON_VERSION_MAJOR)
pkg_check_modules(LIBWESTON REQUIRED libweston-${WESTON_VERSION_MAJOR})
+ include_directories(${LIBWESTON_INCLUDE_DIRS})
endif()
endif()
--
2.30.2
Support window events such as window resize and window move for Wayland backend.
The README doesn't state that the file pulled from Google's infrastructure is an archive, which contains libflutter_embedder.so
.
Note:
unzip linux-x64-embedder
works well.There is a small typo on Wayland
on this trace output:
The DRM-GBM client works on RPI4, but it will get a segmentation fault on i.mx8m devices.
# ldd ./flutter-drm-gbm-backend
linux-vdso.so.1 (0x0000ffffb9c4e000)
libxkbcommon.so.0 => /usr/lib/libxkbcommon.so.0 (0x0000ffffb9bd1000)
libEGL.so.1 => /usr/lib/libEGL.so.1 (0x0000ffffb9b6c000)
libdrm.so.2 => /usr/lib/libdrm.so.2 (0x0000ffffb9b49000)
libgbm.so.1 => /usr/lib/libgbm.so.1 (0x0000ffffb9b35000)
libinput.so.10 => /usr/lib/libinput.so.10 (0x0000ffffb9ae2000)
libudev.so.1 => /lib/libudev.so.1 (0x0000ffffb9aa2000)
libsystemd.so.0 => /lib/libsystemd.so.0 (0x0000ffffb99db000)
libflutter_engine.so => /usr/lib/libflutter_engine.so (0x0000ffffb8f09000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x0000ffffb8d2a000)
libm.so.6 => /lib/libm.so.6 (0x0000ffffb8c80000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x0000ffffb8c5b000)
libpthread.so.0 => /lib/libpthread.so.0 (0x0000ffffb8c2b000)
libc.so.6 => /lib/libc.so.6 (0x0000ffffb8abe000)
/lib/ld-linux-aarch64.so.1 (0x0000ffffb9c20000)
libGAL.so => /usr/lib/libGAL.so (0x0000ffffb88fb000)
libwayland-server.so.0 => /usr/lib/libwayland-server.so.0 (0x0000ffffb88d6000)
libwayland-client.so.0 => /usr/lib/libwayland-client.so.0 (0x0000ffffb88b7000)
libgbm_viv.so => /usr/lib/libgbm_viv.so (0x0000ffffb88a2000)
libmtdev.so.1 => /usr/lib/libmtdev.so.1 (0x0000ffffb888c000)
libevdev.so.2 => /usr/lib/libevdev.so.2 (0x0000ffffb885e000)
librt.so.1 => /lib/librt.so.1 (0x0000ffffb8846000)
liblzma.so.5 => /usr/lib/liblzma.so.5 (0x0000ffffb8811000)
libcap.so.2 => /lib/libcap.so.2 (0x0000ffffb87fb000)
libdl.so.2 => /lib/libdl.so.2 (0x0000ffffb87e7000)
libffi.so.7 => /usr/lib/libffi.so.7 (0x0000ffffb87cc000)
Thread 1 "flutter-drm-gbm" received signal SIGSEGV, Segmentation fault.
0x0000fffff6fe3eb4 in __GI___pthread_mutex_lock (mutex=0xe9) at pthread_mutex_lock.c:67
67 pthread_mutex_lock.c: No such file or directory.
(gdb) backtrace
#0 0x0000fffff6fe3eb4 in __GI___pthread_mutex_lock (mutex=0xe9) at pthread_mutex_lock.c:67
#1 0x0000fffff6c6c340 in wl_proxy_create_wrapper () from /usr/lib/libwayland-client.so.0
#2 0x0000fffff7f448e0 in ?? () from /usr/lib/libEGL.so.1
#3 0x0000fffff7f3721c in eglInitialize () from /usr/lib/libEGL.so.1
#4 0x0000000000484498 in flutter::EnvironmentEgl::InitializeEgl() const ()
#5 0x00000000004842c0 in flutter::EnvironmentEgl::EnvironmentEgl(gbm_device*) ()
#6 0x00000000004830a4 in std::_MakeUniq<flutter::EnvironmentEgl>::__single_object std::make_unique<flutter::EnvironmentEgl, gbm_device*&>(gbm_device*&) ()
#7 0x00000000004829cc in flutter::NativeWindowDrmGbm::CreateRenderSurface() ()
#8 0x00000000004157cc in flutter::LinuxesWindowDrm<flutter::NativeWindowDrmGbm, flutter::SurfaceGlDrm<flutter::ContextEgl> >::CreateRenderSurface(int, int) ()
#9 0x0000000000427b48 in flutter::FlutterLinuxesView::CreateRenderSurface() ()
#10 0x0000000000410fa4 in FlutterDesktopViewControllerCreate ()
#11 0x000000000040ff50 in flutter::FlutterViewController::FlutterViewController(flutter::FlutterViewController::ViewMode, int, int, bool, flutter::DartProject const&) ()
#12 0x000000000040bd34 in std::_MakeUniq<flutter::FlutterViewController>::__single_object std::make_unique<flutter::FlutterViewController, flutter::FlutterViewController::ViewMode, int&, int&, bool&, flutter::DartProject&>(flutter::FlutterViewController::ViewMode&&, int&, int&, bool&, flutter::DartProject&) ()
#13 0x000000000040b55c in main ()
cc: @Mai-Matsuura
Fix the following review points.
#52 (comment)
#52 (comment)
Trying to build flutter-desktop-shell
but got error. The header file config-parser.h
had been move to libweston/config-parser.h
which is the main issue.
Please have a look.
Can't start the Gallery app using the embedder.
There are no log messages to help narrow down why that is:
$ ./flutter-client ./gallery/build/linux/x64/release/bundle
Observed on my x64 system as well as the PinebookPro (rk3399) and PinePhone (Allwinner A64).
Tried with drm client and debug modes as well - still no feedback from the system as to why it doesn't want to start.
Create an action to check the build-pass when creating PRs.
Pass size as command line argument opposed to hard coding to 640x480. Alternately pass size as build parameter.
This avoids having to patch for Yocto builds.
This issue is a memo for testing on different arm devices. I would like to test on a lot of arm devices.
Jetson Nano (OS: Ubuntu 18.04, JetPack)
Raspberry Pi4 (OS: Ubuntu 20) #9
i.MX 8M Mini EVK (OS: Zeus, imx-5.4.70-2.3.1.xml)
RB5 (OS: Based Ubuntu 18.04)
We need to add unit tests like Flutter Engine.
We need to create flutter plugins for embedded Linux use. We would prepare another repo for it.
Currently, we use wl_shell
for the Wayland backend. However, this protocols deprecated and other Wayland compositors such as Sway don't support wl_shell
(swaywm/sway#1692). Therefore, the embedder doesn't work on Wayland compositors other than weston
.
You would get the following error message.
[ERROR][linuxes_window_wayland.cc(627)] Invalid compositor and shell.
Failed to create view controller.
Currently, there isn't any sleep to wait for the next event in the main loop properly. Therefore, it is high CPU usage.
main.cc
// Main loop.
while (flutter_controller->view()->DispatchEvent()) {
flutter_controller->engine()->ProcessMessages();
}
I tried to run this embedder on Raspberry Pi4 (Ubuntu 20), but drmModeGetResources
returns NULL
. According to this article, the correct device file name is /dev/dri/card1
instead of /dev/dri/card0
. So, we need to add a mechanism to change the device file name properly.
Flutter applications in debug mode don't work on the DRM backend.
The application crashes with the following log:
[FATAL:flutter/fml/memory/weak_ptr.h(122)] Check failed: (checker_.checker).IsCreationThreadCurrent().
Related: #15 (comment)
Keyboard inputs don't work correctly when we use DRM backends. On the other hand, it works properly when we use Wayland backend.
Tested Flutter app: https://github.com/TerminalStudio/lite
After some implementation, we need to refactor source files under the window directory and commonalize the files that exist for each backend as much as possible.
We prepare a new repo for yocto meta files because meta-flutter is under this repo now.
Currently, we need to build Flutter Engine to use this embedder ourselves. We also need to use a specific Flutter SDK to build Flutter apps. These tasks are bothered, so we will create a tool to support such as flutter build embedded-linux
and flutter run -d embedded-linux
, etc.
Currently, FLUTTER_RELEASE
which is the internal compiler switch to disable the command arguments for Dart VM is always enabled. We need to use this command arguments when we do debugging Flutter apps (e.g. --observatory-port=49494
, --disable-service-auth-codes
to fix always same observatory URI)
e.g.
$ cmake -DUSER_PROJECT_PATH=examples/flutter-x11-client -DCMAKE_BUILD_TYPE=Debug ..
$ cmake --build .
$ FLUTTER_ENGINE_SWITCHES=2 FLUTTER_ENGINE_SWITCH_1="observatory-port=12345" FLUTTER_ENGINE_SWITCH_2="disable-service-auth-codes" \
./flutter-x11-clinet sample/build/linux/x64/debug/bundle
Using PinePhone running ManjaroARM with Plasma Mobile, the DRM backend doesn't work.
Device information:
Linux plasma-mobile 5.11.4-1-MANJARO-ARM #1 SMP Sun Mar 7 19:22:26 UTC 2021 aarch64 GNU/Linux
20.3.4
(the device is using the Lima driver)Flutter version:
$ flutter --version
Flutter 2.1.0-11.0.pre.164 • channel unknown • unknown source
Framework • revision ede798e029 (2 days ago) • 2021-03-09 01:34:02 -0500
Engine • revision 2441c476a6
Tools • Dart 2.13.0 (build 2.13.0-116.0.dev)
LLDB trace when running the drm backend:
Process 29798 launched: '/home/kde/flutter-embedded-linux/build/flutter-drm-backend' (aarch64)
[ERROR][native_window_drm.cc(185)] Couldn't get resources
Process 29798 stopped
* thread #1, name = 'flutter-drm-bac', stop reason = signal SIGSEGV: invalid address (fault address: 0x20)
frame #0: 0x0000aaaaaab2e570 flutter-drm-backend`flutter::NativeWindowDrm::FindConnector(this=0x0000aaaaaac75870, resources=0x0000000000000000) at native_window_drm.cc:215:34
212 }
213
214 drmModeConnectorPtr NativeWindowDrm::FindConnector(drmModeResPtr resources) {
-> 215 for (int i = 0; i < resources->count_connectors; i++) {
^
216 auto connector = drmModeGetConnector(drm_device_, resources->connectors[i]);
217 // pick the first connected connector
218 if (connector->connection == DRM_MODE_CONNECTED) {
I don't have a RPi4 to verify if it is the same issue as the one observed with #9
Add EGLStream support for NVIDIA devices. Currently, this embedder doesn't work with DRM backends on NVIDIA devices such as Jetson Nano. Because NVIDIA basically doesn't support GBM. So, we need to add EGLStream support.
At the moment using the standalone wayland client appears to be made to work only within a Weston environment.
My attempts to use the embedder with other Wayland environments such as Plasma Wayland, wlroots based ones like Wayfire result in the following error:
[ERROR][linuxes_window_wayland.cc(627)] Invalid compositor and shell.
Failed to create view controller.
I haven't attempted to run the embedder within Cage or Phosh but I don't expect different results.
From what I can see, this is because the defined shell protocol is specific to Weston's implementation: https://github.com/sony/flutter-embedded-linux/tree/master/src/wayland/protocol
Would using a different shell implementation like xdg allow for more Wayland environments to be supported?
Or is the error given by the embedder a result from different check defined somewhere in linuxes_window_wayland.h?
From the Wayland book, I can see the section explaining on how to generate the C headers and glue code. Would experiments with other shell protocols be useful to the project?
My understanding isn't as complete as I would like it to be so I don't know if I'm just using the Wayland client incorrectly in this case.
Supports X11 backend for debugging purposes only when developing Flutter apps. Supporting x11 is the lowest priority task because we don't plan to use x11 in embedded at least now.
I tried flutter-client (wayland) with no luck.
Environment:
Board: NXP imx8mm (lpddr4)
BSP/Kernel: 5.4.70-2.3.0
Distro: fsl-imx-wayland
Flutter-engine: 1.26-rc17 compiled to aarch64 from the official repository. Config switches:--unoptimized --embedder-for-target --enable-fontconfig --full-dart-sdk --enable-skshaper--runtime-mode debug
At first I got the following error:
root@imx8mmlpddr4evk:~# flutter-client ./bundle
embedder.cc (1933): 'FlutterEnginePostDartObject' returned 'kInvalidArguments'. Engine not running.
embedder.cc (930): 'FlutterEngineInitialize' returned 'kInvalidArguments'. Not running in AOT mode but could not resolve the kernel binary.
[ERROR][flutter_linuxes_engine.cc(221)] Failed to start Flutter engine: error 2
Failed to create view controller.
After some debugging with strace, we can see that the executable tries to load the bundle from /usr/bin:
newfstatat(AT_FDCWD, "/usr/bin/./bundle/data/flutter_assets/kernel_blob.bin", 0xffffc0d18640, 0) = -1 ENOENT (No such file or directory)
So after copying the demo app bundel in /usr/bin, I got the following error:
root@imx8mmlpddr4evk:~# flutter-client ./bundle
embedder.cc (1933): 'FlutterEnginePostDartObject' returned 'kInvalidArguments'. Engine not running.
flutter: Observatory listening on http://127.0.0.1:33095/EMMK_h2PrrA=/
[ 1633.147478] audit: type=1701 audit(1633.140:3): auid=4294967295 uid=0 gid=0 ses=4294967295 pid=457 comm="flutter-client" exe="/usr/bin/flutter-client" sig=11 res=1
Segmentation fault
I also tried the drm-egl version with no luck:
root@imx8mmlpddr4evk:~# export FLUTTER_DRM_DEVICE=/dev/dri/card1
root@imx8mmlpddr4evk:~# flutter-drm-eglstream-backend --help
[ERROR][environment_egl_drm_eglst[ 141.702444] audit: type=1701 audit(387.168:3): auid=4294967295 uid=0 gid=0 ses=4294967295 pid=384 comm="flutter-drm-egl" exe="/usr/bin/flutter-drm-eglstream-backend" sig=11 res=1
ream.cc(15)] Failed to set extension function pointers
[ERROR][context_egl.cc(31)] Failed to choose EGL surface config: eglGetError: EGL_BAD_DISPLAY
[ERROR][context_egl_drm_eglstream.cc(20)] Failed to set extension function pointers
Segmentation fault
My primary target is Wayland.
vsync is missing
I've just finished successfully building for an RPi4 with the DRM Backend. Thanks for all your hard work guys.
I did have a small head scratching hiccup during the process though. I had to perform Step 3 Build for DRM Backend
on the target device (RPi4). With a libflutter_engine.so targeting arm64, this step of the build would fail on my X64 machine.
If this is expected behavior then I think it would be worth adding a note to Step 3 that the following steps must be built on the target platform (Similar to the note about compiling the Dart/Flutter code)
There are the following problems.
We need to modify CMake files and README to add cross-build for arm64 targets on x64 hosts support. #56
Embedders hang when using weston >= 8. It should also reflect in test matrix version of compositor.
Tests should be based on Dunfell (LTS) or later.
We need to add support Platform views support to embed native views like WebView in a Flutter app
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.