Partial screen refresh?


is it possible to partly refresh the screen?
I’m planning to use a 800x480 lcd with a spi interface and the transmission bandwidth is not exactly suitable to display fluid animations on the screen when the whole display is refreshed.

thanks and love in advance!

I’m not exactly sure how you would separate the parts to be refreshed. If you only refreshed part of the screen it would have a tearing effect. Can you explain further?

It might be more worthwhile to turn off the slow animations or use DMA in some way.

I’m also not sure I fully understand the question. LittlevGL refreshes only the changed areas. So If you press a button, only the button’s area will be refreshed. In animations only the affected areas will be refreshed.

Take a look at this part of the documentation:

My motivation to ask this is to reduce the amount of data transferred to the display.
in most cases this seems to be a spi interface with limited bandwidth/maximum frequency.

so my question is: is it possible to only update the pixels on the screen that changed during a rendering cycle?

Just be sure we are speaking about the same thing: For example, there is a button with a label and you change the label’s text. In this case

  1. some pixels remain the same
  2. some pixel changes: button color-> text color, or vice versa

And your goal is to refresh the pixels which are in the 2) category, right?

If so it’s not possible by default in LittelvGL. You can keep the current display image in RAM, compare the image to flush with that and send only the required pixels. However, it will be slower IMO because you continuously need to set “window address” therefore you can’t use DMA.