diff --git a/lvgl_helpers.h b/lvgl_helpers.h index 9c622f7..7e61c30 100644 --- a/lvgl_helpers.h +++ b/lvgl_helpers.h @@ -21,6 +21,21 @@ extern "C" { /********************* * DEFINES *********************/ + +/* DISP_BUF_SIZE value doesn't have an special meaning, but it's the size + * of the buffer(s) passed to LVGL as display buffers. The default values used + * were the values working for the contributor of the display controller. + * + * As LVGL supports partial display updates the DISP_BUF_SIZE doesn't + * necessarily need to be equal to the display size. + * + * When using RGB displays the display buffer size will also depends on the + * color format being used, for RGB565 each pixel needs 2 bytes. + * When using the mono theme, the display pixels can be represented in one bit, + * so the buffer size can be divided by 8, e.g. see SSD1306 display size. */ +#if defined (CONFIG_CUSTOM_DISPLAY_BUFFER_SIZE) +#define DISP_BUF_SIZE CONFIG_CUSTOM_DISPLAY_BUFFER_BYTES +#else #if defined (CONFIG_LV_TFT_DISPLAY_CONTROLLER_ST7789) #define DISP_BUF_SIZE (LV_HOR_RES_MAX * 40) #elif defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_ST7735S @@ -38,7 +53,7 @@ extern "C" { #elif defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_ILI9488 #define DISP_BUF_SIZE (LV_HOR_RES_MAX * 40) #elif defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_ILI9341 -#define DISP_BUF_SIZE (LV_HOR_RES_MAX * 64) +#define DISP_BUF_SIZE (LV_HOR_RES_MAX * 40) #elif defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_SSD1306 #define DISP_BUF_SIZE (LV_HOR_RES_MAX * (LV_VER_RES_MAX / 8)) #elif defined (CONFIG_LV_TFT_DISPLAY_CONTROLLER_FT81X) @@ -57,6 +72,7 @@ extern "C" { #else #error "No display controller selected" #endif +#endif /********************** * TYPEDEFS diff --git a/lvgl_tft/Kconfig b/lvgl_tft/Kconfig index 2b407bb..f37adb9 100644 --- a/lvgl_tft/Kconfig +++ b/lvgl_tft/Kconfig @@ -328,6 +328,18 @@ menu "LVGL TFT Display controller" select LV_TFT_DISPLAY_PROTOCOL_SPI endchoice + config CUSTOM_DISPLAY_BUFFER_SIZE + bool "Use custom display buffer size (bytes)" + help + Enable to use a custom display buffer size. + + config CUSTOM_DISPLAY_BUFFER_BYTES + int "Custom buffer size (bytes)" + depends on CUSTOM_DISPLAY_BUFFER_SIZE + default 1024 + help + See Display buffer on LVGL docs for more information. + # Select one of the available FT81x configurations. choice prompt "Select a FT81x configuration." if LV_TFT_DISPLAY_USER_CONTROLLER_FT81X