I came across LVGL while looking for a graphics library to use in my personal project. It looks very interesting, but the display interface has me confused, maybe someone can help
me understand if I can do what I want with it ?
I have a device which includes a MIPI DSI host controller driving a display in video mode. This means that for each frame, at a fixed 60Hz refresh rate, the device will readout the frame buffer from DDR memory and send it to the display while blending in video received over HDMI. From the Porting guide I understand that LVGL operates as follows:
1, It expects that there is exactly one frame buffer that appears on the display (no double buffering)
2, It will draw only a small part of the screen at a time into one of possibly two buffers, as given to lv_disp_buf_init()
3, When LVGL has finished drawing to its small buffer it will call into the display driver and tell it to copy its small buffer into the single frame buffer
Since I have enough memory in DDR I’m wondering if LVGL can be made to use a more conventional mechanism of having a double-buffer of size for the full frame and have LVGL redraw the entire screen for each new frame it wants to output and simply have the hardware flip the buffers ?
If not, how does one make sure to not have any tearing effects in the output ?