One of the nice things about how we set up the PyPortal is it uses a 8 bit parallel display connection, which can be driven much faster than classic SPI displays. Not only do you write 8 bits at a time instead of one, the SPI peripheral tops out at about 24MHz! Combined with DMA you can get surprising speeds. Another nifty hack is taking advantage of the 256KB of SRAM on the SAMD51J20 - you can buffer an entire 240x320 16-bit color bitmap and then draw the whole thing at once
Our classic touchscreen painting demo is a good example of how to read touch points, convert the raw readings to calibrated coordinates and then draw something on the screen. It's in Adafruit_ILI9341 called touchpaint_pyportal
As featured above, this draws a checkered ball around the screen, a classic Atari demo. Available in the Adafruit_ILI9341 library as the pyportal_boing demo. It's an intense demo showing how to calculate a scan line and render it post computation.
This is a good demo to show how we allocate a full display buffer, do all our calculations, then draw it all at once. Also in Adafruit_ILI9341 under example mandelbrot