Description
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?
v8.3
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?
Sure
Code:
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 */
lv_disp_drv_register(&disp_drv);
I want ‘disp_drv.full_refresh = 1;’ to be set with the above configuration, where a partial frame buffer (rendering area) is being used.