Buffering modes

Hi,

I’m new here and in the LVGL world.
I have a question about the buffering modes.
I know, if I use partial buffering, the flush callback will send the screen content from the small buffer to the display after rendering. It might takes significant time. If I use double buffering, I only need to change the adresses of the used buffers after rendering, it takes much less time. But as I know, with double buffering, LVGL renders all objects on the screen into the non-active buffer, which also might takes long time.
Is it possible to use the two methods in combined mode?
I can imagine, LVGL renders only the necessary (changed) object(s) into the non-active buffer, then I can switch to that buffer when it is complete. Shorter rendering time, immediately switch to the new content.

Thanks for the answers.

Hello

LVGL supports 3 rendering modes:

  • PARTIAL
  • DIRECT
  • FULL

In any of these modes, you can use single, double, or even triple buffering depending on your memory and performance requirements.

  • PARTIAL and FULL both require the rendered content to be copied to the display in the flush callback, which is where most of the time cost comes from.
  • DIRECT mode renders directly into the display’s frame buffer, so you typically don’t need to copy pixel data. With double buffering, you can just switch buffer addresses, making it much faster.

More explanation here:
https://docs.lvgl.io/master/main-modules/display/setup.html#draw-buffer-s