diff --git a/demos/benchmark/lv_demo_benchmark.c b/demos/benchmark/lv_demo_benchmark.c index 158ea7b1c1..28eef8490a 100644 --- a/demos/benchmark/lv_demo_benchmark.c +++ b/demos/benchmark/lv_demo_benchmark.c @@ -692,7 +692,7 @@ void lv_demo_benchmark_run_scene(int_fast16_t scene_no) } -void lv_demo_benchmark_set_finished_cb(finished_cb_t * finished_cb); +void lv_demo_benchmark_set_finished_cb(finished_cb_t * finished_cb) { benchmark_finished_cb = finished_cb; } diff --git a/env_support/cmsis-pack/LVGL.lvgl.1.0.3.pack b/env_support/cmsis-pack/LVGL.lvgl.1.0.4-alpha5.pack similarity index 91% rename from env_support/cmsis-pack/LVGL.lvgl.1.0.3.pack rename to env_support/cmsis-pack/LVGL.lvgl.1.0.4-alpha5.pack index d0feb6e145..a80eb000f1 100644 Binary files a/env_support/cmsis-pack/LVGL.lvgl.1.0.3.pack and b/env_support/cmsis-pack/LVGL.lvgl.1.0.4-alpha5.pack differ diff --git a/env_support/cmsis-pack/LVGL.lvgl.pdsc b/env_support/cmsis-pack/LVGL.lvgl.pdsc index 20c85f3c1b..4d0795c5c9 100644 --- a/env_support/cmsis-pack/LVGL.lvgl.pdsc +++ b/env_support/cmsis-pack/LVGL.lvgl.pdsc @@ -36,7 +36,15 @@ https://github.com/lvgl/lvgl.git - + + - LVGL 8.3.0-dev + - Monthly update for May + - Update drawing service + - Update GPU support for Arm-2D library + - Improving the methodology used in the benchmark. + - Add new colour support for RGB565A8 + + - LVGL 8.3.0-dev - Monthly update for April - Add GPU support for SWM341-DMA2D diff --git a/env_support/cmsis-pack/LVGL.pidx b/env_support/cmsis-pack/LVGL.pidx index ba6df4baae..64de61672c 100644 --- a/env_support/cmsis-pack/LVGL.pidx +++ b/env_support/cmsis-pack/LVGL.pidx @@ -2,8 +2,8 @@ LVGL https://raw.githubusercontent.com/lvgl/lvgl/master/env_support/cmsis-pack/ - 2022-04-27T00:49:00 + 2022-05-16T00:17:29 - + \ No newline at end of file diff --git a/env_support/cmsis-pack/README.md b/env_support/cmsis-pack/README.md index d0a4fdfa83..2d476463a3 100644 --- a/env_support/cmsis-pack/README.md +++ b/env_support/cmsis-pack/README.md @@ -44,11 +44,13 @@ remove the misleading guide above this code segment. - LV_USE_GPU_NXP_PXP - LV_USE_GPU_NXP_VG_LITE - LV_USE_GPU_SWM341_DMA2D + - LV_USE_GPU_ARM2D 5. Update macro `LV_ATTRIBUTE_MEM_ALIGN` and `LV_ATTRIBUTE_MEM_ALIGN_SIZE` to force a WORD alignment. ```c #define LV_ATTRIBUTE_MEM_ALIGN_SIZE 4 #define LV_ATTRIBUTE_MEM_ALIGN __attribute__((aligned(4))) ``` +Update macro `LV_MEM_SIZE` to `(64*1024U)`. 6. Update Theme related macros: ```c diff --git a/env_support/cmsis-pack/lv_conf_cmsis.h b/env_support/cmsis-pack/lv_conf_cmsis.h index c87ede0c3c..de4e89fdd3 100644 --- a/env_support/cmsis-pack/lv_conf_cmsis.h +++ b/env_support/cmsis-pack/lv_conf_cmsis.h @@ -42,14 +42,14 @@ #define LV_MEM_CUSTOM 0 #if LV_MEM_CUSTOM == 0 /*Size of the memory available for `lv_mem_alloc()` in bytes (>= 2kB)*/ - #define LV_MEM_SIZE (48U * 1024U) /*[bytes]*/ + #define LV_MEM_SIZE (64U * 1024U) /*[bytes]*/ /*Set an address for the memory pool instead of allocating it as a normal array. Can be in external SRAM too.*/ #define LV_MEM_ADR 0 /*0: unused*/ /*Instead of an address give a memory allocator that will be called to get a memory pool for LVGL. E.g. my_malloc*/ #if LV_MEM_ADR == 0 - //#define LV_MEM_POOL_INCLUDE your_alloc_library /* Uncomment if using an external allocator*/ - //#define LV_MEM_POOL_ALLOC your_alloc /* Uncomment if using an external allocator*/ + #undef LV_MEM_POOL_INCLUDE + #undef LV_MEM_POOL_ALLOC #endif #else /*LV_MEM_CUSTOM*/ @@ -142,36 +142,36 @@ * "Transformed layers" (where transform_angle/zoom properties are used) use larger buffers * and can't be drawn in chunks. So these settings affects only widgets with opacity. */ -#define LV_LAYER_SIMPLE_BUF_SIZE (24 * 1024) -#define LV_LAYER_SIMPLE_FALLBACK_BUF_SIZE LV_MAX(lv_area_get_width(&draw_area) * px_size, 2048) +#define LV_LAYER_SIMPLE_BUF_SIZE (24 * 1024) +#define LV_LAYER_SIMPLE_FALLBACK_BUF_SIZE LV_MAX(lv_area_get_width(&draw_area) * px_size, 2048) /*Default image cache size. Image caching keeps the images opened. *If only the built-in image formats are used there is no real advantage of caching. (I.e. if no new image decoder is added) *With complex image decoders (e.g. PNG or JPG) caching can save the continuous open/decode of images. *However the opened images might consume additional RAM. *0: to disable caching*/ -#define LV_IMG_CACHE_DEF_SIZE 0 +#define LV_IMG_CACHE_DEF_SIZE 0 /*Number of stops allowed per gradient. Increase this to allow more stops. *This adds (sizeof(lv_color_t) + 1) bytes per additional stop*/ -#define LV_GRADIENT_MAX_STOPS 2 +#define LV_GRADIENT_MAX_STOPS 2 /*Default gradient buffer size. *When LVGL calculates the gradient "maps" it can save them into a cache to avoid calculating them again. *LV_GRAD_CACHE_DEF_SIZE sets the size of this cache in bytes. *If the cache is too small the map will be allocated only while it's required for the drawing. *0 mean no caching.*/ -#define LV_GRAD_CACHE_DEF_SIZE 0 +#define LV_GRAD_CACHE_DEF_SIZE 0 /*Allow dithering the gradients (to achieve visual smooth color gradients on limited color depth display) *LV_DITHER_GRADIENT implies allocating one or two more lines of the object's rendering surface *The increase in memory consumption is (32 bits * object width) plus 24 bits * object width if using error diffusion */ -#define LV_DITHER_GRADIENT 0 +#define LV_DITHER_GRADIENT 0 #if LV_DITHER_GRADIENT /*Add support for error diffusion dithering. *Error diffusion dithering gets a much better visual result, but implies more CPU consumption and memory when drawing. *The increase in memory consumption is (24 bits * object's width)*/ - #define LV_DITHER_ERROR_DIFFUSION 0 + #define LV_DITHER_ERROR_DIFFUSION 0 #endif /*Maximum buffer size to allocate for rotation. @@ -182,7 +182,6 @@ * GPU *-----------*/ - /*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 @@ -205,7 +204,6 @@ #define LV_USE_GPU_NXP_PXP_AUTO_INIT 0 #endif - /*Use SDL renderer API*/ #define LV_USE_GPU_SDL 0 #if LV_USE_GPU_SDL @@ -321,11 +319,11 @@ #define LV_ATTRIBUTE_FLUSH_READY /*Required alignment size for buffers*/ -#define LV_ATTRIBUTE_MEM_ALIGN_SIZE 4 +#define LV_ATTRIBUTE_MEM_ALIGN_SIZE 4 /*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 @@ -461,8 +459,6 @@ #define LV_USE_ARC 1 -#define LV_USE_ANIMIMG 1 - #define LV_USE_BAR 1 #define LV_USE_BTN 1 @@ -508,6 +504,8 @@ /*----------- * Widgets *----------*/ +#define LV_USE_ANIMIMG 1 + #define LV_USE_CALENDAR 1 #if LV_USE_CALENDAR #define LV_CALENDAR_WEEK_STARTS_MONDAY 0 @@ -540,6 +538,12 @@ #define LV_USE_MSGBOX 1 +#define LV_USE_SPAN 1 +#if LV_USE_SPAN + /*A line text can contain maximum num of span descriptor */ + #define LV_SPAN_SNIPPET_STACK_SIZE 64 +#endif + #define LV_USE_SPINBOX 1 #define LV_USE_SPINNER 1 @@ -550,12 +554,6 @@ #define LV_USE_WIN 1 -#define LV_USE_SPAN 1 -#if LV_USE_SPAN - /*A line text can contain maximum num of span descriptor */ - #define LV_SPAN_SNIPPET_STACK_SIZE 64 -#endif - /*----------- * Themes *----------*/ @@ -604,10 +602,10 @@ #define LV_USE_SNAPSHOT 0 /*1: Enable Monkey test*/ -#define LV_USE_MONKEY 0 +#define LV_USE_MONKEY 0 /*1: Enable grid navigation*/ -#define LV_USE_GRIDNAV 0 +#define LV_USE_GRIDNAV 0 /*1: Enable lv_obj fragment*/ #define LV_USE_FRAGMENT 0 @@ -625,6 +623,7 @@ /*Enable the examples to be built with the library*/ #define LV_BUILD_EXAMPLES 1 + /*--END OF LV_CONF_H--*/ #endif /*LV_CONF_H*/ diff --git a/src/draw/arm2d/lv_gpu_arm2d.c b/src/draw/arm2d/lv_gpu_arm2d.c index 02d50827fa..96599436e5 100644 --- a/src/draw/arm2d/lv_gpu_arm2d.c +++ b/src/draw/arm2d/lv_gpu_arm2d.c @@ -868,6 +868,19 @@ static void lv_draw_arm2d_img_decoded(struct _lv_draw_ctx_t * draw_ctx, blend_dsc.blend_area = coords; lv_draw_sw_blend(draw_ctx, &blend_dsc); } +#if LV_COLOR_DEPTH == 16 + else if(!mask_any && !transform && cf == LV_IMG_CF_RGB565A8 && draw_dsc->recolor_opa == LV_OPA_TRANSP) { + lv_coord_t src_w = lv_area_get_width(coords); + lv_coord_t src_h = lv_area_get_height(coords); + blend_dsc.src_buf = (const lv_color_t *)src_buf; + blend_dsc.mask_buf = (lv_opa_t *)src_buf; + blend_dsc.mask_buf += sizeof(lv_color_t) * src_w * src_h; + blend_dsc.blend_area = coords; + blend_dsc.mask_area = coords; + blend_dsc.mask_res = LV_DRAW_MASK_RES_CHANGED; + lv_draw_sw_blend(draw_ctx, &blend_dsc); + } +#endif /*In the other cases every pixel need to be checked one-by-one*/ else { blend_area.x1 = draw_ctx->clip_area->x1; diff --git a/src/draw/sw/lv_draw_sw_img.c b/src/draw/sw/lv_draw_sw_img.c index b9ed267e0d..faa23776b9 100644 --- a/src/draw/sw/lv_draw_sw_img.c +++ b/src/draw/sw/lv_draw_sw_img.c @@ -85,7 +85,7 @@ LV_ATTRIBUTE_FAST_MEM void lv_draw_sw_img_decoded(struct _lv_draw_ctx_t * draw_c lv_coord_t src_w = lv_area_get_width(coords); lv_coord_t src_h = lv_area_get_height(coords); blend_dsc.src_buf = (const lv_color_t *)src_buf; - blend_dsc.mask_buf = (const void *)src_buf; + blend_dsc.mask_buf = (lv_opa_t *)src_buf; blend_dsc.mask_buf += sizeof(lv_color_t) * src_w * src_h; blend_dsc.blend_area = coords; blend_dsc.mask_area = coords;