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;