From patchwork Wed Mar 13 04:40:04 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marek Vasut X-Patchwork-Id: 40849 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8486AC54E71 for ; Wed, 13 Mar 2024 04:51:28 +0000 (UTC) Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) by mx.groups.io with SMTP id smtpd.web10.9066.1710305477936086254 for ; Tue, 12 Mar 2024 21:51:18 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="dkim: body hash did not verify" header.i=@denx.de header.s=phobos-20191101 header.b=OcAaniTn; spf=pass (domain: denx.de, ip: 85.214.62.61, mailfrom: marex@denx.de) Received: from tr.lan (ip-86-49-120-218.bb.vodafone.cz [86.49.120.218]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (No client certificate requested) (Authenticated sender: marex@denx.de) by phobos.denx.de (Postfix) with ESMTPSA id EA1E787B7C; Wed, 13 Mar 2024 05:51:15 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=denx.de; s=phobos-20191101; t=1710305476; bh=J4DjuYu0hKqlh/whKz8PBRmCKDOqx3N0ciuawFRFNaw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=OcAaniTnIm2fjyShi2Ur6ff+YSetq+BV6ebSK1xz19z0QjVrQmQja4Y9nLIYqk/Se fufs4oSWKCQvK0gPlNivfmpTji9UYLDYkrQopuRI8HQtB7GVClNxEhy8ZcVZivSSO+ TLQtKMaxW9imSIa5OhJiv6yUjYx8euGtZBhz2VpfNU7oxriElpO422pq8mVWhuE+J1 FMvZyUSV+lNwrbSd+DX//bVLoPfDlPc3CjxK6J9xicyr/X/lCiRvwWuDOCw2eNplF/ UDrAScIelKnIboU3XJWnFv18P+ww6WvKZX7d+Wm4cjkt8e/y4ZmwUzd3Ey8dk08BFx 82mzOwMf7mhUA== From: Marek Vasut To: openembedded-devel@lists.openembedded.org Cc: Marek Vasut , Fabio Estevam , Khem Raj , Martin Jansa Subject: [PATCH 1/8] lvgl: Drop dialog-lvgl Date: Wed, 13 Mar 2024 05:40:04 +0100 Message-ID: <20240313045038.90500-2-marex@denx.de> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240313045038.90500-1-marex@denx.de> References: <20240313045038.90500-1-marex@denx.de> MIME-Version: 1.0 X-Virus-Scanned: clamav-milter 0.103.8 at phobos.denx.de X-Virus-Status: Clean List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Wed, 13 Mar 2024 04:51:28 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-devel/message/109281 This recipe is barely compatible with LVGL 8.3, the repository seems to be unreachable now, drop the recipe. Signed-off-by: Marek Vasut --- Cc: Fabio Estevam Cc: Khem Raj Cc: Martin Jansa --- ...-wayland-Switch-to-custom-timer-tick.patch | 72 ------------------- .../0002-wayland-Fix-callback-data-type.patch | 30 -------- .../recipes-graphics/lvgl/dialog-lvgl_git.bb | 31 -------- 3 files changed, 133 deletions(-) delete mode 100644 meta-oe/recipes-graphics/lvgl/dialog-lvgl/0001-wayland-Switch-to-custom-timer-tick.patch delete mode 100644 meta-oe/recipes-graphics/lvgl/dialog-lvgl/0002-wayland-Fix-callback-data-type.patch delete mode 100644 meta-oe/recipes-graphics/lvgl/dialog-lvgl_git.bb diff --git a/meta-oe/recipes-graphics/lvgl/dialog-lvgl/0001-wayland-Switch-to-custom-timer-tick.patch b/meta-oe/recipes-graphics/lvgl/dialog-lvgl/0001-wayland-Switch-to-custom-timer-tick.patch deleted file mode 100644 index 5149002ff..000000000 --- a/meta-oe/recipes-graphics/lvgl/dialog-lvgl/0001-wayland-Switch-to-custom-timer-tick.patch +++ /dev/null @@ -1,72 +0,0 @@ -From 1d92e1854c19c06c553243d29170bb4d1a9e3863 Mon Sep 17 00:00:00 2001 -From: Marek Vasut -Date: Tue, 9 May 2023 02:57:30 +0200 -Subject: [PATCH 1/2] wayland: Switch to custom timer tick - -The OE LVGL is configured to obtain timer tick from system timer -instead of using ad-hoc mechanisms to emulate timer tick using -threads or such. Use system timer to provide the tick. - -The tick handling implementation comes from: -https://github.com/lvgl/lv_port_linux_frame_buffer.git -as of commit adf2c4490e17a1b9ec1902cc412a24b3b8235c8e - -Upstream-Status: Inappropriate [Upstream repo is archived] -Signed-off-by: Marek Vasut ---- - src/drivers/wayland.c | 24 ++++++++++++++++-------- - 1 file changed, 16 insertions(+), 8 deletions(-) - -diff --git a/src/drivers/wayland.c b/src/drivers/wayland.c -index 633dc18..bcebf4d 100644 ---- a/src/drivers/wayland.c -+++ b/src/drivers/wayland.c -@@ -6,6 +6,7 @@ - #if defined(USE_WAYLAND) && USE_WAYLAND - - #include -+#include - #include - - #include -@@ -18,13 +19,22 @@ - #define WAYLAND_VER_RES 320 - #endif - --static void * tick_thread(void * data) -+uint32_t custom_tick_get(void) - { -- (void) data; -- while(true) { -- usleep(5 * 1000); -- lv_tick_inc(5); -- } -+ static uint64_t start_ms = 0; -+ if(start_ms == 0) { -+ struct timeval tv_start; -+ gettimeofday(&tv_start, NULL); -+ start_ms = (tv_start.tv_sec * 1000000 + tv_start.tv_usec) / 1000; -+ } -+ -+ struct timeval tv_now; -+ gettimeofday(&tv_now, NULL); -+ uint64_t now_ms; -+ now_ms = (tv_now.tv_sec * 1000000 + tv_now.tv_usec) / 1000; -+ -+ uint32_t time_ms = now_ms - start_ms; -+ return time_ms; - } - - -@@ -47,8 +57,6 @@ void hal_init(void) - - lv_group_t * g = lv_group_create(); - lv_group_set_default(g); -- static pthread_t hal_thread; -- pthread_create(&hal_thread, NULL, tick_thread, NULL); - } - - #endif --- -2.39.2 - diff --git a/meta-oe/recipes-graphics/lvgl/dialog-lvgl/0002-wayland-Fix-callback-data-type.patch b/meta-oe/recipes-graphics/lvgl/dialog-lvgl/0002-wayland-Fix-callback-data-type.patch deleted file mode 100644 index 8919a1a2a..000000000 --- a/meta-oe/recipes-graphics/lvgl/dialog-lvgl/0002-wayland-Fix-callback-data-type.patch +++ /dev/null @@ -1,30 +0,0 @@ -From b7af695d79820adf53e7d612120bda12ed2886e2 Mon Sep 17 00:00:00 2001 -From: Marek Vasut -Date: Tue, 9 May 2023 02:57:38 +0200 -Subject: [PATCH 2/2] wayland: Fix callback data type - -The LVGL 8.3.y changed the callback data type, update it accordingly. - -Upstream-Status: Inappropriate [Upstream repo is archived] -Signed-off-by: Marek Vasut ---- - src/drivers/wayland.c | 3 +-- - 1 file changed, 1 insertion(+), 2 deletions(-) - -diff --git a/src/drivers/wayland.c b/src/drivers/wayland.c -index bcebf4d..cfefa88 100644 ---- a/src/drivers/wayland.c -+++ b/src/drivers/wayland.c -@@ -37,8 +37,7 @@ uint32_t custom_tick_get(void) - return time_ms; - } - -- --static lv_wayland_display_close_f_t close_cb() -+static bool close_cb(lv_disp_t * disp) - { - } - --- -2.39.2 - diff --git a/meta-oe/recipes-graphics/lvgl/dialog-lvgl_git.bb b/meta-oe/recipes-graphics/lvgl/dialog-lvgl_git.bb deleted file mode 100644 index 139aa479b..000000000 --- a/meta-oe/recipes-graphics/lvgl/dialog-lvgl_git.bb +++ /dev/null @@ -1,31 +0,0 @@ -# SPDX-FileCopyrightText: Huawei Inc. -# SPDX-License-Identifier: MIT - -SRC_URI = "git://git.ostc-eu.org/rzr/dialog-lvgl;destsuffix=${S};protocol=https;nobranch=1 \ - file://0001-wayland-Switch-to-custom-timer-tick.patch \ - file://0002-wayland-Fix-callback-data-type.patch \ - " -SRCREV = "cdf8d38acca87e871c3a488fd07f1e4779590f8e" - -LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://LICENSE;md5=8ce0a84e5276f01364119c873b712c4f" - -DEPENDS += "lvgl" -DEPENDS += "lv-drivers" - -SUMMARY = "Basic UI utility to be used in scripts" -DESCRIPTION = "Inspired by ncurses' dialog, implemented using LVGL" -HOMEPAGE = "https://git.ostc-eu.org/rzr/dialog-lvgl/-/wikis/" - -REQUIRED_DISTRO_FEATURES = "wayland" - -inherit pkgconfig -inherit features_check - -EXTRA_OEMAKE += "sysroot=${RECIPE_SYSROOT}" -EXTRA_OEMAKE += "DESTDIR=${D}" -EXTRA_OEMAKE += "lvgl_driver=wayland" - -do_install() { - oe_runmake install -} From patchwork Wed Mar 13 04:40:05 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marek Vasut X-Patchwork-Id: 40843 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3C551C54791 for ; Wed, 13 Mar 2024 04:51:28 +0000 (UTC) Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) by mx.groups.io with SMTP id smtpd.web11.9106.1710305478037159234 for ; Tue, 12 Mar 2024 21:51:18 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="dkim: body hash did not verify" header.i=@denx.de header.s=phobos-20191101 header.b=d0XMZlKW; spf=pass (domain: denx.de, ip: 85.214.62.61, mailfrom: marex@denx.de) Received: from tr.lan (ip-86-49-120-218.bb.vodafone.cz [86.49.120.218]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (No client certificate requested) (Authenticated sender: marex@denx.de) by phobos.denx.de (Postfix) with ESMTPSA id 5048E87DAF; Wed, 13 Mar 2024 05:51:16 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=denx.de; s=phobos-20191101; t=1710305476; bh=TWN92u5Qt6Uw+9lr4I73Auh1HTrcVa+lGE17lbl3lBk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=d0XMZlKWFgxLr/SISY/nl4Ie/bHJAQrRoKMAKnkyEIs6QeNUSPHI7J44Z+hX8FGdR QJ1Cze3BSh/MrUs0Rat3Zr6HfaEa49+fSx5u+LYLpHgnAMDAj99C1WkSwr8n8CQ2Pe gcfhzXMVZfUvDDjVddAZq2SXYIaOxInZCG499htvC7a5Yk4DoXfEJdF5sSD8qqKiBm HoOZDvCnTcDLeQE+nFd0AmD3FW9Y02fLWkspH41hGeYzW/fZu9kCD0lC/vtnEllw7P NC2Sr8p7bmPvnguhIz4jZpcvQbMYR6iQEKAU+zOGHDTZYGd6iiPZ2KRz59De16b/iZ B7uF6YzAG0ULQ== From: Marek Vasut To: openembedded-devel@lists.openembedded.org Cc: Marek Vasut , Fabio Estevam , Khem Raj , Martin Jansa Subject: [PATCH 2/8] lvgl: Upgrade to LVGL 9 series Date: Wed, 13 Mar 2024 05:40:05 +0100 Message-ID: <20240313045038.90500-3-marex@denx.de> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240313045038.90500-1-marex@denx.de> References: <20240313045038.90500-1-marex@denx.de> MIME-Version: 1.0 X-Virus-Scanned: clamav-milter 0.103.8 at phobos.denx.de X-Virus-Status: Clean List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Wed, 13 Mar 2024 04:51:28 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-devel/message/109282 Upgrade LVGL and matching recipes to LVGL 9 series. Use latest git HEAD instead of 9.0.0 release to pull in fixes which landed after the 9.0.0 release and which are of interest to Linux deployments. There are significant breaking changes, which are listed below. The lv-drivers and lv-lib-png PNG library seem to be part of the main LVGL repository, drop the now unnecessary recipes. Configuration is now done in lv_conf.h only, there is no more lv_drv_conf.h, rework lv-drivers.inc accordingly. USE_SDL_GPU support has been renamed to LV_USE_DRAW_SDL and newly depends on libsdl2-image, SDL_DOUBLE_BUFFERED to LV_SDL_BUF_COUNT=2 . All configuration options from lvgl_%.bb, LV_COLOR_DEPTH, LV_MEM_CUSTOM as well as LV_TICK_CUSTOM, LV_TICK_CUSTOM_INCLUDE, LV_TICK_CUSTOM_SYS_TIME_EX are all moved into lv-drivers.inc , so the configuration is done in one place, using the same set of configuration options. Wayland support is gone, drop it from lv-drivers.inc. Evdev input device selection via EVDEV_NAME is also gone, the selection is now done using API call lv_evdev_create(). DRM card selection via DRM_CARD is also gone, the selection is now done using API call lv_linux_drm_set_file(). Move LVGL_CONFIG_DRM_CARD into lvgl-demo-fb, which calls lv_linux_drm_set_file(). The lvgl-demo-fb recipe is adjusted to be compatible with LVGL 9 again, this makes some of the sed adjustments really awful, so this part will be replaced by upstream patches in a separate commit to avoid growing this commit even more. The lvgl-demo-fb recipe is also no longer using git submodules, but instead fetches both its source and LVGL using git fetcher separately. This is needed to build the SDL backend successfully, which requires newer LVGL than what the repository points to via its submodule. Signed-off-by: Marek Vasut --- Cc: Fabio Estevam Cc: Khem Raj Cc: Martin Jansa --- meta-oe/recipes-graphics/lvgl/lv-drivers.inc | 40 +++++++-------- .../recipes-graphics/lvgl/lv-drivers_8.3.0.bb | 28 ----------- .../recipes-graphics/lvgl/lv-lib-png_8.0.2.bb | 31 ------------ .../lvgl/lvgl-demo-fb_8.3.0.bb | 46 ----------------- .../lvgl/lvgl-demo-fb_9.0.0.bb | 49 +++++++++++++++++++ meta-oe/recipes-graphics/lvgl/lvgl_8.3.11.bb | 44 ----------------- meta-oe/recipes-graphics/lvgl/lvgl_9.0.0.bb | 28 +++++++++++ 7 files changed, 95 insertions(+), 171 deletions(-) delete mode 100644 meta-oe/recipes-graphics/lvgl/lv-drivers_8.3.0.bb delete mode 100644 meta-oe/recipes-graphics/lvgl/lv-lib-png_8.0.2.bb delete mode 100644 meta-oe/recipes-graphics/lvgl/lvgl-demo-fb_8.3.0.bb create mode 100644 meta-oe/recipes-graphics/lvgl/lvgl-demo-fb_9.0.0.bb delete mode 100644 meta-oe/recipes-graphics/lvgl/lvgl_8.3.11.bb create mode 100644 meta-oe/recipes-graphics/lvgl/lvgl_9.0.0.bb diff --git a/meta-oe/recipes-graphics/lvgl/lv-drivers.inc b/meta-oe/recipes-graphics/lvgl/lv-drivers.inc index 6cfb7fa07..97063adbc 100644 --- a/meta-oe/recipes-graphics/lvgl/lv-drivers.inc +++ b/meta-oe/recipes-graphics/lvgl/lv-drivers.inc @@ -1,21 +1,17 @@ PACKAGECONFIG[drm] = ",,libdrm" PACKAGECONFIG[fbdev] = ",," -PACKAGECONFIG[sdl] = ",,virtual/libsdl2" -PACKAGECONFIG[wayland] = ",,libxkbcommon wayland" +PACKAGECONFIG[sdl] = ",,virtual/libsdl2 libsdl2-image" LVGL_CONFIG_USE_DRM = "${@bb.utils.contains('PACKAGECONFIG', 'drm', '1', '0', d)}" -LVGL_CONFIG_DRM_CARD ?= "/dev/dri/card0" LVGL_CONFIG_USE_EVDEV = "${@bb.utils.contains_any('PACKAGECONFIG', 'drm fbdev', '1', '0', d)}" -LVGL_CONFIG_EVDEV_INPUT ?= "/dev/input/touchscreen" LVGL_CONFIG_USE_FBDEV = "${@bb.utils.contains('PACKAGECONFIG', 'fbdev', '1', '0', d)}" LVGL_CONFIG_USE_SDL = "${@bb.utils.contains('PACKAGECONFIG', 'sdl', '1', '0', d)}" -LVGL_CONFIG_USE_WAYLAND = "${@bb.utils.contains('PACKAGECONFIG', 'wayland', '1', '0', d)}" -LVGL_CONFIG_WAYLAND_HOR_RES ?= "480" -LVGL_CONFIG_WAYLAND_VER_RES ?= "320" +LVGL_CONFIG_LV_MEM_CUSTOM ?= "0" +LVGL_CONFIG_LV_COLOR_DEPTH ?= "32" ALLOW_EMPTY:${PN} = "1" @@ -23,26 +19,26 @@ EXTRA_OECMAKE += "-Dinstall:BOOL=ON -DLIB_INSTALL_DIR=${baselib}" do_configure:append() { # If there is a configuration template, start from that - [ -r "${S}/lv_drv_conf_template.h" ] && cp -Lv "${S}/lv_drv_conf_template.h" "${S}/lv_drv_conf.h" + [ -r "${S}/lv_conf_template.h" ] && cp -Lv "${S}/lv_conf_template.h" "${S}/lv_conf.h" - # Configure the software using sed sed -e "s|#if 0 .*Set it to \"1\" to enable the content.*|#if 1 // Enabled by ${PN}|g" \ \ - -e "s|\(^# define USE_DRM \).*|# define USE_DRM ${LVGL_CONFIG_USE_DRM}|g" \ - -e "s|\(^# define DRM_CARD \).*|# define DRM_CARD \"${LVGL_CONFIG_DRM_CARD}\"|g" \ - \ - -e "s|\(^# define USE_EVDEV \).*|# define USE_EVDEV ${LVGL_CONFIG_USE_EVDEV}|g" \ - -e "s|\(^# define EVDEV_NAME \).*|# define EVDEV_NAME \"${LVGL_CONFIG_EVDEV_INPUT}\"|g" \ + -e "s|\(^#define LV_USE_LINUX_DRM \).*|#define LV_USE_LINUX_DRM ${LVGL_CONFIG_USE_DRM}|g" \ \ - -e "s|\(^# define USE_FBDEV \).*|# define USE_FBDEV ${LVGL_CONFIG_USE_FBDEV}|g" \ + -e "s|\(^#define LV_USE_LINUX_FBDEV \).*|#define LV_USE_LINUX_FBDEV ${LVGL_CONFIG_USE_FBDEV}|g" \ \ - -e "s|\(^# define USE_SDL \).*|# define USE_SDL ${LVGL_CONFIG_USE_SDL}|g" \ - -e "s|\(^# define USE_SDL_GPU \).*|# define USE_SDL_GPU 1|g" \ - -e "s|\(^# define SDL_DOUBLE_BUFFERED \).*|# define SDL_DOUBLE_BUFFERED 1|g" \ + -e "s|\(^#define LV_USE_SDL \).*|#define LV_USE_SDL ${LVGL_CONFIG_USE_SDL}|g" \ + -e "s|\(^#define LV_USE_DRAW_SDL \).*|#define LV_USE_DRAW_SDL ${LVGL_CONFIG_USE_SDL}|g" \ + -e "s|\(^ #define LV_SDL_BUF_COUNT \).*| #define LV_SDL_BUF_COUNT 2|g" \ \ - -e "s|\(^# define USE_WAYLAND \).*|# define USE_WAYLAND ${LVGL_CONFIG_USE_WAYLAND}|g" \ - -e "s|\(^ *# *define *WAYLAND_HOR_RES *\).*|\1${LVGL_CONFIG_WAYLAND_HOR_RES}|g" \ - -e "s|\(^ *# *define *WAYLAND_VER_RES *\).*|\1${LVGL_CONFIG_WAYLAND_VER_RES}|g" \ + -e "s|\(^#define LV_COLOR_DEPTH \).*|#define LV_COLOR_DEPTH ${LVGL_CONFIG_LV_COLOR_DEPTH}|g" \ + -e "s|\(#define LV_MEM_CUSTOM .*\)0|\1${LVGL_CONFIG_LV_MEM_CUSTOM}|g" \ \ - -i "${S}/lv_drv_conf.h" + -e "s|\(#define LV_TICK_CUSTOM \).*|\1 1|g" \ + -e "s|\(#define LV_TICK_CUSTOM_INCLUDE \).*|\1 |g" \ + -e "s|\(#define LV_TICK_CUSTOM_SYS_TIME_EXPR \).*|extern uint32_t custom_tick_get(void);\n\1 (custom_tick_get())|g" \ + \ + -e "s|\(^#define LV_USE_EVDEV \).*|#define LV_USE_EVDEV ${LVGL_CONFIG_USE_EVDEV}|g" \ + \ + -i "${S}/lv_conf.h" } diff --git a/meta-oe/recipes-graphics/lvgl/lv-drivers_8.3.0.bb b/meta-oe/recipes-graphics/lvgl/lv-drivers_8.3.0.bb deleted file mode 100644 index e2c5a342a..000000000 --- a/meta-oe/recipes-graphics/lvgl/lv-drivers_8.3.0.bb +++ /dev/null @@ -1,28 +0,0 @@ -# SPDX-FileCopyrightText: Huawei Inc. -# -# SPDX-License-Identifier: MIT - -HOMEPAGE = "https://docs.lvgl.io/latest/en/html/porting/index.html" -SUMMARY = "LVGL's Display and Touch pad drivers" -DESCRIPTION = "Collection of drivers: SDL, framebuffer, wayland and more..." -LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://LICENSE;md5=d6fc0df890c5270ef045981b516bb8f2" - -SRC_URI = "git://github.com/lvgl/lv_drivers;protocol=https;branch=release/v8.3" -SRCREV = "71830257710f430b6d8d1c324f89f2eab52488f1" - -DEPENDS = "lvgl" - -PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'wayland fbdev', d)}" -require lv-drivers.inc - -inherit cmake - -S = "${WORKDIR}/git" - -TARGET_CFLAGS += "-DLV_CONF_INCLUDE_SIMPLE=1" -TARGET_CFLAGS += "-I${STAGING_INCDIR}/lvgl" - -FILES:${PN}-dev += "\ - ${includedir}/lvgl/lv_drivers/ \ - " diff --git a/meta-oe/recipes-graphics/lvgl/lv-lib-png_8.0.2.bb b/meta-oe/recipes-graphics/lvgl/lv-lib-png_8.0.2.bb deleted file mode 100644 index 0049bbe23..000000000 --- a/meta-oe/recipes-graphics/lvgl/lv-lib-png_8.0.2.bb +++ /dev/null @@ -1,31 +0,0 @@ -# SPDX-FileCopyrightText: Huawei Inc. -# -# SPDX-License-Identifier: MIT - -HOMEPAGE = "https://docs.lvgl.io" -SUMMARY = "PNG decoder for LVGL" -DESCRIPTION = "Allow the use of PNG images in LVGL. This implementation uses lodepng" -LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://LICENSE;md5=d6fc0df890c5270ef045981b516bb8f2" - -SRC_URI = "git://github.com/lvgl/lv_lib_png;;protocol=https;branch=master" -SRCREV = "bf1531afe07c9f861107559e29ab8a2d83e4715a" - -S = "${WORKDIR}/git" - -# because of lvgl dependency -REQUIRED_DISTRO_FEATURES = "wayland" - -DEPENDS += "lvgl" - -EXTRA_OECMAKE += "-DLIB_INSTALL_DIR=${baselib}" - -inherit cmake -inherit features_check - -TARGET_CFLAGS += "-DLV_CONF_INCLUDE_SIMPLE=1" -TARGET_CFLAGS += "-I${STAGING_INCDIR}/lvgl" - -FILES:${PN}-dev = "\ - ${includedir}/lvgl/lv_lib_png/ \ - " diff --git a/meta-oe/recipes-graphics/lvgl/lvgl-demo-fb_8.3.0.bb b/meta-oe/recipes-graphics/lvgl/lvgl-demo-fb_8.3.0.bb deleted file mode 100644 index 32f833a02..000000000 --- a/meta-oe/recipes-graphics/lvgl/lvgl-demo-fb_8.3.0.bb +++ /dev/null @@ -1,46 +0,0 @@ -SUMMARY = "LVGL Demo Application for Framebuffer" -HOMEPAGE = "https://github.com/lvgl/lv_port_linux_frame_buffer" -LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://LICENSE;md5=802d3d83ae80ef5f343050bf96cce3a4 \ - file://lv_drivers/LICENSE;md5=d6fc0df890c5270ef045981b516bb8f2 \ - file://lvgl/LICENCE.txt;md5=bf1198c89ae87f043108cea62460b03a" - -SRC_URI = "gitsm://github.com/lvgl/lv_port_linux_frame_buffer.git;branch=master;protocol=https" -SRCREV = "adf2c4490e17a1b9ec1902cc412a24b3b8235c8e" - -EXTRA_OEMAKE = "DESTDIR=${D}" - -PACKAGECONFIG ??= "drm" -require lv-drivers.inc - -inherit cmake - -S = "${WORKDIR}/git" - -TARGET_CFLAGS += "-I${STAGING_INCDIR}/libdrm" - -do_configure:prepend() { - if [ "${LVGL_CONFIG_USE_DRM}" -eq 1 ] ; then - # Add libdrm build dependency - sed -i '/^target_link_libraries/ s@lvgl::drivers@& drm@' "${S}/CMakeLists.txt" - # Switch from fbdev to drm usage - sed -i 's@fbdev@drm@g' "${S}/main.c" - # Pull resolution from DRM instead of hardcoding it - sed -i '/disp_drv.hor_res/ d' "${S}/main.c" - sed -i '/disp_drv.ver_res/ s@disp_drv.ver_res.*@drm_get_sizes(\&disp_drv.hor_res, \&disp_drv.ver_res, NULL);@' "${S}/main.c" - fi - - if [ "${LVGL_CONFIG_USE_SDL}" -eq 1 ] ; then - # Add libsdl build dependency - sed -i '/^target_link_libraries/ s@lvgl::drivers@& SDL2@' "${S}/CMakeLists.txt" - # Switch from fbdev to sdl usage - sed -i 's@fbdev_flush@sdl_display_flush@g' "${S}/main.c" - sed -i 's@lv_drivers/display/fbdev.h@lv_drivers/sdl/sdl.h@g' "${S}/main.c" - sed -i 's@fbdev@sdl@g' "${S}/main.c" - fi -} - -do_install:append() { - install -d ${D}${bindir} - install -m 0755 ${B}/lvgl_fb ${D}${bindir}/ -} diff --git a/meta-oe/recipes-graphics/lvgl/lvgl-demo-fb_9.0.0.bb b/meta-oe/recipes-graphics/lvgl/lvgl-demo-fb_9.0.0.bb new file mode 100644 index 000000000..fc675a518 --- /dev/null +++ b/meta-oe/recipes-graphics/lvgl/lvgl-demo-fb_9.0.0.bb @@ -0,0 +1,49 @@ +SUMMARY = "LVGL Demo Application for Framebuffer" +HOMEPAGE = "https://github.com/lvgl/lv_port_linux_frame_buffer" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSE;md5=802d3d83ae80ef5f343050bf96cce3a4 \ + file://lvgl/LICENCE.txt;md5=bf1198c89ae87f043108cea62460b03a" + +SRC_URI = "\ + git://github.com/lvgl/lv_port_linux_frame_buffer.git;protocol=https;branch=master;name=demo \ + git://github.com/lvgl/lvgl;protocol=https;branch=master;name=lvgl;subdir=git/lvgl \ + " +SRCREV_demo = "dccc6a1ca48372aa993dbea7a8e17dec6f42df6a" +SRCREV_lvgl = "e29d35b43c509b6d7189f5dac87139441669ae66" +SRCREV_FORMAT = "demo_lvgl" +PV .= "+git${SRCPV}" + +EXTRA_OEMAKE = "DESTDIR=${D}" + +PACKAGECONFIG ??= "drm" +LVGL_CONFIG_DRM_CARD ?= "/dev/dri/card0" +require lv-drivers.inc + +inherit cmake + +S = "${WORKDIR}/git" + +TARGET_CFLAGS += "-I${STAGING_INCDIR}/libdrm" + +do_configure:prepend() { + if [ "${LVGL_CONFIG_USE_DRM}" -eq 1 ] ; then + # Add libdrm build dependency + sed -i '/^target_link_libraries/ s@pthread@& drm@' "${S}/CMakeLists.txt" + # Switch from fbdev to drm usage + sed -i "s@lv_linux_fbdev_set_file.*@lv_linux_drm_set_file(disp, \"${LVGL_CONFIG_DRM_CARD}\", -1);@g" "${S}/main.c" + sed -i 's@fbdev@drm@g' "${S}/main.c" + fi + + if [ "${LVGL_CONFIG_USE_SDL}" -eq 1 ] ; then + # Add libsdl build dependency + sed -i '/^target_link_libraries/ s@pthread@& SDL2 SDL2_image@' "${S}/CMakeLists.txt" + # Switch from fbdev to sdl usage + sed -i 's@lv_linux_fbdev_create()@lv_sdl_window_create(atoi(getenv("LV_VIDEO_WIDTH") ? : "800"), atoi(getenv("LV_VIDEO_HEIGHT") ? : "480"))@g' "${S}/main.c" + sed -i '/lv_linux_fbdev_set_file/ d' "${S}/main.c" + fi +} + +do_install:append() { + install -d ${D}${bindir} + install -m 0755 ${S}/bin/main ${D}${bindir}/lvgl +} diff --git a/meta-oe/recipes-graphics/lvgl/lvgl_8.3.11.bb b/meta-oe/recipes-graphics/lvgl/lvgl_8.3.11.bb deleted file mode 100644 index 252368061..000000000 --- a/meta-oe/recipes-graphics/lvgl/lvgl_8.3.11.bb +++ /dev/null @@ -1,44 +0,0 @@ -# SPDX-FileCopyrightText: Huawei Inc. -# -# SPDX-License-Identifier: MIT - -HOMEPAGE = "https://lvgl.io/" -DESCRIPTION = "LVGL is an OSS graphics library to create embedded GUI" -SUMMARY = "Light and Versatile Graphics Library" -LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://LICENCE.txt;md5=bf1198c89ae87f043108cea62460b03a" - -SRC_URI = "git://github.com/lvgl/lvgl;protocol=https;branch=release/v8.3" -SRCREV = "74d0a816a440eea53e030c4f1af842a94f7ce3d3" - -inherit cmake - -EXTRA_OECMAKE = "-DLIB_INSTALL_DIR=${baselib}" -S = "${WORKDIR}/git" - -ALLOW_EMPTY:${PN} = "1" - -LVGL_CONFIG_LV_MEM_CUSTOM ?= "0" -LVGL_CONFIG_LV_COLOR_DEPTH ?= "32" - -# Upstream does not support a default configuration -# but propose a default "disabled" template, which is used as reference -# More configuration can be done using external configuration variables -do_configure:prepend() { - [ -r "${S}/lv_conf.h" ] \ - || sed -e 's|#if 0 .*Set it to "1" to enable .*|#if 1 // Enabled|g' \ - -e "s|\(#define LV_COLOR_DEPTH \).*|\1 ${LVGL_CONFIG_LV_COLOR_DEPTH}|g" \ - \ - -e "s|\(#define LV_MEM_CUSTOM .*\)0|\1${LVGL_CONFIG_LV_MEM_CUSTOM}|g" \ - \ - -e "s|\(#define LV_TICK_CUSTOM \).*|\1 1|g" \ - -e "s|\(#define LV_TICK_CUSTOM_INCLUDE \).*|\1 |g" \ - -e "s|\(#define LV_TICK_CUSTOM_SYS_TIME_EXPR \).*|extern uint32_t custom_tick_get(void);\n\1 (custom_tick_get())|g" \ - \ - < "${S}/lv_conf_template.h" > "${S}/lv_conf.h" -} - -FILES:${PN}-dev += "\ - ${includedir}/${PN}/ \ - ${includedir}/${PN}/lvgl/ \ - " diff --git a/meta-oe/recipes-graphics/lvgl/lvgl_9.0.0.bb b/meta-oe/recipes-graphics/lvgl/lvgl_9.0.0.bb new file mode 100644 index 000000000..d8ed4ec81 --- /dev/null +++ b/meta-oe/recipes-graphics/lvgl/lvgl_9.0.0.bb @@ -0,0 +1,28 @@ +# SPDX-FileCopyrightText: Huawei Inc. +# +# SPDX-License-Identifier: MIT + +HOMEPAGE = "https://lvgl.io/" +DESCRIPTION = "LVGL is an OSS graphics library to create embedded GUI" +SUMMARY = "Light and Versatile Graphics Library" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENCE.txt;md5=bf1198c89ae87f043108cea62460b03a" + +SRC_URI = "git://github.com/lvgl/lvgl;protocol=https;branch=master" +SRCREV = "e29d35b43c509b6d7189f5dac87139441669ae66" +PV .= "+git${SRCPV}" + +inherit cmake + +EXTRA_OECMAKE = "-DLIB_INSTALL_DIR=${baselib}" +S = "${WORKDIR}/git" + +ALLOW_EMPTY:${PN} = "1" + +PACKAGECONFIG ??= "drm" +require lv-drivers.inc + +FILES:${PN}-dev += "\ + ${includedir}/${PN}/ \ + ${includedir}/${PN}/lvgl/ \ + " From patchwork Wed Mar 13 04:40:06 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marek Vasut X-Patchwork-Id: 40845 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3D2D2C54E68 for ; Wed, 13 Mar 2024 04:51:28 +0000 (UTC) Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) by mx.groups.io with SMTP id smtpd.web11.9107.1710305478432790721 for ; Tue, 12 Mar 2024 21:51:18 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="dkim: body hash did not verify" header.i=@denx.de header.s=phobos-20191101 header.b=oC2KE+ye; spf=pass (domain: denx.de, ip: 85.214.62.61, mailfrom: marex@denx.de) Received: from tr.lan (ip-86-49-120-218.bb.vodafone.cz [86.49.120.218]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (No client certificate requested) (Authenticated sender: marex@denx.de) by phobos.denx.de (Postfix) with ESMTPSA id ADD0687DCA; Wed, 13 Mar 2024 05:51:16 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=denx.de; s=phobos-20191101; t=1710305476; bh=mNF+GE44hR5IIpJS8oD1Oq1ifhyu8cxZFk9+cdjKhAQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=oC2KE+yew1q3ccuP3jwDyI/DZb9Zkzw5jHwnxsh6k2IN2Mp+DVloA5c9UWrJLEXdE FAZf+OCx9aJhHT4vICaP65GipZv3No3piLf68s27VgDOqooyAssw8YVQv9xpgRq5Qr GYScSBq7EocVzGRgH3z7lll/YWkWPOqbw2D7VvslP6YdcBxVqDJZwZcRcaCvXgXaat 0xrYI2cheAwsVliqzdpcFage+8X9NT0YHhbTRBt5H8cLrwniZ6Oq11jufMaFQbHjV+ n8/vMqBEAOeQ0NTQgdQ93PDMTjV6bhdTrWhJhkQRSN1GmcKAgp7tN5Vwpr6aAEgvwY a5GQOvKN8J3+g== From: Marek Vasut To: openembedded-devel@lists.openembedded.org Cc: Marek Vasut , Fabio Estevam , Khem Raj , Martin Jansa Subject: [PATCH 3/8] lvgl: Rename lv-drivers.inc to lv-conf.inc Date: Wed, 13 Mar 2024 05:40:06 +0100 Message-ID: <20240313045038.90500-4-marex@denx.de> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240313045038.90500-1-marex@denx.de> References: <20240313045038.90500-1-marex@denx.de> MIME-Version: 1.0 X-Virus-Scanned: clamav-milter 0.103.8 at phobos.denx.de X-Virus-Status: Clean List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Wed, 13 Mar 2024 04:51:28 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-devel/message/109283 The lv-conf.inc is much more fitting name, since there is now only one configuration file and that is called lv_conf.h . No functional change. Signed-off-by: Marek Vasut --- Cc: Fabio Estevam Cc: Khem Raj Cc: Martin Jansa --- meta-oe/recipes-graphics/lvgl/{lv-drivers.inc => lv-conf.inc} | 0 meta-oe/recipes-graphics/lvgl/lvgl-demo-fb_9.0.0.bb | 2 +- meta-oe/recipes-graphics/lvgl/lvgl_9.0.0.bb | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) rename meta-oe/recipes-graphics/lvgl/{lv-drivers.inc => lv-conf.inc} (100%) diff --git a/meta-oe/recipes-graphics/lvgl/lv-drivers.inc b/meta-oe/recipes-graphics/lvgl/lv-conf.inc similarity index 100% rename from meta-oe/recipes-graphics/lvgl/lv-drivers.inc rename to meta-oe/recipes-graphics/lvgl/lv-conf.inc diff --git a/meta-oe/recipes-graphics/lvgl/lvgl-demo-fb_9.0.0.bb b/meta-oe/recipes-graphics/lvgl/lvgl-demo-fb_9.0.0.bb index fc675a518..0045706ef 100644 --- a/meta-oe/recipes-graphics/lvgl/lvgl-demo-fb_9.0.0.bb +++ b/meta-oe/recipes-graphics/lvgl/lvgl-demo-fb_9.0.0.bb @@ -17,7 +17,7 @@ EXTRA_OEMAKE = "DESTDIR=${D}" PACKAGECONFIG ??= "drm" LVGL_CONFIG_DRM_CARD ?= "/dev/dri/card0" -require lv-drivers.inc +require lv-conf.inc inherit cmake diff --git a/meta-oe/recipes-graphics/lvgl/lvgl_9.0.0.bb b/meta-oe/recipes-graphics/lvgl/lvgl_9.0.0.bb index d8ed4ec81..7a109df45 100644 --- a/meta-oe/recipes-graphics/lvgl/lvgl_9.0.0.bb +++ b/meta-oe/recipes-graphics/lvgl/lvgl_9.0.0.bb @@ -20,7 +20,7 @@ S = "${WORKDIR}/git" ALLOW_EMPTY:${PN} = "1" PACKAGECONFIG ??= "drm" -require lv-drivers.inc +require lv-conf.inc FILES:${PN}-dev += "\ ${includedir}/${PN}/ \ From patchwork Wed Mar 13 04:40:07 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marek Vasut X-Patchwork-Id: 40847 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 53AAFC54E67 for ; Wed, 13 Mar 2024 04:51:28 +0000 (UTC) Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) by mx.groups.io with SMTP id smtpd.web10.9067.1710305478790929358 for ; Tue, 12 Mar 2024 21:51:19 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="dkim: body hash did not verify" header.i=@denx.de header.s=phobos-20191101 header.b=yJN82/y7; spf=pass (domain: denx.de, ip: 85.214.62.61, mailfrom: marex@denx.de) Received: from tr.lan (ip-86-49-120-218.bb.vodafone.cz [86.49.120.218]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (No client certificate requested) (Authenticated sender: marex@denx.de) by phobos.denx.de (Postfix) with ESMTPSA id 10E5987DCC; Wed, 13 Mar 2024 05:51:17 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=denx.de; s=phobos-20191101; t=1710305477; bh=ISA9+3RLiVeCbhAFaMKjKtBLMA24ZujH7loMBmoTlNA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=yJN82/y7Zb5ImoSovsUnZRbYeNznafEwj8V7MbU4OPLUsmIokewbowveNk8mfVBCw f9a3FwgGS/PBfiWwShQ1IUCpEyGVm2efjK6jUNxWSeLvQV6+TetRyrU8WfCRovG44v ZFXSDNpVRoCk3XRI9vmlasPabVLtZDddKvgNjBlzm2PHFsP7M8tKE0OR6EYYjR6e8p YRbKaLgYxprf6ln+8zq2VWyep8OjUFppLP+tV2ZNVCKA5Hqx/5wEVuEdN9PdETGZ0l dJMTIe5LfevSKgGlT1uN82lexfnnESaXL4N/V9nTRUP38rZ1WRvXzJOweqvuHXotNG 3HIpFHKrubKpw== From: Marek Vasut To: openembedded-devel@lists.openembedded.org Cc: Marek Vasut , Fabio Estevam , Khem Raj , Martin Jansa Subject: [PATCH 4/8] lvgl: Add SDL2 fullscreen mode configuration option Date: Wed, 13 Mar 2024 05:40:07 +0100 Message-ID: <20240313045038.90500-5-marex@denx.de> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240313045038.90500-1-marex@denx.de> References: <20240313045038.90500-1-marex@denx.de> MIME-Version: 1.0 X-Virus-Scanned: clamav-milter 0.103.8 at phobos.denx.de X-Virus-Status: Clean List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Wed, 13 Mar 2024 04:51:28 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-devel/message/109284 Expose SDL2 fullscreen mode as configuration option. The default is disabled, which matches the SDL2 backend configuration in LVGL. Signed-off-by: Marek Vasut --- Cc: Fabio Estevam Cc: Khem Raj Cc: Martin Jansa --- meta-oe/recipes-graphics/lvgl/lv-conf.inc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/meta-oe/recipes-graphics/lvgl/lv-conf.inc b/meta-oe/recipes-graphics/lvgl/lv-conf.inc index 97063adbc..85c08b0d5 100644 --- a/meta-oe/recipes-graphics/lvgl/lv-conf.inc +++ b/meta-oe/recipes-graphics/lvgl/lv-conf.inc @@ -9,6 +9,7 @@ LVGL_CONFIG_USE_EVDEV = "${@bb.utils.contains_any('PACKAGECONFIG', 'drm fbdev', LVGL_CONFIG_USE_FBDEV = "${@bb.utils.contains('PACKAGECONFIG', 'fbdev', '1', '0', d)}" LVGL_CONFIG_USE_SDL = "${@bb.utils.contains('PACKAGECONFIG', 'sdl', '1', '0', d)}" +LVGL_CONFIG_SDL_FULLSCREEN ?= "0" LVGL_CONFIG_LV_MEM_CUSTOM ?= "0" LVGL_CONFIG_LV_COLOR_DEPTH ?= "32" @@ -30,6 +31,7 @@ do_configure:append() { -e "s|\(^#define LV_USE_SDL \).*|#define LV_USE_SDL ${LVGL_CONFIG_USE_SDL}|g" \ -e "s|\(^#define LV_USE_DRAW_SDL \).*|#define LV_USE_DRAW_SDL ${LVGL_CONFIG_USE_SDL}|g" \ -e "s|\(^ #define LV_SDL_BUF_COUNT \).*| #define LV_SDL_BUF_COUNT 2|g" \ + -e "s|\(^ #define LV_SDL_FULLSCREEN \).*| #define LV_SDL_FULLSCREEN ${LVGL_CONFIG_SDL_FULLSCREEN}|g" \ \ -e "s|\(^#define LV_COLOR_DEPTH \).*|#define LV_COLOR_DEPTH ${LVGL_CONFIG_LV_COLOR_DEPTH}|g" \ -e "s|\(#define LV_MEM_CUSTOM .*\)0|\1${LVGL_CONFIG_LV_MEM_CUSTOM}|g" \ From patchwork Wed Mar 13 04:40:08 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marek Vasut X-Patchwork-Id: 40846 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 57177C54E6A for ; Wed, 13 Mar 2024 04:51:28 +0000 (UTC) Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) by mx.groups.io with SMTP id smtpd.web11.9109.1710305480247455242 for ; Tue, 12 Mar 2024 21:51:20 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="dkim: body hash did not verify" header.i=@denx.de header.s=phobos-20191101 header.b=jGQZg6pm; spf=pass (domain: denx.de, ip: 85.214.62.61, mailfrom: marex@denx.de) Received: from tr.lan (ip-86-49-120-218.bb.vodafone.cz [86.49.120.218]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (No client certificate requested) (Authenticated sender: marex@denx.de) by phobos.denx.de (Postfix) with ESMTPSA id 6844887DDA; Wed, 13 Mar 2024 05:51:17 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=denx.de; s=phobos-20191101; t=1710305477; bh=n6u5i9b7SFLN2kWhn8/YXPea2M9sqEbkbb4oDb5RXTc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=jGQZg6pm/EXQIe+zO/REbE6h8iVGBReeEdurHReUyJn/kpq4EOKwqpYfrGjiAoZUb i1vYo5c4kUF01z+ym7+Qd+Tgu5uIhSnq9YT8WP3w3KHPMNHy9AvbHmvEBtVfTu+m2I VYCGvQ6syacRrzMf0wVlbmQvjdsWRptK6BDJx+sjtDRe9TjWr0eobYws2CP4wY8EL5 iO1Y9uGsSaFk6egOzwNEp4yJMgKfJq3z3l3Xv/NZWSWNnUgBB1N1APvUQnrolgNLlO OEz+Y5mulZxhpmvftDYR0l3fzUo6U2yWy+37i4KhqeeITE6X0LFLO8D8DYMcFtgKdu cq88ToXFxAnnw== From: Marek Vasut To: openembedded-devel@lists.openembedded.org Cc: Marek Vasut , Fabio Estevam , Khem Raj , Martin Jansa Subject: [PATCH 5/8] lvgl: Configure assertions based on DEBUG_BUILD Date: Wed, 13 Mar 2024 05:40:08 +0100 Message-ID: <20240313045038.90500-6-marex@denx.de> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240313045038.90500-1-marex@denx.de> References: <20240313045038.90500-1-marex@denx.de> MIME-Version: 1.0 X-Virus-Scanned: clamav-milter 0.103.8 at phobos.denx.de X-Virus-Status: Clean List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Wed, 13 Mar 2024 04:51:28 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-devel/message/109285 Configure all the LVGL assertions to enabled or disabled based on OE DEBUG_BUILD variable. This way, debug builds come with assertions which are expensive, while regular builds do not. Signed-off-by: Marek Vasut --- Cc: Fabio Estevam Cc: Khem Raj Cc: Martin Jansa --- meta-oe/recipes-graphics/lvgl/lv-conf.inc | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/meta-oe/recipes-graphics/lvgl/lv-conf.inc b/meta-oe/recipes-graphics/lvgl/lv-conf.inc index 85c08b0d5..cb676ac62 100644 --- a/meta-oe/recipes-graphics/lvgl/lv-conf.inc +++ b/meta-oe/recipes-graphics/lvgl/lv-conf.inc @@ -14,6 +14,8 @@ LVGL_CONFIG_SDL_FULLSCREEN ?= "0" LVGL_CONFIG_LV_MEM_CUSTOM ?= "0" LVGL_CONFIG_LV_COLOR_DEPTH ?= "32" +DEBUG_BUILD ??= "0" + ALLOW_EMPTY:${PN} = "1" EXTRA_OECMAKE += "-Dinstall:BOOL=ON -DLIB_INSTALL_DIR=${baselib}" @@ -42,5 +44,11 @@ do_configure:append() { \ -e "s|\(^#define LV_USE_EVDEV \).*|#define LV_USE_EVDEV ${LVGL_CONFIG_USE_EVDEV}|g" \ \ + -e "s|\(^#define LV_USE_ASSERT_NULL \).*|#define LV_USE_ASSERT_NULL ${DEBUG_BUILD}|g" \ + -e "s|\(^#define LV_USE_ASSERT_MALLOC \).*|#define LV_USE_ASSERT_MALLOC ${DEBUG_BUILD}|g" \ + -e "s|\(^#define LV_USE_ASSERT_STYLE \).*|#define LV_USE_ASSERT_STYLE ${DEBUG_BUILD}|g" \ + -e "s|\(^#define LV_USE_ASSERT_MEM_INTEGRITY \).*|#define LV_USE_ASSERT_MEM_INTEGRITY ${DEBUG_BUILD}|g" \ + -e "s|\(^#define LV_USE_ASSERT_OBJ \).*|#define LV_USE_ASSERT_OBJ ${DEBUG_BUILD}|g" \ + \ -i "${S}/lv_conf.h" } From patchwork Wed Mar 13 04:40:09 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marek Vasut X-Patchwork-Id: 40848 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 64667C54E69 for ; Wed, 13 Mar 2024 04:51:28 +0000 (UTC) Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) by mx.groups.io with SMTP id smtpd.web11.9108.1710305480247195775 for ; Tue, 12 Mar 2024 21:51:20 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="dkim: body hash did not verify" header.i=@denx.de header.s=phobos-20191101 header.b=ATjTDdp0; spf=pass (domain: denx.de, ip: 85.214.62.61, mailfrom: marex@denx.de) Received: from tr.lan (ip-86-49-120-218.bb.vodafone.cz [86.49.120.218]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (No client certificate requested) (Authenticated sender: marex@denx.de) by phobos.denx.de (Postfix) with ESMTPSA id BFD8987DE3; Wed, 13 Mar 2024 05:51:17 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=denx.de; s=phobos-20191101; t=1710305478; bh=qT/tHwfmL4zLuh2+RrQZ/MibNJiWtqtG/wr9ITE6ml0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ATjTDdp0LOieCiHGdRtG5/kmDObbwcNqBEsmhgVrk7Q2+BY0jXmVFXS/b8Sx2P7GP gaMuIpd6x9jx3w5uPg9djzu5ZK4At44G/XQX3TT/LAfVHH/WlKreGofQMdY5pXJiE5 o6HK4l3J1N+a1E9B042p4loFiEf3gsXfFjEneTngXJhVcsxoZKJvmsyiTZiTgmJ3z8 TVJu5umsunsnDsJPZS6R+a9yfC219K+DXY2BW997tD5nAWdOBSUVgvvNqBKHgada4p uOqFYIz8JnOe3HlfpwWFvM0DiBBKHBJVymsdwUYpoecYLjF6uU6yKDgadYyQnp8oV3 YoVqUkXlAjqGQ== From: Marek Vasut To: openembedded-devel@lists.openembedded.org Cc: Marek Vasut , Fabio Estevam , Khem Raj , Martin Jansa Subject: [PATCH 6/8] lvgl: Default to XRGB8888 DRM framebuffer Date: Wed, 13 Mar 2024 05:40:09 +0100 Message-ID: <20240313045038.90500-7-marex@denx.de> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240313045038.90500-1-marex@denx.de> References: <20240313045038.90500-1-marex@denx.de> MIME-Version: 1.0 X-Virus-Scanned: clamav-milter 0.103.8 at phobos.denx.de X-Virus-Status: Clean List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Wed, 13 Mar 2024 04:51:28 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-devel/message/109286 The ARGB8888 framebuffer format for base canvas makes little sense as the base canvas is unlikely to be transparent and require alpha. Use XRGB8888 framebuffer format which is more widely supported by DRM drivers as base plane pixel format. This is identical to upstream fix for this issue which already landed: https://github.com/lvgl/lv_drivers/commit/c71e5f84bb2aebaed0644e31b8868bf90b199d32 The upstream fix just never made it into the LVGL 9.0.0 for some reason, an repeated upstream fix is being worked in now. Signed-off-by: Marek Vasut --- Cc: Fabio Estevam Cc: Khem Raj Cc: Martin Jansa --- meta-oe/recipes-graphics/lvgl/lvgl-demo-fb_9.0.0.bb | 3 +++ meta-oe/recipes-graphics/lvgl/lvgl_9.0.0.bb | 5 +++++ 2 files changed, 8 insertions(+) diff --git a/meta-oe/recipes-graphics/lvgl/lvgl-demo-fb_9.0.0.bb b/meta-oe/recipes-graphics/lvgl/lvgl-demo-fb_9.0.0.bb index 0045706ef..ee3d5ab20 100644 --- a/meta-oe/recipes-graphics/lvgl/lvgl-demo-fb_9.0.0.bb +++ b/meta-oe/recipes-graphics/lvgl/lvgl-demo-fb_9.0.0.bb @@ -26,6 +26,9 @@ S = "${WORKDIR}/git" TARGET_CFLAGS += "-I${STAGING_INCDIR}/libdrm" do_configure:prepend() { + # Fix ARGB8888 base plane format misuse again + sed -i 's@ARGB8888@XRGB8888@g' "${S}/lvgl/src/drivers/display/drm/lv_linux_drm.c" + if [ "${LVGL_CONFIG_USE_DRM}" -eq 1 ] ; then # Add libdrm build dependency sed -i '/^target_link_libraries/ s@pthread@& drm@' "${S}/CMakeLists.txt" diff --git a/meta-oe/recipes-graphics/lvgl/lvgl_9.0.0.bb b/meta-oe/recipes-graphics/lvgl/lvgl_9.0.0.bb index 7a109df45..bdd61d891 100644 --- a/meta-oe/recipes-graphics/lvgl/lvgl_9.0.0.bb +++ b/meta-oe/recipes-graphics/lvgl/lvgl_9.0.0.bb @@ -22,6 +22,11 @@ ALLOW_EMPTY:${PN} = "1" PACKAGECONFIG ??= "drm" require lv-conf.inc +do_configure:prepend() { + # Fix ARGB8888 base plane format misuse again + sed -i 's@ARGB8888@XRGB8888@g' "${S}/src/drivers/display/drm/lv_linux_drm.c" +} + FILES:${PN}-dev += "\ ${includedir}/${PN}/ \ ${includedir}/${PN}/lvgl/ \ From patchwork Wed Mar 13 04:40:10 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marek Vasut X-Patchwork-Id: 40844 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7880BC54E6E for ; Wed, 13 Mar 2024 04:51:28 +0000 (UTC) Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) by mx.groups.io with SMTP id smtpd.web11.9110.1710305480573111971 for ; Tue, 12 Mar 2024 21:51:20 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="dkim: body hash did not verify" header.i=@denx.de header.s=phobos-20191101 header.b=IA+MqMfe; spf=pass (domain: denx.de, ip: 85.214.62.61, mailfrom: marex@denx.de) Received: from tr.lan (ip-86-49-120-218.bb.vodafone.cz [86.49.120.218]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (No client certificate requested) (Authenticated sender: marex@denx.de) by phobos.denx.de (Postfix) with ESMTPSA id 2650387DE5; Wed, 13 Mar 2024 05:51:18 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=denx.de; s=phobos-20191101; t=1710305478; bh=iQ1APZnRBBD25OqpPntDlAdAm6C80uSanFU6Bvz4eTo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=IA+MqMfe+NQcHk3/ZSwHmF52PioGVKaKRislY3HFKiECjsrVVF3NMgzElEAXadGlA QQHVkjc2JwaCWv42Ojo+WzqfiLZA/Y4ZMr7gbNfcZx171DFxTnIOzOQiZhvZaJ2GPf sgj46WoPxJyipiyztkwUtmZPPM+mGFDNeU03KHQi0aBwissxB9ELVQnJZb62y9TAn+ IZr7miG2PYXd6u/eXJTuvls7hsmTJFmR6OSbio3v4jHF/dbxVljcAUhCfC0cViIXPj qnYbpjJ06aFneTprMlqRcstO9J7colGD13DccCxKz04DeEN6/V15Xox5llKcRul9xT pCK130csIPaTw== From: Marek Vasut To: openembedded-devel@lists.openembedded.org Cc: Marek Vasut , Fabio Estevam , Khem Raj , Martin Jansa Subject: [PATCH 7/8] lvgl: Build shared library Date: Wed, 13 Mar 2024 05:40:10 +0100 Message-ID: <20240313045038.90500-8-marex@denx.de> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240313045038.90500-1-marex@denx.de> References: <20240313045038.90500-1-marex@denx.de> MIME-Version: 1.0 X-Virus-Scanned: clamav-milter 0.103.8 at phobos.denx.de X-Virus-Status: Clean List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Wed, 13 Mar 2024 04:51:28 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-devel/message/109287 Build LVGL as shared library instead of static library. In case there are multiple applications linking against LVGL, this is more efficient, and it also makes it possible to update only the LVGL library separately from the applications. Signed-off-by: Marek Vasut --- Cc: Fabio Estevam Cc: Khem Raj Cc: Martin Jansa --- meta-oe/recipes-graphics/lvgl/lvgl_9.0.0.bb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meta-oe/recipes-graphics/lvgl/lvgl_9.0.0.bb b/meta-oe/recipes-graphics/lvgl/lvgl_9.0.0.bb index bdd61d891..d147e8920 100644 --- a/meta-oe/recipes-graphics/lvgl/lvgl_9.0.0.bb +++ b/meta-oe/recipes-graphics/lvgl/lvgl_9.0.0.bb @@ -14,7 +14,7 @@ PV .= "+git${SRCPV}" inherit cmake -EXTRA_OECMAKE = "-DLIB_INSTALL_DIR=${baselib}" +EXTRA_OECMAKE = "-DLIB_INSTALL_DIR=${baselib} -DBUILD_SHARED_LIBS=ON" S = "${WORKDIR}/git" ALLOW_EMPTY:${PN} = "1" From patchwork Wed Mar 13 04:40:11 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marek Vasut X-Patchwork-Id: 40850 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9488DC54E72 for ; Wed, 13 Mar 2024 04:51:28 +0000 (UTC) Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) by mx.groups.io with SMTP id smtpd.web10.9068.1710305480573809718 for ; Tue, 12 Mar 2024 21:51:21 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="dkim: body hash did not verify" header.i=@denx.de header.s=phobos-20191101 header.b=uSkjEdmE; spf=pass (domain: denx.de, ip: 85.214.62.61, mailfrom: marex@denx.de) Received: from tr.lan (ip-86-49-120-218.bb.vodafone.cz [86.49.120.218]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (No client certificate requested) (Authenticated sender: marex@denx.de) by phobos.denx.de (Postfix) with ESMTPSA id 810B587DF1; Wed, 13 Mar 2024 05:51:18 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=denx.de; s=phobos-20191101; t=1710305478; bh=fUZf4yF27XW3kuGF1HsvpPFDdzslVRMxtHx/utWxCQE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=uSkjEdmEehZsI0YyLEYQtYgd/UuEAqiRhzi8wBVG1oC6mrYCGVQ6US0s47rNKSOqT 8IwNcm9GORAHZyVfkXC9UyU/1beaDj5R8Ud2EEv+IvMqYJx3U2KOLka1qQvlG+YBgR EQ6W7xgvrwkCQk3W4D1xghHDmMpO1LbpT7+EhUM2K/HJtmwv/yciAHJK/K5iMXQftz 1j2v28uexOtP9Ti3zWUkUtPAhnNsrAsftgrzi11DUHLC8SjKC64pGC4kzNECmnsD1H Bv6r6IAXemQKZXjxxrWd12+6GNazmkgR0d7hFRudYd0pfktulJjJ7dnWJOUvMNyInY QrYC3FBEuhqbw== From: Marek Vasut To: openembedded-devel@lists.openembedded.org Cc: Marek Vasut , Fabio Estevam , Khem Raj , Martin Jansa Subject: [PATCH 8/8] lvgl: Replace sed patching with real patches Date: Wed, 13 Mar 2024 05:40:11 +0100 Message-ID: <20240313045038.90500-9-marex@denx.de> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240313045038.90500-1-marex@denx.de> References: <20240313045038.90500-1-marex@denx.de> MIME-Version: 1.0 X-Virus-Scanned: clamav-milter 0.103.8 at phobos.denx.de X-Virus-Status: Clean List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Wed, 13 Mar 2024 04:51:28 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-devel/message/109288 Replace the current awful sed hacking with real patches bound for upstream. The sed hacking was simply not maintainable anymore. Signed-off-by: Marek Vasut --- Cc: Fabio Estevam Cc: Khem Raj Cc: Martin Jansa --- ...-drm-Default-to-XRGB8888-framebuffer.patch | 36 ++++++++++ ...oth-LV_IMAGE_SRC_FILE-and-LV_IMAGE_S.patch | 63 +++++++++++++++++ ...e-node-runtime-configurable-via-envi.patch | 45 ++++++++++++ ...Factor-out-fbdev-initialization-code.patch | 52 ++++++++++++++ .../0005-Add-DRM-KMS-example-support.patch | 59 ++++++++++++++++ .../files/0006-Add-SDL2-example-support.patch | 69 +++++++++++++++++++ .../lvgl/lvgl-demo-fb_9.0.0.bb | 24 +++---- meta-oe/recipes-graphics/lvgl/lvgl_9.0.0.bb | 11 ++- 8 files changed, 337 insertions(+), 22 deletions(-) create mode 100644 meta-oe/recipes-graphics/lvgl/files/0001-fix-drm-Default-to-XRGB8888-framebuffer.patch create mode 100644 meta-oe/recipes-graphics/lvgl/files/0002-fix-sdl-handle-both-LV_IMAGE_SRC_FILE-and-LV_IMAGE_S.patch create mode 100644 meta-oe/recipes-graphics/lvgl/files/0003-Make-fbdev-device-node-runtime-configurable-via-envi.patch create mode 100644 meta-oe/recipes-graphics/lvgl/files/0004-Factor-out-fbdev-initialization-code.patch create mode 100644 meta-oe/recipes-graphics/lvgl/files/0005-Add-DRM-KMS-example-support.patch create mode 100644 meta-oe/recipes-graphics/lvgl/files/0006-Add-SDL2-example-support.patch diff --git a/meta-oe/recipes-graphics/lvgl/files/0001-fix-drm-Default-to-XRGB8888-framebuffer.patch b/meta-oe/recipes-graphics/lvgl/files/0001-fix-drm-Default-to-XRGB8888-framebuffer.patch new file mode 100644 index 000000000..9d758cb08 --- /dev/null +++ b/meta-oe/recipes-graphics/lvgl/files/0001-fix-drm-Default-to-XRGB8888-framebuffer.patch @@ -0,0 +1,36 @@ +From 7b89e18c2f21e4b91b461007368df724198ac904 Mon Sep 17 00:00:00 2001 +From: Marek Vasut +Date: Tue, 12 Mar 2024 03:13:33 +0100 +Subject: [PATCH 1/2] fix(drm): Default to XRGB8888 framebuffer + +The ARGB8888 framebuffer format for base canvas makes little sense +as the base canvas is unlikely to be transparent and require alpha. +Use XRGB8888 framebuffer format which is more widely supported by +DRM drivers as base plane pixel format. + +This makes e.g. i.MX8M Nano work by default. + +Upstream-Status: Submitted [https://github.com/lvgl/lvgl/pull/5851] +Signed-off-by: Marek Vasut +--- +This is identical fix to lv_drivers https://github.com/lvgl/lv_drivers/pull/282 +--- + src/drivers/display/drm/lv_linux_drm.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/drivers/display/drm/lv_linux_drm.c b/src/drivers/display/drm/lv_linux_drm.c +index c706f9cb2..faa2212bf 100644 +--- a/src/drivers/display/drm/lv_linux_drm.c ++++ b/src/drivers/display/drm/lv_linux_drm.c +@@ -24,7 +24,7 @@ + * DEFINES + *********************/ + #if LV_COLOR_DEPTH == 32 +- #define DRM_FOURCC DRM_FORMAT_ARGB8888 ++ #define DRM_FOURCC DRM_FORMAT_XRGB8888 + #elif LV_COLOR_DEPTH == 16 + #define DRM_FOURCC DRM_FORMAT_RGB565 + #else +-- +2.43.0 + diff --git a/meta-oe/recipes-graphics/lvgl/files/0002-fix-sdl-handle-both-LV_IMAGE_SRC_FILE-and-LV_IMAGE_S.patch b/meta-oe/recipes-graphics/lvgl/files/0002-fix-sdl-handle-both-LV_IMAGE_SRC_FILE-and-LV_IMAGE_S.patch new file mode 100644 index 000000000..bd619b157 --- /dev/null +++ b/meta-oe/recipes-graphics/lvgl/files/0002-fix-sdl-handle-both-LV_IMAGE_SRC_FILE-and-LV_IMAGE_S.patch @@ -0,0 +1,63 @@ +From 5b7f657e8ad656e0854f2252b3bd482b966d650c Mon Sep 17 00:00:00 2001 +From: Marek Vasut +Date: Wed, 13 Mar 2024 02:12:30 +0100 +Subject: [PATCH 2/2] fix(sdl): handle both LV_IMAGE_SRC_FILE and + LV_IMAGE_SRC_VARIABLE + +The SDL image draw code currently assumes that the image source is a +filename and attempts to open that filename. This is not necessarily +the case, e.g. the lv_demo_fb uses encoded images which are of type +LV_IMAGE_SRC_VARIABLE and instead of filename, come with a buffer of +pixels. Handle the later using SDL_CreateRGBSurfaceFrom(). + +Upstream-Status: Submitted [https://github.com/lvgl/lvgl/pull/5852] +Signed-off-by: Marek Vasut +--- + src/draw/sdl/lv_draw_sdl.c | 30 +++++++++++++++++++++++++++--- + 1 file changed, 27 insertions(+), 3 deletions(-) + +diff --git a/src/draw/sdl/lv_draw_sdl.c b/src/draw/sdl/lv_draw_sdl.c +index cbb555d94..5eee5b725 100644 +--- a/src/draw/sdl/lv_draw_sdl.c ++++ b/src/draw/sdl/lv_draw_sdl.c +@@ -224,10 +224,34 @@ static bool draw_to_texture(lv_draw_sdl_unit_t * u, cache_data_t * data) + break; + case LV_DRAW_TASK_TYPE_IMAGE: { + lv_draw_image_dsc_t * image_dsc = task->draw_dsc; +- const char * path = image_dsc->src; +- SDL_Surface * surface = IMG_Load(&path[2]); ++ lv_image_src_t type = lv_image_src_get_type(image_dsc->src); ++ SDL_Surface * surface = NULL; ++ if(type == LV_IMAGE_SRC_FILE) { ++ const char * path = image_dsc->src; ++ surface = IMG_Load(&path[2]); ++ } ++ else if(type == LV_IMAGE_SRC_VARIABLE) { ++ lv_image_dsc_t * lvd = image_dsc->src; ++ surface = SDL_CreateRGBSurfaceFrom(lvd->data, ++ lvd->header.w, lvd->header.h, ++ LV_COLOR_FORMAT_GET_BPP(lvd->header.cf), ++ lvd->header.stride, ++#if SDL_BYTEORDER == SDL_LIL_ENDIAN ++ 0x00FF0000, ++ 0x0000FF00, ++ 0x000000FF, ++ 0xFF000000 ++#else ++ 0x0000FF00, ++ 0x00FF0000, ++ 0xFF000000, ++ 0x000000FF ++#endif ++ ); ++ } ++ + if(surface == NULL) { +- fprintf(stderr, "could not load image: %s\n", IMG_GetError()); ++ fprintf(stderr, "could not load image\n"); + return false; + } + +-- +2.43.0 + diff --git a/meta-oe/recipes-graphics/lvgl/files/0003-Make-fbdev-device-node-runtime-configurable-via-envi.patch b/meta-oe/recipes-graphics/lvgl/files/0003-Make-fbdev-device-node-runtime-configurable-via-envi.patch new file mode 100644 index 000000000..73c01cb59 --- /dev/null +++ b/meta-oe/recipes-graphics/lvgl/files/0003-Make-fbdev-device-node-runtime-configurable-via-envi.patch @@ -0,0 +1,45 @@ +From 85d90749a10b5f91741d37b75825935bf7cc4fb3 Mon Sep 17 00:00:00 2001 +From: Marek Vasut +Date: Tue, 12 Mar 2024 03:00:37 +0100 +Subject: [PATCH 3/6] Make fbdev device node runtime configurable via + environment variable + +Test whether $LV_VIDEO_CARD environment variable is non-NULL and in +case it is, use it as the video card file in lv_linux_fbdev_set_file(). +Otherwise fall back to /dev/fb0, i.e. the current behavior. This way, +it is possible to test LVGL on systems with multiple fbdev devices. + +Upstream-Status: Submitted [https://github.com/lvgl/lv_port_linux_frame_buffer/pull/47] +Signed-off-by: Marek Vasut +--- + main.c | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +diff --git a/main.c b/main.c +index 9775b9c..b64a098 100644 +--- a/main.c ++++ b/main.c +@@ -4,13 +4,19 @@ + #include + #include + ++static const char *lv_linux_get_video_card_node(const char *videocard_default) ++{ ++ return getenv("LV_VIDEO_CARD") ? : videocard_default; ++} ++ + int main(void) + { ++ const char *videocard = lv_linux_get_video_card_node("/dev/fb0"); + lv_init(); + + /*Linux frame buffer device init*/ + lv_display_t * disp = lv_linux_fbdev_create(); +- lv_linux_fbdev_set_file(disp, "/dev/fb0"); ++ lv_linux_fbdev_set_file(disp, videocard); + + /*Create a Demo*/ + lv_demo_widgets(); +-- +2.43.0 + diff --git a/meta-oe/recipes-graphics/lvgl/files/0004-Factor-out-fbdev-initialization-code.patch b/meta-oe/recipes-graphics/lvgl/files/0004-Factor-out-fbdev-initialization-code.patch new file mode 100644 index 000000000..d24d150c0 --- /dev/null +++ b/meta-oe/recipes-graphics/lvgl/files/0004-Factor-out-fbdev-initialization-code.patch @@ -0,0 +1,52 @@ +From 593da8e11cc5029773ad330b5d7633ee9f2fba95 Mon Sep 17 00:00:00 2001 +From: Marek Vasut +Date: Tue, 12 Mar 2024 18:09:42 +0100 +Subject: [PATCH 4/6] Factor out fbdev initialization code + +Pull fbdev initialization code into separate function and add ifdef +around it, so it can be conditionally compiled in. This is done in +preparation for addition of other backend initialization example +code. + +Upstream-Status: Submitted [https://github.com/lvgl/lv_port_linux_frame_buffer/pull/47] +Signed-off-by: Marek Vasut +--- + main.c | 18 ++++++++++++++---- + 1 file changed, 14 insertions(+), 4 deletions(-) + +diff --git a/main.c b/main.c +index b64a098..288519c 100644 +--- a/main.c ++++ b/main.c +@@ -9,14 +9,24 @@ static const char *lv_linux_get_video_card_node(const char *videocard_default) + return getenv("LV_VIDEO_CARD") ? : videocard_default; + } + +-int main(void) ++#if LV_USE_LINUX_FBDEV ++static void lv_linux_disp_init(void) + { + const char *videocard = lv_linux_get_video_card_node("/dev/fb0"); +- lv_init(); +- +- /*Linux frame buffer device init*/ + lv_display_t * disp = lv_linux_fbdev_create(); ++ + lv_linux_fbdev_set_file(disp, videocard); ++} ++#else ++#error Unsupported configuration ++#endif ++ ++int main(void) ++{ ++ lv_init(); ++ ++ /*Linux display device init*/ ++ lv_linux_disp_init(); + + /*Create a Demo*/ + lv_demo_widgets(); +-- +2.43.0 + diff --git a/meta-oe/recipes-graphics/lvgl/files/0005-Add-DRM-KMS-example-support.patch b/meta-oe/recipes-graphics/lvgl/files/0005-Add-DRM-KMS-example-support.patch new file mode 100644 index 000000000..9ee7a7f19 --- /dev/null +++ b/meta-oe/recipes-graphics/lvgl/files/0005-Add-DRM-KMS-example-support.patch @@ -0,0 +1,59 @@ +From dabf40559428733413432afa29598bc145aa6636 Mon Sep 17 00:00:00 2001 +From: Marek Vasut +Date: Tue, 12 Mar 2024 03:08:13 +0100 +Subject: [PATCH 5/6] Add DRM/KMS example support + +Extend the main.c to support both legacy fbdev and DRM/KMS initialization. + +To use legacy fbdev support, adjust lv_conf.h as follows: +LV_USE_LINUX_FBDEV=1 +LV_USE_LINUX_DRM=0 + +To use DRM/KMS support, adjust lv_conf.h as follows: +LV_USE_LINUX_FBDEV=0 +LV_USE_LINUX_DRM=1 + +Upstream-Status: Submitted [https://github.com/lvgl/lv_port_linux_frame_buffer/pull/47] +Signed-off-by: Marek Vasut +--- + CMakeLists.txt | 5 ++++- + main.c | 8 ++++++++ + 2 files changed, 12 insertions(+), 1 deletion(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index d91b196..c1cfb7f 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -12,6 +12,9 @@ target_include_directories(lvgl PUBLIC ${PROJECT_SOURCE_DIR}) + + add_executable(main main.c mouse_cursor_icon.c) + +-target_link_libraries(main lvgl lvgl::examples lvgl::demos lvgl::thorvg ${SDL2_LIBRARIES} m pthread) ++include(${CMAKE_CURRENT_LIST_DIR}/lvgl/tests/FindLibDRM.cmake) ++include_directories(${Libdrm_INCLUDE_DIRS}) ++ ++target_link_libraries(main lvgl lvgl::examples lvgl::demos lvgl::thorvg ${SDL2_LIBRARIES} ${Libdrm_LIBRARIES} m pthread) + add_custom_target (run COMMAND ${EXECUTABLE_OUTPUT_PATH}/main DEPENDS main) + +diff --git a/main.c b/main.c +index 288519c..ab4e936 100644 +--- a/main.c ++++ b/main.c +@@ -17,6 +17,14 @@ static void lv_linux_disp_init(void) + + lv_linux_fbdev_set_file(disp, videocard); + } ++#elif LV_USE_LINUX_DRM ++static void lv_linux_disp_init(void) ++{ ++ const char *videocard = lv_linux_get_video_card_node("/dev/dri/card0"); ++ lv_display_t * disp = lv_linux_drm_create(); ++ ++ lv_linux_drm_set_file(disp, videocard, -1); ++} + #else + #error Unsupported configuration + #endif +-- +2.43.0 + diff --git a/meta-oe/recipes-graphics/lvgl/files/0006-Add-SDL2-example-support.patch b/meta-oe/recipes-graphics/lvgl/files/0006-Add-SDL2-example-support.patch new file mode 100644 index 000000000..691ee80b5 --- /dev/null +++ b/meta-oe/recipes-graphics/lvgl/files/0006-Add-SDL2-example-support.patch @@ -0,0 +1,69 @@ +From b202ce51f7b68c460fcd1b6d9c3ffa8aaf2baaf6 Mon Sep 17 00:00:00 2001 +From: Marek Vasut +Date: Tue, 12 Mar 2024 19:05:38 +0100 +Subject: [PATCH 6/6] Add SDL2 example support + +Extend the main.c to support both legacy fbdev, DRM/KMS, SDL2 initialization. +The SDL2 window resolution can be configured using environment variables +LV_VIDEO_WIDTH and LV_VIDEO_HEIGHT and defaults to 800 x 480 . + +To use legacy fbdev support, adjust lv_conf.h as follows: +LV_USE_LINUX_FBDEV=1 +LV_USE_LINUX_DRM=0 +LV_USE_SDL=0 + +To use DRM/KMS support, adjust lv_conf.h as follows: +LV_USE_LINUX_FBDEV=0 +LV_USE_LINUX_DRM=1 +LV_USE_SDL=0 + +To use SDL2 support, adjust lv_conf.h as follows: +LV_USE_LINUX_FBDEV=0 +LV_USE_LINUX_DRM=0 +LV_USE_SDL=1 + +Upstream-Status: Submitted [https://github.com/lvgl/lv_port_linux_frame_buffer/pull/47] +Signed-off-by: Marek Vasut +--- + CMakeLists.txt | 6 +++++- + main.c | 8 ++++++++ + 2 files changed, 13 insertions(+), 1 deletion(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index c1cfb7f..658193f 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -15,6 +15,10 @@ add_executable(main main.c mouse_cursor_icon.c) + include(${CMAKE_CURRENT_LIST_DIR}/lvgl/tests/FindLibDRM.cmake) + include_directories(${Libdrm_INCLUDE_DIRS}) + +-target_link_libraries(main lvgl lvgl::examples lvgl::demos lvgl::thorvg ${SDL2_LIBRARIES} ${Libdrm_LIBRARIES} m pthread) ++find_package(SDL2) ++find_package(SDL2_image) ++include_directories(${SDL2_INCLUDE_DIRS} ${SDL2_IMAGE_INCLUDE_DIRS}) ++ ++target_link_libraries(main lvgl lvgl::examples lvgl::demos lvgl::thorvg ${SDL2_LIBRARIES} ${SDL2_IMAGE_LIBRARIES} ${Libdrm_LIBRARIES} m pthread) + add_custom_target (run COMMAND ${EXECUTABLE_OUTPUT_PATH}/main DEPENDS main) + +diff --git a/main.c b/main.c +index ab4e936..4b66ebc 100644 +--- a/main.c ++++ b/main.c +@@ -25,6 +25,14 @@ static void lv_linux_disp_init(void) + + lv_linux_drm_set_file(disp, videocard, -1); + } ++#elif LV_USE_SDL ++static void lv_linux_disp_init(void) ++{ ++ const int width = atoi(getenv("LV_VIDEO_WIDTH") ? : "800"); ++ const int height = atoi(getenv("LV_VIDEO_HEIGHT") ? : "480"); ++ ++ lv_sdl_window_create(width, height); ++} + #else + #error Unsupported configuration + #endif +-- +2.43.0 + diff --git a/meta-oe/recipes-graphics/lvgl/lvgl-demo-fb_9.0.0.bb b/meta-oe/recipes-graphics/lvgl/lvgl-demo-fb_9.0.0.bb index ee3d5ab20..70df822cc 100644 --- a/meta-oe/recipes-graphics/lvgl/lvgl-demo-fb_9.0.0.bb +++ b/meta-oe/recipes-graphics/lvgl/lvgl-demo-fb_9.0.0.bb @@ -7,6 +7,12 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=802d3d83ae80ef5f343050bf96cce3a4 \ SRC_URI = "\ git://github.com/lvgl/lv_port_linux_frame_buffer.git;protocol=https;branch=master;name=demo \ git://github.com/lvgl/lvgl;protocol=https;branch=master;name=lvgl;subdir=git/lvgl \ + file://0001-fix-drm-Default-to-XRGB8888-framebuffer.patch;patchdir=lvgl \ + file://0002-fix-sdl-handle-both-LV_IMAGE_SRC_FILE-and-LV_IMAGE_S.patch;patchdir=lvgl \ + file://0003-Make-fbdev-device-node-runtime-configurable-via-envi.patch \ + file://0004-Factor-out-fbdev-initialization-code.patch \ + file://0005-Add-DRM-KMS-example-support.patch \ + file://0006-Add-SDL2-example-support.patch \ " SRCREV_demo = "dccc6a1ca48372aa993dbea7a8e17dec6f42df6a" SRCREV_lvgl = "e29d35b43c509b6d7189f5dac87139441669ae66" @@ -26,23 +32,9 @@ S = "${WORKDIR}/git" TARGET_CFLAGS += "-I${STAGING_INCDIR}/libdrm" do_configure:prepend() { - # Fix ARGB8888 base plane format misuse again - sed -i 's@ARGB8888@XRGB8888@g' "${S}/lvgl/src/drivers/display/drm/lv_linux_drm.c" - - if [ "${LVGL_CONFIG_USE_DRM}" -eq 1 ] ; then - # Add libdrm build dependency - sed -i '/^target_link_libraries/ s@pthread@& drm@' "${S}/CMakeLists.txt" - # Switch from fbdev to drm usage - sed -i "s@lv_linux_fbdev_set_file.*@lv_linux_drm_set_file(disp, \"${LVGL_CONFIG_DRM_CARD}\", -1);@g" "${S}/main.c" - sed -i 's@fbdev@drm@g' "${S}/main.c" - fi - if [ "${LVGL_CONFIG_USE_SDL}" -eq 1 ] ; then - # Add libsdl build dependency - sed -i '/^target_link_libraries/ s@pthread@& SDL2 SDL2_image@' "${S}/CMakeLists.txt" - # Switch from fbdev to sdl usage - sed -i 's@lv_linux_fbdev_create()@lv_sdl_window_create(atoi(getenv("LV_VIDEO_WIDTH") ? : "800"), atoi(getenv("LV_VIDEO_HEIGHT") ? : "480"))@g' "${S}/main.c" - sed -i '/lv_linux_fbdev_set_file/ d' "${S}/main.c" + # Add libsdl build dependency, SDL2_image has no cmake file + sed -i '/^target_link_libraries/ s@pthread@& SDL2_image@' "${S}/CMakeLists.txt" fi } diff --git a/meta-oe/recipes-graphics/lvgl/lvgl_9.0.0.bb b/meta-oe/recipes-graphics/lvgl/lvgl_9.0.0.bb index d147e8920..7f1f57a2b 100644 --- a/meta-oe/recipes-graphics/lvgl/lvgl_9.0.0.bb +++ b/meta-oe/recipes-graphics/lvgl/lvgl_9.0.0.bb @@ -8,7 +8,11 @@ SUMMARY = "Light and Versatile Graphics Library" LICENSE = "MIT" LIC_FILES_CHKSUM = "file://LICENCE.txt;md5=bf1198c89ae87f043108cea62460b03a" -SRC_URI = "git://github.com/lvgl/lvgl;protocol=https;branch=master" +SRC_URI = "\ + git://github.com/lvgl/lvgl;protocol=https;branch=master \ + file://0001-fix-drm-Default-to-XRGB8888-framebuffer.patch \ + file://0002-fix-sdl-handle-both-LV_IMAGE_SRC_FILE-and-LV_IMAGE_S.patch \ + " SRCREV = "e29d35b43c509b6d7189f5dac87139441669ae66" PV .= "+git${SRCPV}" @@ -22,11 +26,6 @@ ALLOW_EMPTY:${PN} = "1" PACKAGECONFIG ??= "drm" require lv-conf.inc -do_configure:prepend() { - # Fix ARGB8888 base plane format misuse again - sed -i 's@ARGB8888@XRGB8888@g' "${S}/src/drivers/display/drm/lv_linux_drm.c" -} - FILES:${PN}-dev += "\ ${includedir}/${PN}/ \ ${includedir}/${PN}/lvgl/ \