A quick look at your code shows that you're sending pixel data one pixel at a time in dedicated functions, each with a separate SPI frame. That's a LOT of overhead. If you want faster access, you'll need to do things differently, the faster way being to implement some framebuffer and sending whole blocks of pixels in one go through SPI.