Open screwylightbulb opened 2 years ago
This happen to me also on Steam Deck from Game Mode frame rate is max 53 but often less
Coromon
Issue transferred from https://github.com/ValveSoftware/Proton/issues/6214. @Fantasy1446 posted on 2022-10-04T16:26:34:
Last version of Proton. On steam deck , coromon's game afther 30 minutes of game the FPS down to 10/14 and the game Is unplayable.
Isn't there a way to fix?
Developer of Coromon here, we've been investigating this issue for some time now and we're finally able to pinpoint where the issue is coming from. Just dropping our findings here to help someone else perhaps fix the core issue.
The FPS drop starts happening after the BOverlayNeedsPresent()
Steam SDK API is called roughly ~130.000 times (~36.5 minutes converted to seconds * 60FPS).
The steamworks plugin of our engine calls this on every frame to determine whether OpenGL should force a render to ensure the overlay is being updated. We tested decreasing the polling rate to the BOverlayNeedsPresent()
to once every 10 frames, this delayed the FPS drop to 6 hours (360 minutes) instead of 36 minutes. This also changed the constant FPS drop into a frame spike every 10 frames, so it seems to me BOverlayNeedsPresent()
starts to take a lot of CPU time after it is called over ~130.000 times.
We tested on every available Proton version on Steam, Proton 4.2-9 & Proton 3.16-9 do not have this glitch somehow.
We'll be releasing an update of our game soon where we decrease the polling rate even further to allow sessions of at least 18 hours without the FPS drop, but a better solution would be a fix for BOverlayNeedsPresent()
in Proton.
Compatibility Report
System Information
I confirm:
Proton log
steam-1218210.tar.gz
Symptoms
Game starts and runs fine, but after a while starts to stutter and slow down a lot. Tried with both Proton 7.0-2 and Experimental. Have noticed other people support similar issues.
Reproduction
Start game and play for a while until it starts to stutter. Time until this happens will vary from play to play.