Anyway to speed up the display (GFX)

However Screen rotation makes a BIG difference in the speed:

Simple change to loop:

uint8_t screen_rotation = 0;
void loop() {
  display.setRotation(screen_rotation);
  Serial.print("Rot:");
  Serial.print(screen_rotation);
  uint32_t elapsed_sum = fill_screen(GC9A01A_RED);
  elapsed_sum += fill_screen(GC9A01A_GREEN);
  elapsed_sum += fill_screen(GC9A01A_BLUE);
  float fps = (3000000.0 / elapsed_sum);
  Serial.print(" fps:");
  Serial.println(fps, 2);
  if (Serial.available()) {
    while (Serial.read() != -1) {}
    Serial.println("Paused");
    while (Serial.read() == -1) {}
    while (Serial.read() != -1) {}
  }
  screen_rotation = (screen_rotation + 1) & 0x3;
}
Arduino GIGA GFX Speed test
Rot:0(F800):57905(7E0):57781(1F):57789 fps:17.29
Rot:1(F800):272722(7E0):272092(1F):272787 fps:3.67
Rot:2(F800):64286(7E0):64378(1F):64623 fps:15.52
Rot:3(F800):273457(7E0):272437(1F):272476 fps:3.67
Rot:0(F800):57789(7E0):57789(1F):57858 fps:17.30
Rot:1(F800):272566(7E0):272677(1F):272483 fps:3.67
Rot:2(F800):64560(7E0):64371(1F):64319 fps:15.52
Rot:3(F800):271937(7E0):272072(1F):272826 fps:3.67
Rot:0(F800):58307(7E0):57783(1F):57692 fps:17.26
Rot:1(F800):272869(7E0):272031(1F):271963 fps:3.67
Rot:2(F800):64340(7E0):64352(1F):64279 fps:15.55
Rot:3(F800):273107(7E0):272753(1F):272272 fps:3.67
Rot:0(F800):58191(7E0):57813(1F):57688 fps:17.27
Rot:1(F800):272780(7E0):272550(1F):271427 fps:3.67
Rot:2(F800):64575(7E0):64359(1F):64272 fps:15.53
Rot:3(F800):273183(7E0):272721(1F):271816 fps:3.67
Paused

Not sure if it is the extra math, or how maybe caching of memory works...