Display refresh ceiling
“My TFT is slow” reads as a software problem and is a division: pixels times bits, over clock times lanes. Nothing about the library changes it, and the panel next to it on the shelf with four data lines is four times faster before you write a line.
33 fps
240 × 320 × 16 bits ÷ (40 MHz × 1) = 30.7 ms a frame
Panel — 1 data line
Colour — 16-bit 565
RGB565. What every small colour panel runs.
Clock
One frame
30.7 ms
On the wire
150.0 kB
Framebuffer
150.0 kB
Realistic
~23 fps
30.7 ms to clock one full screen, so 33 fps is the ceiling — with the processor doing nothing but feeding the bus, no command bytes, no gaps between DMA transfers. Expect around 23 in a real driver. A whole framebuffer at this size is 150.0 kB, which on a 320 kB ESP32 is the reason drivers redraw in strips rather than keeping one. Four times this is one QSPI panel away; the clock is usually not where the headroom is.