Headset going standby causes very low FPS in F8-screen mode
Describe the bug?
A headset going into standby causes FPS to drop to less than 10 both in VR view (this is somewhat expected) and in Screen view after switching with F8.
To Reproduce
While using Quest 3 with Steam Link and SteamVR, I took off my headset. After some amount of time, the headset turned off (standby). Resonite and SteamVR dropped FPS to less than 10. I tried to switch to Screen mode, but it too was with very low FPS.
Expected behavior
FPS to be normal in F8-Screen mode.
Screenshots
No response
Resonite Version Number
2024.5.29.130
What Platforms does this occur on?
Windows
What headset if any do you use?
Quest 3 via Steam Link
Log Files
VIXEN - 2024.5.29.130 - 2024-05-29 22_48_37.log
Additional Context
No response
Reporters
No response
~~This is exclusive to Steam Link afaik, does not happen with Virtual Desktop or ALVR~~
I'm not sure if this is something we can do much about. When VR is active, the VR SDK controls the framerate, so it's probably going into some kind of power save mode.
We are not doing anything on our end to artificially limit the FPS when this happens.
Are there any settings or anything relating to this in the VR software you're using?
I'm not sure if this is something we can do much about. When VR is active, the VR SDK controls the framerate, so it's probably going into some kind of power save mode.
This was not an issue before... Something around the time introducing the new settings changed this.
Are there any settings or anything relating to this in the VR software you're using?
No, just straight Steam Link into SteamVR and launch Resonite from there.
This was not an issue before... Something around the time introducing the new settings changed this.
This has been an issue for me using Steam Link prior to the new Settings UI. I'm not sure if it's new for you specifically but it was occurring prior to that change.
I've had this occur with Quest Link (wired) prior- it's definitely not a new behaviour- it's been around for as long as I can recall/have had my Quest 1- and as indicated above by Frooxius- is largely out of our hands because it is the VR SDK that is responsible for causing it.
I see that SteamVR has a "Meta Plugin Compatibility" setting under the OpenXR settings group that I'm pretty sure didn't exist previously. Could you try turning that setting off and see if it causes any change in behaviour, @shadowpanther?
I'm positive that this is simply a SteamLink thing, since I can trigger it in any VR game by simply connecting to my computer and sleeping the headset, it doesn't cleanly disconnect from the headset is is constantly waiting for the headset to reconnect. The performance metric also goes 100% pink, representing a Display Error delay.
I see that SteamVR has a "Meta Plugin Compatibility" setting under the
OpenXRsettings group that I'm pretty sure didn't exist previously. Could you try turning that setting off and see if it causes any change in behaviour, @shadowpanther?
Just tried that, and with this setting On, the FPS drop is still the same. Getting the headset to standby (pressing the power button) causes Resonite to auto-switch to Screen mode, but the frame rate is at 5-8 FPS which is unusable. Turning the headset back on and going F8 allows to have 120 FPS (headset frequency) Screen mode.
I do remember that in the times prior F8 limited the refresh rate to the monitor's rate (e.g. 60FPS). Right now it's being kept at the headset's rate (120 or 8 FPS depending on the state).
I don't think there is anything that can be done here on our end then at this time then, unfortunately- the VR SDK is responsible for frame presentation/frame limiting, and forcing VSync on causes misbehaviour/other issues, e.g. #1927.
If there were some way to dynamically register/unregister the VR SDK and its control over compositing.
Seeking input from @Geenz on if something of the sort could eventually be made possible by the switch to our new rendering engine #1401. It would hypothetically be cool to be able to add/remove headsets/runtimes live, but I don't know if something like that is even technically possible at all- much less right now.
I am just updating this as the issue is still present as of Beta 2025.2.5.1304. Tested with Quest Pro via SteamLink. Unsure if this also occurs with VirtualDesktop so I can try that later.
This is effectively a sister issue to #2999. Since the compositing / frame limiting is controlled by the VR SDK and not us- we would need some mechanism to unregister the VR SDK during runtime in order to restore full control of the compositing to Resonite.
Happens to me with Virtual Desktop now. This makes VR hotswitching unusable on Quest.
Happens to me with Virtual Desktop now. This makes VR hotswitching unusable on Quest.
yea when a quest / standalone based headset goes into sleep mode using any streamer based solution it will after 5 seconds dump the fps to 10 and make desktop unusable until you wake your headset up for a bit
I think I have found a one-line fix which is to simply add this to the start of RenderingManager.UpdateVR_Active:
SteamVR.instance?.compositor.SuspendRendering(!vrActive);
Currently testing with a mod and it even allows the desktop FPS to go above the refresh rate of the headset.
edit:
https://github.com/Nytra/ResoniteSteamVR_LowFPS_Fix