Sorry, I am not really sure what your question is or more importantly what your setup is.
And for example why you say you can not use DMA support? With the ST7735_t3/ST7789 for example we have the uncanny eyes working. For example I have one version that runs the 240x240 displays, both on different SPI busses and I can setup up an update and continue to do other things, while the display is updating.
I have not used their canvas stuff, but I think it works sort of in a similar way. That is it redirects all GFX like primitives to write to memory and then you have a function to then outputs that bitmap to the actual screen (more or less our updateScreen() method with frame buffers.
But again I don't know for example what your setup is? T4.x? T3.x? Can you put maybe two on SPI and two on SPI1? Or potential maybe have one on SPI2 depending on your device and if you can get access to bottom pins or the like...
Regardless. I have not looked at how the current Adafruit_st7735 does something like our writeRect (or updateScreen, or more simply fillScreen...
Does it still go through the SPI library doing SPI.transfer and SPI.transfer16? If so on almost all of our boards we should be faster, as the SPI.transfer functions do not make use of the FIFO queues and they wait for the return value to be ready to return from the transfer, which leaves gaps of time between each output.
But again that would be easy to do simple timing test on.
But again if you can setup your system such that you use multiple SPI ports and the like example display 1 and 3 on SPI and 2 and 4 on SPI1.
Then you can do things like:
Code:
<do updates to screen 1>
<check to see if screen 3 has finished any updates>
<start update tft1.updateScreenAsync();
<do updates to screen 2>
<check to see if screen 4 has finished any updates>
<start update tft2.updateScreenAsync();
<do updates to screen 3>
<check to see if screen 1 has finished any updates>
<start update tft3.updateScreenAsync();
<do updates to screen 4>
<check to see if screen 2 has finished any updates>
<start update tft4.updateScreenAsync();
But again don't know if this is doable or not...