MartyMacGyver / ESP32_Adafruit_ILI9341

Driver and sample code for ILI9341-based TFT displays designed for the ESP32 / ESP32-WROVER-KIT
47 stars 11 forks source link

Performance improvement: adaptive display stream updates #6

Open rtek1000 opened 2 years ago

rtek1000 commented 2 years ago

Hello,

I found this:

Given that the SPI bus can be so constrained on bandwidth, how come fbcp-ili9341 seems to be able to update at up to 60fps? The way this is achieved is by what could be called adaptive display stream updates. Instead of uploading each pixel at each display refresh cycle, only the actually changed pixels on screen are submitted to the display. This is doable because the ILI9341 controller, as many other popular controllers, have communication interface functions that allow specifying partial screen updates, down to subrectangles or even individual pixel levels. This allows beating the bandwidth limit: for example in Quake, even though it is a fast pacing game, on average only about 46% of all pixels on screen change each rendered frame. Some parts, such as the UI stay practically constant across multiple frames.

Source: https://github.com/juj/fbcp-ili9341

Would it be possible to add this behavior to this library?

MartyMacGyver commented 2 years ago

I'll keep this open as a possible future enhancement, but I have no plans to add new features to the library at this time.