The eventual goal of all this mucking about with the ESP32-S3 LCD peripheral is to improve the performance of the Adafruit_GFX library that underlies a ton of projects. This could take some time. If you need something performant right away, consider LovyanGFX as an alternative graphics library. You can locate and install it through the Arduino Library manager.
This is not a drop-in replacement for Adafruit_GFX. While many functions are named and function similarly, other aspects work quite differently, such as screen initialization and the whole idea of “canvases” (Adafruit_GFX) vs “sprites” (LovyanGFX). Thus…existing Adafruit_GFX projects won’t just copy-and-paste run under this other system…and once adapted to LovyanGFX, won’t directly copy back. There’s a lot of overlap, but they’re not congruent.
LovyanGFX gets much of its speed by focusing on DMA and high-speed peripherals only present on the ESP32 family, RP2040 and SAMD51. Primitive microcontrollers like the AVR line are left out. Performance then is stunning…as you can see in the banner image, one of the example programs running on an ESP32-S3 with 8-bit parallel ILI9341 display is animating an absurd number of sprites at 130 frames per second (the LCD can only refresh at about 70 Hz, so there’s plenty of overhead to do more interesting things with all those free cycles).
We have hundreds of existing published Adafruit_GFX projects (many using AVR), so we can’t simply switch over to this as “the new GFX.” But we do want to improve performance, and there no doubt will be lessons here. If you need that performance today and don’t mind the diverging API…well, there you go!