mirror of
https://github.com/lvgl/lvgl.git
synced 2026-06-01 00:51:49 +08:00
fix(draw): remove LV_LAYER_MAX_MEMORY_USAGE (#4809)
Signed-off-by: YanXiaowei <yanxiaowei@xiaomi.com> Co-authored-by: YanXiaowei <yanxiaowei@xiaomi.com>
This commit is contained in:
@@ -80,9 +80,6 @@
|
|||||||
/*Align the start address of draw_buf addresses to this bytes*/
|
/*Align the start address of draw_buf addresses to this bytes*/
|
||||||
#define LV_DRAW_BUF_ALIGN 4
|
#define LV_DRAW_BUF_ALIGN 4
|
||||||
|
|
||||||
/* Max. memory to be used for layers */
|
|
||||||
#define LV_LAYER_MAX_MEMORY_USAGE 150 /*[kB]*/
|
|
||||||
|
|
||||||
#define LV_USE_DRAW_SW 1
|
#define LV_USE_DRAW_SW 1
|
||||||
#if LV_USE_DRAW_SW == 1
|
#if LV_USE_DRAW_SW == 1
|
||||||
/* Set the number of draw unit.
|
/* Set the number of draw unit.
|
||||||
|
|||||||
@@ -174,12 +174,6 @@ menu "LVGL configuration"
|
|||||||
help
|
help
|
||||||
Align the start address of draw_buf addresses to this bytes.
|
Align the start address of draw_buf addresses to this bytes.
|
||||||
|
|
||||||
config LV_LAYER_MAX_MEMORY_USAGE
|
|
||||||
int "Max layer memory usage(kB)"
|
|
||||||
default 150
|
|
||||||
help
|
|
||||||
Max. memory to be used for layers.
|
|
||||||
|
|
||||||
config LV_USE_OS
|
config LV_USE_OS
|
||||||
int "Default operating system to use"
|
int "Default operating system to use"
|
||||||
default 0
|
default 0
|
||||||
|
|||||||
@@ -79,9 +79,6 @@
|
|||||||
/*Align the start address of draw_buf addresses to this bytes*/
|
/*Align the start address of draw_buf addresses to this bytes*/
|
||||||
#define LV_DRAW_BUF_ALIGN 4
|
#define LV_DRAW_BUF_ALIGN 4
|
||||||
|
|
||||||
/* Max. memory to be used for layers */
|
|
||||||
#define LV_LAYER_MAX_MEMORY_USAGE 150 /*[kB]*/
|
|
||||||
|
|
||||||
#define LV_USE_DRAW_SW 1
|
#define LV_USE_DRAW_SW 1
|
||||||
#if LV_USE_DRAW_SW == 1
|
#if LV_USE_DRAW_SW == 1
|
||||||
/* Set the number of draw unit.
|
/* Set the number of draw unit.
|
||||||
|
|||||||
+13
-25
@@ -27,6 +27,10 @@
|
|||||||
**********************/
|
**********************/
|
||||||
static bool is_independent(lv_layer_t * layer, lv_draw_task_t * t_check);
|
static bool is_independent(lv_layer_t * layer, lv_draw_task_t * t_check);
|
||||||
|
|
||||||
|
static inline uint32_t get_layer_size_kb(uint32_t size_byte)
|
||||||
|
{
|
||||||
|
return size_byte < 1024 ? 1 : size_byte >> 10;
|
||||||
|
}
|
||||||
/**********************
|
/**********************
|
||||||
* STATIC VARIABLES
|
* STATIC VARIABLES
|
||||||
**********************/
|
**********************/
|
||||||
@@ -155,7 +159,6 @@ void lv_draw_dispatch(void)
|
|||||||
render_running = true;
|
render_running = true;
|
||||||
layer = layer->next;
|
layer = layer->next;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!render_running) {
|
if(!render_running) {
|
||||||
lv_draw_dispatch_request();
|
lv_draw_dispatch_request();
|
||||||
}
|
}
|
||||||
@@ -185,7 +188,7 @@ bool lv_draw_dispatch_layer(struct _lv_display_t * disp, lv_layer_t * layer)
|
|||||||
int32_t w = lv_area_get_width(&layer_drawn->buf_area);
|
int32_t w = lv_area_get_width(&layer_drawn->buf_area);
|
||||||
uint32_t layer_size_byte = h * lv_draw_buf_width_to_stride(w, layer_drawn->color_format);
|
uint32_t layer_size_byte = h * lv_draw_buf_width_to_stride(w, layer_drawn->color_format);
|
||||||
|
|
||||||
_draw_info.used_memory_for_layers_kb -= layer_size_byte < 1024 ? 1 : layer_size_byte >> 10;
|
_draw_info.used_memory_for_layers_kb -= get_layer_size_kb(layer_size_byte);
|
||||||
LV_LOG_INFO("Layer memory used: %" LV_PRIu32 " kB\n", _draw_info.used_memory_for_layers_kb);
|
LV_LOG_INFO("Layer memory used: %" LV_PRIu32 " kB\n", _draw_info.used_memory_for_layers_kb);
|
||||||
lv_draw_buf_free(layer_drawn->buf_unaligned);
|
lv_draw_buf_free(layer_drawn->buf_unaligned);
|
||||||
}
|
}
|
||||||
@@ -242,27 +245,13 @@ bool lv_draw_dispatch_layer(struct _lv_display_t * disp, lv_layer_t * layer)
|
|||||||
}
|
}
|
||||||
/*Assign draw tasks to the draw_units*/
|
/*Assign draw tasks to the draw_units*/
|
||||||
else {
|
else {
|
||||||
bool layer_ok = true;
|
/*Find a draw unit which is not busy and can take at least one task*/
|
||||||
if(layer->buf == NULL) {
|
/*Let all draw units to pick draw tasks*/
|
||||||
int32_t h = lv_area_get_height(&layer->buf_area);
|
lv_draw_unit_t * u = _draw_info.unit_head;
|
||||||
int32_t w = lv_area_get_width(&layer->buf_area);
|
while(u) {
|
||||||
uint32_t layer_size_byte = h * lv_draw_buf_width_to_stride(w, layer->color_format);
|
int32_t taken_cnt = u->dispatch_cb(u, layer);
|
||||||
|
if(taken_cnt >= 0) render_running = true;
|
||||||
uint32_t kb = layer_size_byte < 1024 ? 1 : layer_size_byte >> 10;
|
u = u->next;
|
||||||
if(_draw_info.used_memory_for_layers_kb + kb > LV_LAYER_MAX_MEMORY_USAGE) {
|
|
||||||
layer_ok = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(layer_ok) {
|
|
||||||
/*Find a draw unit which is not busy and can take at least one task*/
|
|
||||||
/*Let all draw units to pick draw tasks*/
|
|
||||||
lv_draw_unit_t * u = _draw_info.unit_head;
|
|
||||||
while(u) {
|
|
||||||
int32_t taken_cnt = u->dispatch_cb(u, layer);
|
|
||||||
if(taken_cnt >= 0) render_running = true;
|
|
||||||
u = u->next;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -363,8 +352,7 @@ void * lv_draw_layer_alloc_buf(lv_layer_t * layer)
|
|||||||
|
|
||||||
layer->buf = lv_draw_buf_align(layer->buf_unaligned, layer->color_format);
|
layer->buf = lv_draw_buf_align(layer->buf_unaligned, layer->color_format);
|
||||||
|
|
||||||
uint32_t kb = layer_size_byte < 1024 ? 1 : layer_size_byte >> 10;
|
_draw_info.used_memory_for_layers_kb += get_layer_size_kb(layer_size_byte);
|
||||||
_draw_info.used_memory_for_layers_kb += kb;
|
|
||||||
LV_LOG_INFO("Layer memory used: %" LV_PRIu32 " kB\n", _draw_info.used_memory_for_layers_kb);
|
LV_LOG_INFO("Layer memory used: %" LV_PRIu32 " kB\n", _draw_info.used_memory_for_layers_kb);
|
||||||
|
|
||||||
if(lv_color_format_has_alpha(layer->color_format)) {
|
if(lv_color_format_has_alpha(layer->color_format)) {
|
||||||
|
|||||||
@@ -199,15 +199,6 @@
|
|||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Max. memory to be used for layers */
|
|
||||||
#ifndef LV_LAYER_MAX_MEMORY_USAGE
|
|
||||||
#ifdef CONFIG_LV_LAYER_MAX_MEMORY_USAGE
|
|
||||||
#define LV_LAYER_MAX_MEMORY_USAGE CONFIG_LV_LAYER_MAX_MEMORY_USAGE
|
|
||||||
#else
|
|
||||||
#define LV_LAYER_MAX_MEMORY_USAGE 150 /*[kB]*/
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef LV_USE_DRAW_SW
|
#ifndef LV_USE_DRAW_SW
|
||||||
#ifdef _LV_KCONFIG_PRESENT
|
#ifdef _LV_KCONFIG_PRESENT
|
||||||
#ifdef CONFIG_LV_USE_DRAW_SW
|
#ifdef CONFIG_LV_USE_DRAW_SW
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
#define LV_MEM_SIZE (32 * 1024 * 1024)
|
#define LV_MEM_SIZE (32 * 1024 * 1024)
|
||||||
#define LV_LAYER_MAX_MEMORY_USAGE (4 * 1024)
|
|
||||||
#define LV_SHADOW_CACHE_SIZE (8 * 1024)
|
#define LV_SHADOW_CACHE_SIZE (8 * 1024)
|
||||||
#define LV_IMAGE_CACHE_DEF_SIZE 32
|
#define LV_IMAGE_CACHE_DEF_SIZE 32
|
||||||
#define LV_USE_LOG 1
|
#define LV_USE_LOG 1
|
||||||
|
|||||||
Reference in New Issue
Block a user