We are about to declare 2.0.18 done, so this is your LAST CHANCE to mention bugs before we go live.
At this point we are only looking for showstopper bugs (this doesn’t build at all, this crashes on startup, this crashes during some extremely common operation without a reasonable workaround). We do want to hear about any bugs, but most things will wait for 2.0.20.
Sorry if this is not the kind of thing you’re looking for now, or has been discussed before (couldn’t find anything on a Google search), but using Metal on MacOS uses 3 times more CPU than OpenGL and quickly sends the fan into a spinning frenzy.
(I was sticking to Open GL to prevent this, but the recent Monterey update broke v-sync - a sign of things to come regarding OpenGL, so I decided to just adopt Metal)
Not changing anything about this for 2.0.18, but let’s talk about this…
With the 2D renderer, right?
One thing I’ve noticed is that Metal not only doesn’t sync to vsync, it doesn’t even send command buffers to the GPU if the window is minimized, which will make the CPU cook when it’s suddenly able to “render” thousands of frames per second. Or is there something else unrelated to that? Is there a build of the app seeing this problem I can try?
At least in my case vsync actually works fine using the Metal renderer, it’s only broken in OpenGL (not SDL’s fault, as far as I know). In my app and in previous tests it has always rendered at a locked 60fps. Despite that, it uses about 25% cpu for something that OpenGL does using 8%.
In Monterey I had to add some delay in the loop to make both renderers have the same frame rate, since OpenGL won’t sync, but I’ve noticed that behavior since the previous macos, which didn’t have the vsync issue. In BigSur, all I had to do was switch the renderer to Metal and the cpu use would go up at the exact same frame rate, with noticeable louder fan noise.
Current project is in Nim Lang, but I do have some basic C tests that exhibit the same behavior that I can send later when I get home from work.
Thanks! (And we can continue this topic in a new thread to not clutter this one if you wish)
EDIT: Yes, 2D renderer. And my app pauses and stops rendering (using a delay on every frame instead) when in BG, so I didn’t see the other issue you mentioned.
And OF COURSE now that I made a minimal C example I can’t repro it anymore… in fact Metal is running faster (less CPU) than OpenGL… Will investigate. Ignore my post until I figure out what I’m doing wrong!