Raspberry Pi (RPi) best practices

Hi All,
I’ve just started a new home project and I’m coming across some compile/running issues when following the instructions for getting started on the (raspberry pi | openFrameworks) page, due partly to the page being a little dated, and me using a RPi Zero W.
Rather than focus on the problem I have at hand which I can probably fix by searching the forum, I thought it might be good to widen out the idea and try and get a discussion going on what are the best practices for getting the best performance out of the hardware…

My thought is that if you have this device RPi-XX, what are the steps to follow to get the best performance?

Things I think it would need to cover should include:

OS: Stretch / Buster / RaspberryPi OS (or other)
oF version: a specific version say 0.10.0 or latest currently 0.11.2
Window system: EGL / GLFW
GL type: GL / GLES
Specific Addons: eg ofxRPI4Window
Changes to oF: eg what to change if the shader examples in the distro are the wrong GL/GLES version

Personally (because I have these to hand :wink: ) I’d like to cover at least these commonly used RPi models: Zero/ZeroW, 3A+, 3B+ and 4B.

Not sure what the final outcome would be, perhaps a Wiki page or feeding directly back to the oF guys with updates to the RPi setup page with model specific guides?

Perhaps this thread is a good starting point, and if people post what they have found to work well covering the 6 topics listed above. I’d be happy to set aside some of my time to test combinations with the hardware I have, and get notes written up, and do some benchmarking.
If there are specific example apps that people think would work well for benchmarks let me know, I think a geometry heavy app and shader example would be an ideal starting point.

Last year I did an analysis of video playback on Pi, particularly with screen tearing in mind. This was on a RPI3, which is currently the best option for video playback. Here are my findings:

1280x720 mp4 fullscreen video tests

BCM GLES driver
ofxOMXPlayer example_basic textured - 60fps, screen tearing (GLES1)
ofxOMXPlayer example_basic non-textured - 60fps, no screen tearing (GLES1)
ofxPiMapper example_basic - 30fps, screen tearing (GLES2 and ofxOMXPlayer)
ofxPiMapper example_basic - 55-60fps, screen tearing (GLES1 and ofxOMXPlayer)
ofxPiMapper example_basic (original) - 55-60fps, screen tearing (GLES1 and ofxOMXPlayer)
ofxPiMapper example_basic - 23-25fps, colour, half speed, no apparent screen tearing (GLES2 and ofVideoPlayer)
ofxPiMapper example_basic, OF_PIXELS_NATIVE - black texture, needs new custom shaders (GLES2 and ofVideoPlayer)

videoPlayerExample - 55-60fps, plays at half speed, no apparent screen tearing (GLES1)
videoPlayerExample, OF_PIXELS_NATIVE - 30fps, black and white, no apparent screen tearing (GLES1)
videoPlayerExample, OF_PIXELS_NATIVE - 23-25fps, colour, no apparent screen tearing (GLES2)

Mesa OpenGL
videoPlayerExample - 7fps (GLES1)
videoPlayerExample - 7fps (GLES2)

Summary
For best textured player screen tearing - disable vsync and set FPS to 30;