diff --git a/env_support/cmsis-pack/LVGL.lvgl.9.0.0.pack b/env_support/cmsis-pack/LVGL.lvgl.9.0.0.pack
index 7e135aaf6..9637cc858 100644
Binary files a/env_support/cmsis-pack/LVGL.lvgl.9.0.0.pack and b/env_support/cmsis-pack/LVGL.lvgl.9.0.0.pack differ
diff --git a/env_support/cmsis-pack/LVGL.lvgl.pdsc b/env_support/cmsis-pack/LVGL.lvgl.pdsc
index 3ac9634f5..405afe616 100644
--- a/env_support/cmsis-pack/LVGL.lvgl.pdsc
+++ b/env_support/cmsis-pack/LVGL.lvgl.pdsc
@@ -36,7 +36,7 @@
https://github.com/lvgl/lvgl.git
-
+
- LVGL 9.0.0
- Implements a New Render Architecture that enables parallel processing
- Accelerates SW-Render with NEON and Helium technology for Cortex architectures.
diff --git a/env_support/cmsis-pack/LVGL.pidx b/env_support/cmsis-pack/LVGL.pidx
index c2be9c8cb..1c4605be1 100644
--- a/env_support/cmsis-pack/LVGL.pidx
+++ b/env_support/cmsis-pack/LVGL.pidx
@@ -2,7 +2,7 @@
LVGL
https://raw.githubusercontent.com/lvgl/lvgl/master/env_support/cmsis-pack/
- 2024-01-22
+ 2024-01-24
diff --git a/env_support/cmsis-pack/lv_conf_cmsis.h b/env_support/cmsis-pack/lv_conf_cmsis.h
index 08f085b30..bd45694ec 100644
--- a/env_support/cmsis-pack/lv_conf_cmsis.h
+++ b/env_support/cmsis-pack/lv_conf_cmsis.h
@@ -166,6 +166,9 @@
/* Enable VG-Lite assert. */
#define LV_VG_LITE_USE_ASSERT 0
+/* VG-Lite flush commit trigger threshold. GPU will try to batch these many draw tasks. */
+#define LV_VG_LITE_FLUSH_MAX_COUNT 8
+
#endif
/*=======================
diff --git a/src/draw/sw/arm2d/lv_draw_sw_arm2d.h b/src/draw/sw/arm2d/lv_draw_sw_arm2d.h
index 62445ee22..3f16382f7 100644
--- a/src/draw/sw/arm2d/lv_draw_sw_arm2d.h
+++ b/src/draw/sw/arm2d/lv_draw_sw_arm2d.h
@@ -200,11 +200,19 @@ static inline lv_result_t _lv_draw_sw_image_helium(
|| (LV_COLOR_FORMAT_RGB565A8 == src_cf))) {
break;
}
+ #if 0 /* a temporary patch */
if((LV_COLOR_FORMAT_XRGB8888 == des_cf)
&& !( (LV_COLOR_FORMAT_ARGB8888 == src_cf)
|| (LV_COLOR_FORMAT_XRGB8888 == src_cf))) {
break;
}
+ #else
+ if((LV_COLOR_FORMAT_XRGB8888 == des_cf)
+ || (LV_COLOR_FORMAT_RGB888 == des_cf)
+ || (LV_COLOR_FORMAT_ARGB8888 == des_cf)) {
+ break;
+ }
+ #endif
/* ------------- prepare parameters for arm-2d APIs - BEGIN --------- */
@@ -399,6 +407,7 @@ static inline lv_result_t _lv_draw_sw_image_helium(
LV_ASSERT(LV_COLOR_FORMAT_RGB565 == des_cf);
if(opa >= LV_OPA_MAX) {
+ #if ARM_2D_VERSION >= 10106
arm_2d_rgb565_tile_transform_only(
&source_tile,
&target_tile,
@@ -406,8 +415,21 @@ static inline lv_result_t _lv_draw_sw_image_helium(
source_center,
ARM_2D_ANGLE((draw_dsc->rotation / 10.0f)),
draw_dsc->scale_x / 256.0f,
- &target_center
- );
+ &target_center);
+ #else
+
+ arm_2dp_rgb565_tile_transform_only_prepare(
+ NULL,
+ &source_tile,
+ source_center,
+ ARM_2D_ANGLE((draw_dsc->rotation / 10.0f)),
+ (float)(draw_dsc->scale_x / 256.0f));
+
+ arm_2dp_tile_transform(NULL,
+ &target_tile,
+ NULL,
+ &target_center);
+ #endif
}
else {
arm_2d_rgb565_tile_transform_only_with_opacity(
@@ -423,6 +445,7 @@ static inline lv_result_t _lv_draw_sw_image_helium(
}
}
+ #if 0 /* a temporary patch */
else if(LV_COLOR_FORMAT_ARGB8888 == src_cf) {
LV_ASSERT(LV_COLOR_FORMAT_XRGB8888 == des_cf);
@@ -488,6 +511,7 @@ static inline lv_result_t _lv_draw_sw_image_helium(
}
}
+ #endif
else {
break;
}