From 1cba424174b32ab2b76f18bf2657aaf492440698 Mon Sep 17 00:00:00 2001 From: Felipe Neves Date: Fri, 12 Sep 2025 06:27:11 -0300 Subject: [PATCH] fix(draw/dave2d): prevent deadlock by avoid to flush the GPU buffer when empty. (#8869) Signed-off-by: Felipe Neves --- scripts/lv_conf_internal_gen.py | 2 +- src/draw/renesas/dave2d/lv_draw_dave2d.c | 8 ++++++++ src/lv_conf_internal.h | 2 +- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/scripts/lv_conf_internal_gen.py b/scripts/lv_conf_internal_gen.py index 998d638709..96d35e55d9 100755 --- a/scripts/lv_conf_internal_gen.py +++ b/scripts/lv_conf_internal_gen.py @@ -267,7 +267,7 @@ LV_EXPORT_CONST_INT(LV_DRAW_BUF_ALIGN); #if LV_USE_OS #if (LV_USE_FREETYPE || LV_USE_THORVG) && LV_DRAW_THREAD_STACK_SIZE < (32 * 1024) - #warning "Increase LV_DRAW_THREAD_STACK_SIZE to at least 32KB for FreeType or ThorVG." + #error "Increase LV_DRAW_THREAD_STACK_SIZE to at least 32KB for FreeType or ThorVG." #endif #if defined(LV_DRAW_THREAD_STACKSIZE) && !defined(LV_DRAW_THREAD_STACK_SIZE) diff --git a/src/draw/renesas/dave2d/lv_draw_dave2d.c b/src/draw/renesas/dave2d/lv_draw_dave2d.c index 2c39fc58fe..4f5b2276e4 100644 --- a/src/draw/renesas/dave2d/lv_draw_dave2d.c +++ b/src/draw/renesas/dave2d/lv_draw_dave2d.c @@ -452,6 +452,14 @@ static int32_t _dave2d_wait_finish(lv_draw_unit_t * draw_unit) * Dave and wait for its interrupt. (Dave2D driver is RTOS aware, no need for semaphores); */ lv_draw_dave2d_unit_t * draw_dave2d_unit = (lv_draw_dave2d_unit_t *) draw_unit; + + if(!draw_pressure) { + /* It reached here because Dave2D Draw Unit was not suitable to take a task + * While there is nothing being rendered, prevent the dead lock + * by flushing the GPU command buffer empty and just return. + */ + return 0; + } dave2d_execute_dlist_and_flush(); draw_pressure = 0; diff --git a/src/lv_conf_internal.h b/src/lv_conf_internal.h index a5d9e6cd9f..5929ca341a 100644 --- a/src/lv_conf_internal.h +++ b/src/lv_conf_internal.h @@ -4817,7 +4817,7 @@ LV_EXPORT_CONST_INT(LV_DRAW_BUF_ALIGN); #if LV_USE_OS #if (LV_USE_FREETYPE || LV_USE_THORVG) && LV_DRAW_THREAD_STACK_SIZE < (32 * 1024) - #warning "Increase LV_DRAW_THREAD_STACK_SIZE to at least 32KB for FreeType or ThorVG." + #error "Increase LV_DRAW_THREAD_STACK_SIZE to at least 32KB for FreeType or ThorVG." #endif #if defined(LV_DRAW_THREAD_STACKSIZE) && !defined(LV_DRAW_THREAD_STACK_SIZE)