Updating the entire LCD in C and performance

I've also found that's the limit of the screen hardware for a full screen update.

I get 48fps updating the whole screen, and I'm using Lua.

However, it's worth knowing that screen accepts rows so you can update only 1 pixel on each row and it's as expensive as a full screen update.

Conversely, you can get higher FPS by updating fewer rows.

  • 60fps @ 177 rows, but not at 178 rows
  • 200fps @ 75 rows, but not at 76 rows

200fps seems to be the upper limit, though I've not done extensive testing. It's difficult to tell as the FPS display only goes to 99. I wrote my own frame-limiting code to be able to target higher refresh rates than 50Hz.

Documentation for the screen, with C code samples, is at: 2016_SDE_App_Note_for_Memory_LCD_programming_V1.3.pdf

i don't know if it's possible to optimise a game's output to only touch specific number of rows, or create some way of splitting/interlacing the output so you can update rows across frames. something to think about for sure!

My game targets 60fps, and I take advantage of partial frame draws to only update a small number of rows each frame.

6 Likes