lvgl: Upgrade to 9.2.2 release

Drop backported patches
Enable dependent options needed for thorvg packageconfig
Add packageconfig knob for lottie and its relationship with thorvg

Reviewed-by: Marek Vasut <marex@denx.de>
Cc: Marek Vasut <marex@denx.de>
Cc: Jaeyoon Jung <jaeyoon.jung@lge.com>
Cc: Martin Jansa <martin.jansa@gmail.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
This commit is contained in:
Khem Raj 2025-03-21 18:59:39 -07:00
parent 09b6a82dbf
commit b4ab539e0f
No known key found for this signature in database
GPG Key ID: BB053355919D3314
11 changed files with 20 additions and 407 deletions

View File

@ -20,13 +20,11 @@ Signed-off-by: Martin Jansa <martin.jansa@gmail.com>
src/libs/thorvg/thorvg.h | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/libs/thorvg/thorvg.h b/src/libs/thorvg/thorvg.h
index 7f5a84b94..0c84ec66e 100644
--- a/src/libs/thorvg/thorvg.h
+++ b/src/libs/thorvg/thorvg.h
@@ -18,6 +18,7 @@
#ifndef _THORVG_H_
#define _THORVG_H_
@@ -12,6 +12,7 @@
#define TVG_BUILD 1
+#include <cstdint>
#include <functional>

View File

@ -1,63 +0,0 @@
From 5b7f657e8ad656e0854f2252b3bd482b966d650c Mon Sep 17 00:00:00 2001
From: Marek Vasut <marex@denx.de>
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: Backport [b339e67581864b2fb6bb8897735a1e110c324ddc]
Signed-off-by: Marek Vasut <marex@denx.de>
---
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

View File

@ -1,45 +0,0 @@
From 85d90749a10b5f91741d37b75825935bf7cc4fb3 Mon Sep 17 00:00:00 2001
From: Marek Vasut <marex@denx.de>
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: Backport [a0f03515bd7417a0d100058b133c3e8d69be9451]
Signed-off-by: Marek Vasut <marex@denx.de>
---
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 <pthread.h>
#include <time.h>
+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

View File

@ -1,52 +0,0 @@
From 593da8e11cc5029773ad330b5d7633ee9f2fba95 Mon Sep 17 00:00:00 2001
From: Marek Vasut <marex@denx.de>
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: Backport [a0f03515bd7417a0d100058b133c3e8d69be9451]
Signed-off-by: Marek Vasut <marex@denx.de>
---
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

View File

@ -1,59 +0,0 @@
From dabf40559428733413432afa29598bc145aa6636 Mon Sep 17 00:00:00 2001
From: Marek Vasut <marex@denx.de>
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: Backport [a0f03515bd7417a0d100058b133c3e8d69be9451]
Signed-off-by: Marek Vasut <marex@denx.de>
---
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

View File

@ -1,69 +0,0 @@
From b202ce51f7b68c460fcd1b6d9c3ffa8aaf2baaf6 Mon Sep 17 00:00:00 2001
From: Marek Vasut <marex@denx.de>
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: Backport [a0f03515bd7417a0d100058b133c3e8d69be9451]
Signed-off-by: Marek Vasut <marex@denx.de>
---
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

View File

