Well, I got the first end-to-end data displayed on the TFT!
2 render cells. The background and a temperature.
The thing is, I had a bug where it was rendering the cell every loop as I was accidentally local copying the struct and setting it to "CLEAN".
I had lots of UART errors on the messaging channel.
The idea is, it will only render one dirty cell at a time. It only has to skip iterations when it's previous DMA transfer was not complete. I might need to adjust it's timing such that it skips iterations more readily or even only fires on a timer iterrupt once in a while.
I also need to add debug for the buffers. Something that doesn't require synchronisation like pinging a GPIO on if/when the UART reader gets handed a NULL buffer (queue full).
I am still hammering it. The MQTT topic I subscribed to produces messages for all sensors, about 30 of them. I'm only displaying 2, but keeping the test rig running with the worst case should stop me hiding load related issues.