The problem of LVGL single buffer Vsync

For the problem of LVGL single buffer Vsync, we can see from the “lv_refr_areas” function in the source code of LVGL,
When a page has multiple non adjacent regions, the refresh of each area will be called “flush_cb” once.
If I want to refresh at the same time, I can only merge multiple regions, which will inevitably result in unnecessary redrawing.
How to refresh multiple non adjacent regions simultaneously without unnecessary redrawing?

I believe this is not possible with the current rendering architecture. IIRC you can refresh multiple displays at the same time, but not multiple regions on one display.

The main concern I have with this type of feature is how many people it would benefit vs. the performance cost from having to rearchitect everything into separate render threads. I have seen other programs on more powerful hardware suffer performance loss when a supposedly “faster” multi-threaded renderer ends up making weaker systems much, much slower.

1 Like