mirror of
https://git.busybox.net/buildroot.git
synced 2024-11-26 23:13:27 +08:00
package/flutter-pi: new package
flutter-pi is one of many flutter-embedders. However, flutter-pi is unique because it doesn't require X or Wayland to run. So long as there is support for KMS and DRI flutter-pi should run on any platform that flutter-engine supports. Signed-off-by: Adam Duskett <adam.duskett@amarulasolutions.com> [yann.morin.1998@free.fr: drop unused BR2_PACKAGE_FLUTTER_PI_TEST_PLUGIN] Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
This commit is contained in:
parent
827da2242c
commit
99a50a8c98
@ -34,6 +34,7 @@ F: package/vulkan-tools/
|
||||
N: Adam Duskett <adam.duskett@amarulasolutions.com>
|
||||
F: package/depot-tools/
|
||||
F: package/flutter-engine/
|
||||
F: package/flutter-pi/
|
||||
F: package/flutter-sdk-bin/
|
||||
|
||||
N: Adam Heinrich <adam@adamh.cz>
|
||||
|
@ -344,6 +344,7 @@ comment "Graphic libraries"
|
||||
source "package/fbset/Config.in"
|
||||
source "package/fbterm/Config.in"
|
||||
source "package/fbv/Config.in"
|
||||
source "package/flutter-pi/Config.in"
|
||||
source "package/freerdp/Config.in"
|
||||
source "package/graphicsmagick/Config.in"
|
||||
source "package/imagemagick/Config.in"
|
||||
|
@ -0,0 +1,59 @@
|
||||
From 856f9849763535d62ed01b538ba23905875c93f4 Mon Sep 17 00:00:00 2001
|
||||
From: "Yann E. MORIN" <yann.morin.1998@free.fr>
|
||||
Date: Tue, 26 Sep 2023 20:31:17 +0200
|
||||
Subject: [PATCH] src/egl_gbm_render_surface: properly fallback to surface with
|
||||
no modifier
|
||||
|
||||
In 869fa7fcfbeb, we added a fallback to be able to create an EGL sruface
|
||||
when the driver do not support modifiers, like the llvmpipe software
|
||||
renderer (or like some proprietary drivers, like the MALI ones), as
|
||||
reported in #269 [0].
|
||||
|
||||
However, in c6537673c9b6, there was a big overhaul of renderer
|
||||
infrastructure. That commit lost the with-modifiers code path and only
|
||||
kept the without-modifiers fallback one (i.e. it only kept the call to
|
||||
gbm_surface_create(), not to gbm_surface_create_with_modifiers()).
|
||||
|
||||
Then in b0d09f5032a4, the with-modifier code path was re-instated, but
|
||||
in a way that made it exclusive with the without-modifiers one. That is,
|
||||
the without-modifiers code path was not a fallback to when the other
|
||||
failed.
|
||||
|
||||
Re-instate the fallback mechanism as intiially implemented.
|
||||
|
||||
[0] https://github.com/ardera/flutter-pi/issues/269
|
||||
|
||||
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
|
||||
Upstream: https://github.com/ardera/flutter-pi/pull/367
|
||||
---
|
||||
src/egl_gbm_render_surface.c | 6 ++++--
|
||||
1 file changed, 4 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/src/egl_gbm_render_surface.c b/src/egl_gbm_render_surface.c
|
||||
index ce9e5e7..8a58667 100644
|
||||
--- a/src/egl_gbm_render_surface.c
|
||||
+++ b/src/egl_gbm_render_surface.c
|
||||
@@ -146,6 +146,7 @@ static int egl_gbm_render_surface_init(
|
||||
}
|
||||
#endif
|
||||
|
||||
+ gbm_surface = NULL;
|
||||
if (allowed_modifiers != NULL) {
|
||||
gbm_surface = gbm_surface_create_with_modifiers(
|
||||
gbm_device,
|
||||
@@ -158,9 +159,10 @@ static int egl_gbm_render_surface_init(
|
||||
if (gbm_surface == NULL) {
|
||||
ok = errno;
|
||||
LOG_ERROR("Couldn't create GBM surface for rendering. gbm_surface_create_with_modifiers: %s\n", strerror(ok));
|
||||
- return ok;
|
||||
+ LOG_ERROR("Will retry without modifiers\n");
|
||||
}
|
||||
- } else {
|
||||
+ }
|
||||
+ if (gbm_surface == NULL) {
|
||||
gbm_surface = gbm_surface_create(
|
||||
gbm_device,
|
||||
size.x,
|
||||
--
|
||||
2.25.1
|
||||
|
78
package/flutter-pi/Config.in
Normal file
78
package/flutter-pi/Config.in
Normal file
@ -0,0 +1,78 @@
|
||||
menuconfig BR2_PACKAGE_FLUTTER_PI
|
||||
bool "flutter-pi"
|
||||
depends on BR2_PACKAGE_FLUTTER_ENGINE
|
||||
depends on BR2_PACKAGE_HAS_LIBGBM
|
||||
depends on BR2_PACKAGE_SYSTEMD # Event loop and dbus support
|
||||
depends on BR2_PACKAGE_HAS_UDEV # libinput
|
||||
select BR2_PACKAGE_LIBDRM
|
||||
select BR2_PACKAGE_LIBINPUT
|
||||
select BR2_PACKAGE_LIBXKBCOMMON
|
||||
help
|
||||
A light-weight Flutter Engine Embedder. Flutter-pi also
|
||||
runs without X11, so you don't need to boot into a
|
||||
Desktop & have X11 or Wayland load up; just boot into the
|
||||
command-line.
|
||||
|
||||
Although flutter-pi is only tested on a Rasberry Pi 4
|
||||
2GB, it should work fine on other linux platforms supported
|
||||
by Flutter so long as there is support for KMS and DRI.
|
||||
|
||||
https://github.com/ardera/flutter-pi
|
||||
|
||||
if BR2_PACKAGE_FLUTTER_PI
|
||||
|
||||
comment "plugins"
|
||||
|
||||
config BR2_PACKAGE_FLUTTER_PI_GSTREAMER_AUDIO_PLAYER_PLUGIN
|
||||
bool "gstreamer audio player"
|
||||
depends on BR2_PACKAGE_HAS_LIBGLES
|
||||
select BR2_PACKAGE_GSTREAMER1
|
||||
select BR2_PACKAGE_GST1_PLUGINS_BASE
|
||||
select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_ALSA
|
||||
select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_AUDIOCONVERT
|
||||
select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_AUDIORESAMPLE
|
||||
select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VOLUME
|
||||
help
|
||||
Include the gstreamer based video plugins in the finished
|
||||
binary. Allows for more stable, hardware accelerated
|
||||
video playback in flutter using gstreamer.
|
||||
|
||||
config BR2_PACKAGE_FLUTTER_PI_GSTREAMER_VIDEO_PLAYER_PLUGIN
|
||||
bool "gstreamer video player"
|
||||
depends on BR2_PACKAGE_HAS_LIBGLES
|
||||
select BR2_PACKAGE_GSTREAMER1
|
||||
select BR2_PACKAGE_GST1_PLUGINS_BASE
|
||||
select BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL
|
||||
select BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_GLES2
|
||||
select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VIDEOCONVERTSCALE
|
||||
help
|
||||
Include the gstreamer based video plugins in the finished
|
||||
binary. Allows for more stable, hardware accelerated
|
||||
video playback in flutter using gstreamer.
|
||||
|
||||
comment "gstreamer video player plugin needs an OpenGL ES backend"
|
||||
depends on !BR2_PACKAGE_HAS_LIBGLES
|
||||
|
||||
config BR2_PACKAGE_FLUTTER_PI_RAW_KEYBOARD_PLUGIN
|
||||
bool "raw keyboard"
|
||||
help
|
||||
Include the raw keyboard plugin in the finished binary.
|
||||
Enables raw keycode listening in flutter via the flutter
|
||||
RawKeyboard interface.
|
||||
|
||||
config BR2_PACKAGE_FLUTTER_PI_TEXT_INPUT_PLUGIN
|
||||
bool "text input"
|
||||
help
|
||||
Include the text input plugin in the finished binary.
|
||||
Enables text input (to flutter text fields, for example)
|
||||
via attached keyboards.
|
||||
|
||||
endif
|
||||
|
||||
comment "flutter-pi needs flutter-engine"
|
||||
depends on !BR2_PACKAGE_FLUTTER_ENGINE
|
||||
|
||||
comment "flutter-pi needs GBM, systemd, and udev"
|
||||
depends on !BR2_PACKAGE_HAS_LIBGBM || \
|
||||
!BR2_PACKAGE_SYSTEMD || \
|
||||
!BR2_PACKAGE_HAS_UDEV
|
3
package/flutter-pi/flutter-pi.hash
Normal file
3
package/flutter-pi/flutter-pi.hash
Normal file
@ -0,0 +1,3 @@
|
||||
# Locally calculated
|
||||
sha256 e4af79c8f53c15913f52a83a221f099a2a750d023a0bc4560d0db6f15def79a2 flutter-pi-d62e84350d2869b3ec1dfb1af21bfe234c4b817f-br1.tar.gz
|
||||
sha256 b34df9d3e1b4e5d1ba70b1740ec74b69f1189b44efd0c96b898b074ef8db1c70 LICENSE
|
85
package/flutter-pi/flutter-pi.mk
Normal file
85
package/flutter-pi/flutter-pi.mk
Normal file
@ -0,0 +1,85 @@
|
||||
################################################################################
|
||||
#
|
||||
# flutter-pi
|
||||
#
|
||||
################################################################################
|
||||
|
||||
FLUTTER_PI_VERSION = d62e84350d2869b3ec1dfb1af21bfe234c4b817f
|
||||
FLUTTER_PI_SITE = https://github.com/ardera/flutter-pi.git
|
||||
FLUTTER_PI_SITE_METHOD = git
|
||||
FLUTTER_PI_LICENSE = MIT
|
||||
FLUTTER_PI_LICENSE_FILES = LICENSE
|
||||
FLUTTER_PI_DEPENDENCIES = \
|
||||
flutter-engine \
|
||||
libinput \
|
||||
libxkbcommon \
|
||||
systemd
|
||||
|
||||
FLUTTER_PI_CONF_OPTS = \
|
||||
-DDEBUG_DRM_PLANE_ALLOCATIONS=OFF \
|
||||
-DDUMP_ENGINE_LAYERS=OFF \
|
||||
-DENABLE_ASAN=OFF \
|
||||
-DENABLE_MTRACE=OFF \
|
||||
-DENABLE_SOFTWARE=OFF \
|
||||
-DENABLE_TESTS=OFF \
|
||||
-DENABLE_TSAN=OFF \
|
||||
-DENABLE_UBSAN=OFF \
|
||||
-DENABLE_VULKAN=OFF \
|
||||
-DFILESYSTEM_LAYOUT=meta-flutter \
|
||||
-DLINT_EGL_HEADERS=OFF \
|
||||
-DTRY_BUILD_GSTREAMER_AUDIO_PLAYER_PLUGIN=OFF \
|
||||
-DTRY_BUILD_GSTREAMER_VIDEO_PLAYER_PLUGIN=OFF \
|
||||
-DTRY_ENABLE_OPENGL=OFF \
|
||||
-DTRY_ENABLE_SESSION_SWITCHING=OFF \
|
||||
-DTRY_ENABLE_VULKAN=OFF \
|
||||
-DVULKAN_DEBUG="OFF" \
|
||||
-DUSE_LEGACY_KMS=OFF \
|
||||
-DWARN_MISSING_FIELD_INITIALIZERS=OFF
|
||||
|
||||
ifeq ($(BR2_ENABLE_LTO),y)
|
||||
FLUTTER_PI_CONF_OPTS += -DLTO=ON
|
||||
else
|
||||
FLUTTER_PI_CONF_OPTS += -DLTO=OFF
|
||||
endif
|
||||
|
||||
ifeq ($(BR2_PACKAGE_FLUTTER_PI_GSTREAMER_AUDIO_PLAYER_PLUGIN),y)
|
||||
FLUTTER_PI_DEPENDENCIES += gstreamer1 gst1-plugins-base
|
||||
FLUTTER_PI_CONF_OPTS += -DBUILD_GSTREAMER_AUDIO_PLAYER_PLUGIN=ON
|
||||
else
|
||||
FLUTTER_PI_CONF_OPTS += -DBUILD_GSTREAMER_AUDIO_PLAYER_PLUGIN=OFF
|
||||
endif
|
||||
|
||||
ifeq ($(BR2_PACKAGE_FLUTTER_PI_GSTREAMER_VIDEO_PLAYER_PLUGIN),y)
|
||||
FLUTTER_PI_DEPENDENCIES += gstreamer1 gst1-plugins-base
|
||||
FLUTTER_PI_CONF_OPTS += -DBUILD_GSTREAMER_VIDEO_PLAYER_PLUGIN=ON
|
||||
else
|
||||
FLUTTER_PI_CONF_OPTS += -DBUILD_GSTREAMER_VIDEO_PLAYER_PLUGIN=OFF
|
||||
endif
|
||||
|
||||
ifeq ($(BR2_PACKAGE_FLUTTER_PI_RAW_KEYBOARD_PLUGIN),y)
|
||||
FLUTTER_PI_CONF_OPTS += -DBUILD_RAW_KEYBOARD_PLUGIN=ON
|
||||
else
|
||||
FLUTTER_PI_CONF_OPTS += -DBUILD_RAW_KEYBOARD_PLUGIN=OFF
|
||||
endif
|
||||
|
||||
ifeq ($(BR2_PACKAGE_FLUTTER_PI_TEXT_INPUT_PLUGIN),y)
|
||||
FLUTTER_PI_DEPENDENCIES += libinput libxkbcommon
|
||||
FLUTTER_PI_CONF_OPTS += -DBUILD_TEXT_INPUT_PLUGIN=ON
|
||||
else
|
||||
FLUTTER_PI_CONF_OPTS += -DBUILD_TEXT_INPUT_PLUGIN=OFF
|
||||
endif
|
||||
|
||||
ifeq ($(BR2_PACKAGE_HAS_LIBGLES),y)
|
||||
FLUTTER_PI_CONF_OPTS += -DENABLE_OPENGL=ON
|
||||
else
|
||||
FLUTTER_PI_CONF_OPTS += -DENABLE_OPENGL=OFF
|
||||
endif
|
||||
|
||||
ifeq ($(BR2_PACKAGE_SEATD),y)
|
||||
FLUTTER_PI_DEPENDENCIES += seatd
|
||||
FLUTTER_PI_CONF_OPTS += -DENABLE_SESSION_SWITCHING=ON
|
||||
else
|
||||
FLUTTER_PI_CONF_OPTS += -DENABLE_SESSION_SWITCHING=OFF
|
||||
endif
|
||||
|
||||
$(eval $(cmake-package))
|
Loading…
Reference in New Issue
Block a user