@Jean-Marc,
The Waveshare is write-only. So there is no point in trying to read registers.
Arduino SPI class is appalling. It may "work" but you get bad performance on the "newer" Arduinos like NANO_BLE33 or RPI_PICO
I was asking about the actual Waveshare performance when you run @ 20MHz on say a ESP8266. e.g. the setup in your photo.
Bodmer handles the SPI on STM32 targets. You can see my times for native SPI in #11.
Waveshare requires 2 SPI bytes per command. Native SPI only needs 1 byte.
Waveshare requires 2 SPI bytes per pixel. Just like native SPI on a ST7796S.
So I would expect fillRect() to be exactly the same time. drawPixel() to be slightly slower.
Waveshare does have an advantage with ILI9486. Native SPI on ILI9486 requires 3 SPI bytes per pixel. (which is why I timed a ST7796S)
David.