Skip to content

VR FIFO fixes - #2544

Open
matte-schwartz wants to merge 2 commits into
ValveSoftware:masterfrom
matte-schwartz:matts/vr-fifo-pacing
Open

matte-schwartz wants to merge 2 commits into
ValveSoftware:masterfrom
matte-schwartz:matts/vr-fifo-pacing

Conversation

@matte-schwartz

Copy link
Copy Markdown
Collaborator

No description provided.

The heuristic VR app match clears a commit's fifo flag as well as
exempting the window from the limiter. The exemption alone already
releases a FIFO commit on every vblank, so clearing the flag only lifts
the display refresh cap. With the layer's mailbox swapchain underneath,
nothing then blocks the app. On a Steam Frame, an app with an OpenXR
session and the headset off presents at about 1150 Hz under 60 Hz
headless gamescope.

Leave the flag alone so these windows present at the display's refresh,
with or without a limiter. The same window holds 60 Hz under a 20 fps
limit, so the exemption still applies. A VR game whose flat window
presents FIFO is held to the display's refresh again, as it was before
the exemption.
The scene app's commits are never FIFO, so its flat window cannot hold
back its VR frames. An app that relies on that window for pacing has
nothing else to block on once the headset is off. On a Steam Frame,
such an app sits in a synchronized OpenXR session and presents at about
1170 Hz while the session refreshes at 72 Hz.

While the HMD is in standby no VR frame is waiting on the window, so
commit as the app asked. The OpenVR backend reads the HMD's activity
level at startup and again on each standby event, rather than trusting
the event to name the HMD. The scene application state cannot tell
these cases apart, as SteamVR reports it as running throughout. Idle
is too weak a signal, since it only means the headset has stopped
moving. Launching an app wakes the headset, so it runs unpaced for
about 5 seconds until standby returns.

Closes: ValveSoftware#2539
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant