Rendering area in full refresh


For my project I require the rendering area given to LVGL be 1/10th the size of the screen. The flushing must be in full_refresh mode as my controller supports flushing of screen-sized buffers only.

What LVGL version are you using?


What do you want to achieve?

Reduction in rendering area (to reduce memory allocation) along with full_refresh of the screen (to flush screen-sized buffers).

What have you tried so far?

Partial frame buffer i.e. rendering area set to 1/10th the size of screen with full_refresh set. The new frame after an event including the dirty areas is not redrawn in this configuration.

Care to share any code or screenshots of the issue?


STATIC lv_disp_draw_buf_t draw_buf_dsc_1;
STATIC lv_color_t* buf_1 = (lv_color_t*)BUFFER_START_ADDRESS;

/* Initialize the display buffer */
lv_disp_draw_buf_init(&draw_buf_dsc_1, buf_1, NULL, ((MY_DISP_HOR_RES * MY_DISP_VER_RES) / 10));

 * Register the display in LVGL

STATIC lv_disp_drv_t disp_drv; /* Descriptor of a display driver */
lv_disp_drv_init(&disp_drv);   /* Basic initialization */

/* Set the resolution of the display */

disp_drv.hor_res = MY_DISP_HOR_RES;
disp_drv.ver_res = MY_DISP_VER_RES;

/* Used to copy the buffer's content to the display */
disp_drv.flush_cb = DispFlush;

/* Make the whole screen redrawn */
disp_drv.full_refresh = 1;

/* Set a display buffer */
disp_drv.draw_buf = &draw_buf_dsc_1;

/* Finally register the driver */

I want ‘disp_drv.full_refresh = 1;’ to be set with the above configuration, where a partial frame buffer (rendering area) is being used.