@ -1,68 +0,0 @@
From 40657a770baadfff30abfecf7638e7b1c340db4d Mon Sep 17 00:00:00 2001
From: Marek Vasut <marex@denx.de>
Date: Thu, 14 Mar 2024 03:23:10 +0100
Subject: [PATCH] fix(cmake): generate versioned shared libraries
Add missing version suffix to shared libraries. Currently the filename of
generated shared libraries is only liblvgl.so, which prevents coexistence
of different versions of LVGL on the same system. Set VERSION and SOVERSION
to make cmake add the version suffix to generated shared libraries. That
changes the filename to liblvgl.so.9.1.0 and includes symlink with major
ABI version, i.e. liblvgl.so.9 .
Upstream-Status: Backport [2c469279f53f9dee63d71295c6058749bc87ce73]
Signed-off-by: Marek Vasut <marex@denx.de>
---
env_support/cmake/custom.cmake | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/env_support/cmake/custom.cmake b/env_support/cmake/custom.cmake
index 9800468eb..6f33f1cc8 100644
--- a/env_support/cmake/custom.cmake
+++ b/env_support/cmake/custom.cmake
@@ -1,3 +1,6 @@
+set(LVGL_VERSION "9.1.0")
+set(LVGL_SOVERSION "9")
+
# Option to define LV_LVGL_H_INCLUDE_SIMPLE, default: ON
option(LV_LVGL_H_INCLUDE_SIMPLE
"Use #include \"lvgl.h\" instead of #include \"../../lvgl.h\"" ON)
@@ -119,6 +122,8 @@ install(
set_target_properties(
lvgl
PROPERTIES OUTPUT_NAME lvgl
+ VERSION ${LVGL_VERSION}
+ SOVERSION ${LVGL_SOVERSION}
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
@@ -137,6 +142,8 @@ if(NOT LV_CONF_BUILD_DISABLE_THORVG_INTERNAL)
set_target_properties(
lvgl_thorvg
PROPERTIES OUTPUT_NAME lvgl_thorvg
+ VERSION ${LVGL_VERSION}
+ SOVERSION ${LVGL_SOVERSION}
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
@@ -155,6 +162,8 @@ if(NOT LV_CONF_BUILD_DISABLE_DEMOS)
set_target_properties(
lvgl_demos
PROPERTIES OUTPUT_NAME lvgl_demos
+ VERSION ${LVGL_VERSION}
+ SOVERSION ${LVGL_SOVERSION}
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
@@ -173,6 +182,8 @@ if(NOT LV_CONF_BUILD_DISABLE_EXAMPLES)
set_target_properties(
lvgl_examples
PROPERTIES OUTPUT_NAME lvgl_examples
+ VERSION ${LVGL_VERSION}
+ SOVERSION ${LVGL_SOVERSION}
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
--
2.43.0

View File

@ -1,29 +0,0 @@
From a6f822f75b3ba01b00c028608c93160d09a6ffd1 Mon Sep 17 00:00:00 2001
From: Jaeyoon Jung <jaeyoon.jung@lge.com>
Date: Mon, 1 Apr 2024 18:00:39 +0900
Subject: [PATCH] fix(fbdev): set resolution prior to buffer
Otherwise it ends up with using the default value 800x480 and may fail
at lv_display_set_buffers due to incorrect resolution.
Upstream-Status: Backport [29662d1c357c15135d076a2a924b9ef056c82120]
Signed-off-by: Jaeyoon Jung <jaeyoon.jung@lge.com>
---
src/drivers/display/fb/lv_linux_fbdev.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/drivers/display/fb/lv_linux_fbdev.c b/src/drivers/display/fb/lv_linux_fbdev.c
index b3cc89199..5fb4c5c9f 100644
--- a/src/drivers/display/fb/lv_linux_fbdev.c
+++ b/src/drivers/display/fb/lv_linux_fbdev.c
@@ -233,8 +233,8 @@ void lv_linux_fbdev_set_file(lv_display_t * disp, const char * file)
draw_buf_2 = malloc(draw_buf_size);
}
- lv_display_set_buffers(disp, draw_buf, draw_buf_2, draw_buf_size, LV_LINUX_FBDEV_RENDER_MODE);
lv_display_set_resolution(disp, hor_res, ver_res);
+ lv_display_set_buffers(disp, draw_buf, draw_buf_2, draw_buf_size, LV_LINUX_FBDEV_RENDER_MODE);
if(width > 0) {
lv_display_set_dpi(disp, DIV_ROUND_UP(hor_res * 254, width * 10));

View File

@ -33,10 +33,16 @@ LVGL_CONFIG_LV_USE_GRIDNAV = "${@bb.utils.contains('PACKAGECONFIG', 'gridnav', '
LVGL_CONFIG_LV_THEME_DEFAULT_DARK ?= "0"
LVGL_CONFIG_USE_LOTTIE = "${@bb.utils.contains('PACKAGECONFIG', 'thorvg', '1', '0', d)}"
LVGL_CONFIG_USE_VECTOR_GRAPHICS = "${@bb.utils.contains('PACKAGECONFIG', 'thorvg', '1', '0', d)}"
LVGL_CONFIG_USE_THORVG_INTERNAL = "${@bb.utils.contains('PACKAGECONFIG', 'thorvg', '1', '0', d)}"
LVGL_CONFIG_USE_MATRIX = "${@bb.utils.contains('PACKAGECONFIG', 'thorvg', '1', '0', d)}"
LVGL_CONFIG_USE_FLOAT = "${@bb.utils.contains('PACKAGECONFIG', 'thorvg', '1', '0', d)}"
DEBUG_BUILD ??= "0"
ALLOW_EMPTY:${PN} = "1"
@ -84,6 +90,9 @@ do_configure:append() {
\
-e "s|^([[:space:]]*#define LV_USE_VECTOR_GRAPHIC[[:space:]]).*|\1${LVGL_CONFIG_USE_VECTOR_GRAPHICS}|" \
-e "s|^([[:space:]]*#define LV_USE_THORVG_INTERNAL[[:space:]]).*|\1${LVGL_CONFIG_USE_THORVG_INTERNAL}|" \
-e "s|^([[:space:]]*#define LV_USE_MATRIX[[:space:]]).*|\1${LVGL_CONFIG_USE_MATRIX}|" \
-e "s|^([[:space:]]*#define LV_USE_FLOAT[[:space:]]).*|\1${LVGL_CONFIG_USE_FLOAT}|" \
\
-e "s|^([[:space:]]*#define LV_USE_LOTTIE[[:space:]]).*|\1${LVGL_CONFIG_USE_LOTTIE}|" \
-i "${S}/lv_conf.h"
}

View File

@ -5,18 +5,12 @@ 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 \
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 \
file://0007-fix-cmake-generate-versioned-shared-libraries.patch;patchdir=lvgl \
file://0008-fix-fbdev-set-resolution-prior-to-buffer.patch;patchdir=lvgl \
git://github.com/lvgl/lv_port_linux_frame_buffer.git;protocol=https;branch=release/v9.2;name=demo \
git://github.com/lvgl/lvgl;protocol=https;branch=release/v9.2;name=lvgl;subdir=git/lvgl \
file://0001-thorvg-fix-build-with-gcc-15.patch;patchdir=lvgl \
"
SRCREV_demo = "dccc6a1ca48372aa993dbea7a8e17dec6f42df6a"
SRCREV_lvgl = "e1c0b21b2723d391b885de4b2ee5cc997eccca91"
SRCREV_demo = "c924e24c7aa55317521bcd9dd75ce9337508f5a5"
SRCREV_lvgl = "7f07a129e8d77f4984fff8e623fd5be18ff42e74"
SRCREV_FORMAT = "demo_lvgl"
EXTRA_OEMAKE = "DESTDIR=${D}"

View File

@ -9,13 +9,10 @@ LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENCE.txt;md5=bf1198c89ae87f043108cea62460b03a"
SRC_URI = "\
git://github.com/lvgl/lvgl;protocol=https;branch=master \
file://0002-fix-sdl-handle-both-LV_IMAGE_SRC_FILE-and-LV_IMAGE_S.patch \
file://0007-fix-cmake-generate-versioned-shared-libraries.patch \
file://0008-fix-fbdev-set-resolution-prior-to-buffer.patch \
file://0001-thorvg-fix-build-with-gcc-15.patch \
git://github.com/lvgl/lvgl;protocol=https;branch=release/v9.2 \
file://0001-thorvg-fix-build-with-gcc-15.patch \
"
SRCREV = "e1c0b21b2723d391b885de4b2ee5cc997eccca91"
SRCREV = "7f07a129e8d77f4984fff8e623fd5be18ff42e74"
inherit cmake