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;