60fps on macOS is what I aim for with all animations / painting. It’s 100% achievable (also on non-Apple Silicon hardware).
For context, I’m running a physics simulation using Box2D inside my plugin and drawing the objects inside the paint method.
This sounds like it could be eating time. I’d recommend doing the ole “remove chunks of code” until you get back to 60fps.
Alternatively, if the same exact physics is rendering fine on open gl, it could be how you setup/use your graphics objects (like paths, etc). If you paste some example code, we might be able to help. There’s also posts sprinkled around the forum talking about common issues like too many path segments, needing to use preallocateSpace for paths, creating temporary objects each paint instead of having them as reusable members, etc…
If you want a detailed understanding on when/how/where you are making frames over ~16ms, use something like perfetto.
Edit: Oh and +1 for VBlankAttachment for anything animation-y.
