diff --git a/env_support/cmsis-pack/LVGL.lvgl.9.0.0-dev.pack b/env_support/cmsis-pack/LVGL.lvgl.9.0.0-dev.pack
index dc2b621be..bd2c75999 100644
Binary files a/env_support/cmsis-pack/LVGL.lvgl.9.0.0-dev.pack and b/env_support/cmsis-pack/LVGL.lvgl.9.0.0-dev.pack differ
diff --git a/env_support/cmsis-pack/LVGL.lvgl.pdsc b/env_support/cmsis-pack/LVGL.lvgl.pdsc
index f4e79a68f..84299a15e 100644
--- a/env_support/cmsis-pack/LVGL.lvgl.pdsc
+++ b/env_support/cmsis-pack/LVGL.lvgl.pdsc
@@ -36,7 +36,11 @@
https://github.com/lvgl/lvgl.git
-
+
+ - LVGL 8.3.7 release
+ - Various fixes
+
+
- LVGL 8.3.6 release
- Various fixes
@@ -45,7 +49,7 @@
- New Driver Architecture
- Other fixes
-
+
- LVGL 8.3.5 release
- Use LVGL version as the cmsis-pack version
- Fix GPU support for NXP PXP and NXP VGLite
@@ -404,6 +408,7 @@
+
@@ -430,6 +435,7 @@
+
@@ -867,11 +873,10 @@
- Add Pinyin input method
+ Add a file explorer
-
@@ -883,11 +888,10 @@
- Add tiny ttf support
+ Add the Tiny TTF support
-
diff --git a/env_support/cmsis-pack/LVGL.pidx b/env_support/cmsis-pack/LVGL.pidx
index 3d7b6215b..b9c542b13 100644
--- a/env_support/cmsis-pack/LVGL.pidx
+++ b/env_support/cmsis-pack/LVGL.pidx
@@ -4,6 +4,6 @@
https://raw.githubusercontent.com/lvgl/lvgl/master/env_support/cmsis-pack/
2023-03-03T12:22:00
-
+
diff --git a/env_support/cmsis-pack/README.md b/env_support/cmsis-pack/README.md
index 691e6657e..8d8d30553 100644
--- a/env_support/cmsis-pack/README.md
+++ b/env_support/cmsis-pack/README.md
@@ -42,6 +42,7 @@ remove the misleading guide above this code segment.
4. Update `LV_STDIO_INCLUDE` and `LV_STRING_INCLUDE`
```c
+ #define LV_STDLIB_INCLUDE
#define LV_STDIO_INCLUDE
#define LV_STRING_INCLUDE
```
@@ -61,7 +62,7 @@ remove the misleading guide above this code segment.
- LV_USE_IME_PINYIN
- LV_USE_FILE_EXPLORER
-6. Update `LV_LOG_PRINTF` to `1`
+6. Update `LV_LOG_PRINTF` to `1` and `LV_LOG_LEVEL` to `LV_LOG_LEVEL_USER`
7. Update `LV_DEMO_BENCHMARK_RGB565A8` to `1`
@@ -121,6 +122,9 @@ Make sure `LV_MEM_SIZE` is no less than `(64*1024U)`.
#if LV_TICK_CUSTOM
#define LV_TICK_CUSTOM_INCLUDE "Arduino.h" /*Header for the system time function*/
#define LV_TICK_CUSTOM_SYS_TIME_EXPR (millis()) /*Expression evaluating to current system time in ms*/
+ /*If using lvgl as ESP32 component*/
+ // #define LV_TICK_CUSTOM_INCLUDE "esp_timer.h"
+ // #define LV_TICK_CUSTOM_SYS_TIME_EXPR ((esp_timer_get_time() / 1000LL))
#endif /*LV_TICK_CUSTOM*/
#endif /*__PERF_COUNTER__*/
```
diff --git a/env_support/cmsis-pack/lv_conf_cmsis.h b/env_support/cmsis-pack/lv_conf_cmsis.h
index 5725d529a..c40f3130e 100644
--- a/env_support/cmsis-pack/lv_conf_cmsis.h
+++ b/env_support/cmsis-pack/lv_conf_cmsis.h
@@ -16,7 +16,7 @@
COLOR SETTINGS
*====================*/
-/*Color depth: 1 (1 byte per pixel), 8 (RGB332), 16 (RGB565), 32 (ARGB8888)*/
+/*Color depth: 1 (1 byte per pixel), 8 (RGB332), 16 (RGB565), 24 (RGB888), 32 (ARGB8888)*/
#define LV_COLOR_DEPTH 16
#define LV_COLOR_CHROMA_KEY lv_color_hex(0x00ff00)
@@ -43,7 +43,7 @@
#endif
#endif /*LV_USE_BUILTIN_MALLOC*/
-/*Enable lv_memcpy_builtin, lv_memset_builtin, lv_strlen_builtin, lv_strncpy_builtin*/
+/*Enable lv_memcpy_builtin, lv_memset_builtin, lv_strlen_builtin, lv_strncpy_builtin, lv_strcpy_builtin*/
#define LV_USE_BUILTIN_MEMCPY 1
/*Enable and configure the built-in (v)snprintf */
@@ -52,7 +52,7 @@
#define LV_SPRINTF_USE_FLOAT 0
#endif /*LV_USE_BUILTIN_SNPRINTF*/
-#define LV_STDLIB_INCLUDE
+#define LV_STDLIB_INCLUDE
#define LV_STDIO_INCLUDE
#define LV_STRING_INCLUDE
#define LV_MALLOC lv_malloc_builtin
@@ -64,6 +64,7 @@
#define LV_VSNPRINTF lv_vsnprintf_builtin
#define LV_STRLEN lv_strlen_builtin
#define LV_STRNCPY lv_strncpy_builtin
+#define LV_STRCPY lv_strcpy_builtin
#define LV_COLOR_EXTERN_INCLUDE
#define LV_COLOR_MIX lv_color_mix
@@ -91,6 +92,9 @@
#if LV_TICK_CUSTOM
#define LV_TICK_CUSTOM_INCLUDE "Arduino.h" /*Header for the system time function*/
#define LV_TICK_CUSTOM_SYS_TIME_EXPR (millis()) /*Expression evaluating to current system time in ms*/
+ /*If using lvgl as ESP32 component*/
+ // #define LV_TICK_CUSTOM_INCLUDE "esp_timer.h"
+ // #define LV_TICK_CUSTOM_SYS_TIME_EXPR ((esp_timer_get_time() / 1000LL))
#endif /*LV_TICK_CUSTOM*/
#endif /*__PERF_COUNTER__*/
@@ -161,20 +165,11 @@
#endif
#endif
-/*Use SDL renderer API*/
-#define LV_USE_DRAW_SDL 0
-#if LV_USE_DRAW_SDL
- #define LV_DRAW_SDL_INCLUDE_PATH
- /*Texture cache size, 8MB by default*/
- #define LV_DRAW_SDL_LRU_SIZE (1024 * 1024 * 8)
- /*Custom blend mode for mask drawing, disable if you need to link with older SDL2 lib*/
- #define LV_DRAW_SDL_CUSTOM_BLEND_MODE (SDL_VERSION_ATLEAST(2, 0, 6))
-#endif
-
/*=====================
* GPU CONFIGURATION
*=====================*/
+
/*Use STM32's DMA2D (aka Chrom Art) GPU*/
#if LV_USE_GPU_STM32_DMA2D
/*Must be defined to include path of CMSIS header of target processor
@@ -259,14 +254,19 @@
* Others
*-----------*/
-/*1: Show CPU usage and FPS count*/
+/*1: Show CPU usage and FPS count
+ * Requires `LV_USE_SYSMON = 1`*/
#define LV_USE_PERF_MONITOR 0
#if LV_USE_PERF_MONITOR
#define LV_USE_PERF_MONITOR_POS LV_ALIGN_BOTTOM_RIGHT
+
+ /*0: Displays performance data on the screen, 1: Prints performance data using log.*/
+ #define LV_USE_PERF_MONITOR_LOG_MODE 0
#endif
/*1: Show the used memory and the memory fragmentation
- * Requires `LV_USE_BUILTIN_MALLOC = 1`*/
+ * Requires `LV_USE_BUILTIN_MALLOC = 1`
+ * Requires `LV_USE_SYSMON = 1`*/
#define LV_USE_MEM_MONITOR 0
#if LV_USE_MEM_MONITOR
#define LV_USE_MEM_MONITOR_POS LV_ALIGN_BOTTOM_LEFT
@@ -323,7 +323,7 @@
/*Will be added where memories needs to be aligned (with -Os data might not be aligned to boundary by default).
* E.g. __attribute__((aligned(4)))*/
-#define LV_ATTRIBUTE_MEM_ALIGN __attribute__((aligned(4)))
+#define LV_ATTRIBUTE_MEM_ALIGN __attribute__((aligned(4)))
/*Attribute to mark large constant arrays for example font's bitmaps*/
#define LV_ATTRIBUTE_LARGE_CONST
@@ -611,6 +611,7 @@
#define LV_FS_FATFS_CACHE_SIZE 0 /*>0 to cache this number of bytes in lv_fs_read()*/
#endif
+
/*FreeType library*/
#if LV_USE_FREETYPE
/*Memory used by FreeType to cache characters [bytes]*/
@@ -636,6 +637,7 @@
#define LV_TINY_TTF_FILE_SUPPORT 0
#endif
+
/*FFmpeg library for image decoding and playing videos
*Supports all major image formats so do not enable other image decoder with it*/
#if LV_USE_FFMPEG
@@ -650,6 +652,29 @@
/*1: Enable API to take snapshot for object*/
#define LV_USE_SNAPSHOT 0
+/*1: Enable system monitor component*/
+#define LV_USE_SYSMON 0
+
+/*1: Enable the runtime performance profiler*/
+#define LV_USE_PROFILER 0
+#if LV_USE_PROFILER
+ /*1: Enable the built-in profiler*/
+ #define LV_USE_PROFILER_BUILTIN 1
+ #if LV_USE_PROFILER_BUILTIN
+ /*Default profiler trace buffer size*/
+ #define LV_PROFILER_BUILTIN_BUF_SIZE (16 * 1024) /*[bytes]*/
+ #endif
+
+ /*Header to include for the profiler*/
+ #define LV_PROFILER_INCLUDE "lvgl/src/misc/lv_profiler_builtin.h"
+
+ /*Profiler start point function*/
+ #define LV_PROFILER_BEGIN LV_PROFILER_BUILTIN_BEGIN
+
+ /*Profiler end point function*/
+ #define LV_PROFILER_END LV_PROFILER_BUILTIN_END
+#endif
+
/*1: Enable Monkey test*/
#define LV_USE_MONKEY 0
@@ -699,6 +724,23 @@
#define LV_FILE_EXPLORER_QUICK_ACCESS 1
#endif
+/*==================
+ * DEVICES
+ *==================*/
+
+/*Use SDL to open window on PC and handle mouse and keyboard*/
+#if LV_USE_SDL
+ #define LV_SDL_INCLUDE_PATH
+ #define LV_SDL_PARTIAL_MODE 0 /*Recommended only to emulate a setup with a display controller*/
+ #define LV_SDL_FULLSCREEN 0
+ #define LV_SDL_DIRECT_EXIT 1 /*1: Exit the application when all SDL widows are closed*/
+#endif
+
+/*Driver for /dev/fb*/
+#if LV_USE_LINUX_FBDEV
+ #define LV_LINUX_FBDEV_BSD 0
+#endif
+
/*==================
* EXAMPLES
*==================*/
diff --git a/src/draw/arm2d/lv_gpu_arm2d.c b/src/draw/arm2d/lv_gpu_arm2d.c
index 3b7afcffe..c719e5bad 100644
--- a/src/draw/arm2d/lv_gpu_arm2d.c
+++ b/src/draw/arm2d/lv_gpu_arm2d.c
@@ -3,6 +3,24 @@
*
*/
+/*
+ * Copyright (C) 2010-2023 Arm Limited or its affiliates. All rights reserved.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the License); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
/*********************
* INCLUDES
*********************/
@@ -97,6 +115,8 @@
arm_2dp_rgb565_tile_transform_with_src_mask_and_opacity_prepare
#define arm_2d_tile_transform_with_opacity_prepare \
arm_2dp_rgb565_tile_transform_with_opacity_prepare
+#define arm_2d_tile_transform_only_with_opacity_prepare \
+ arm_2dp_rgb565_tile_transform_only_with_opacity_prepare
#define arm_2d_tile_transform_prepare \
arm_2dp_rgb565_tile_transform_prepare
@@ -134,6 +154,8 @@
arm_2dp_cccn888_tile_transform_with_src_mask_and_opacity_prepare
#define arm_2d_tile_transform_with_opacity_prepare \
arm_2dp_cccn888_tile_transform_with_opacity_prepare
+#define arm_2d_tile_transform_only_with_opacity_prepare \
+ arm_2dp_cccn888_tile_transform_only_with_opacity_prepare
#define arm_2d_tile_transform_prepare \
arm_2dp_cccn888_tile_transform_prepare
@@ -1093,6 +1115,24 @@ static void lv_draw_arm2d_img_decoded(struct _lv_draw_ctx_t * draw_ctx,
);
is_accelerated = true;
}
+ #if ARM_2D_VERISON >= 10103
+ else if (LV_COLOR_FORMAT_NATIVE == cf) {
+ __ARM_2D_PREPARE_TRANS_AND_TARGET_REGION(
+ arm_2d_tile_transform_only_with_opacity_prepare,
+ &source_tile,
+ source_center,
+ ARM_2D_ANGLE((draw_dsc->angle / 10.0f)),
+ draw_dsc->zoom / 256.0f,
+ blend_dsc.opa);
+
+ arm_2d_tile_transform(
+ &target_tile,
+ &target_region,
+ NULL
+ );
+ is_accelerated = true;
+ }
+ #endif
else if(LV_COLOR_FORMAT_RGB565A8 == cf) {
static arm_2d_tile_t mask_tile;
mask_tile = source_tile;