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...