Interesting, I just had a discussion about a waterfall display for a spetrum analyzer last month:
https://github.com/RudolphRiedel/FT800-FT813/discussions/162We are using Bridgtek display controller, these work fundamentally different in that these take a display list over SPI instead of raw pixels for most operations.
The solution I did for the waterfall display still generates a single pixel line bitmap for every waveform and writes that to the graphics controller.
And with each update a new line is written to a different memory location.
But then the display itself shows the current line at the top as one image, and the rest of the lines as one or two images, depending on the position of the current line in the memory which is actually used like a ring-buffer.
So the lines are not copied around and only written once, the display controller is just told to animate the waterfall.
This works as the memory is used continously and for the controller it makes no difference if the bitmap has 1 line or xx lines.
With a 750 x 450 waterfall and the waveform on top of that my display update took 387µs on a STM32F407 and 10MHz SPI, plus 3.3ms transferring the data with DMA.
Targetting 50 updates per second that leaves quite some time for data aquisition and calculations.
Sure, a RVT50HQBNWC00 for example from Riverdi costs a lot more, but I really having fun with EVE based displays.
Oh yes, my library does support ESP32 as well, with DMA.