I had a quick try with an ESP32 and remarkably it worked first time (albeit very slowly).
There are two problems - first the PIN selection for SPI on the ESP just lists all (looks like all) the available pins - but in fact the hardware channels 'map' onto specific pins. This makes life just a little harder than it needs to be..
Second - looking at the UART output it is constantly spitting out:
E (7909) spi_master: check_trans_valid(817): trans tx_buffer should be NULL and SPI_TRANS_USE_TXDATA should be cleared to skip MOSI phase.
I'm not sure if this is something I'm doing wrong - using the wrong pins for example - or if the SPI implementation has a problem - Ben / Martin / Steve - any ideas??
But - other than that it works - random circles drawn at a leisurely pace (due to the UART printed errors on every SPI write)
Putting the SPI into software mode and it works very quickly - and I can send with SPI set at up to 30MHz (40MHz fails - though I'm not sure it will run this fast in software mode?) - strangely after adding a 'WDT disable' - I could only get it to run at 10MHz - but I suspect I'm pushing breadboard and jumpers to the limit here
I rewired using short jumpers and then working at pretty much any speed (is prescaler correctly named here? - and I'm not sure it does much - setting it at 100khz doesn't appear visibly to different to when set at 80MHz?) -- I'm not sure software mode goes up to 60MHz (or beyond) - but with a WDT blocker it draws splodges pretty fast..
Martin