Repository navigation
Let the nested output's present mode be chosen (GAMESCOPE_NESTED_PRESENT_MODE) - #2438
Open
danielcamposramos wants to merge 1 commit into
Open
danielcamposramos wants to merge 1 commit into
danielcamposramos wants to merge 1 commit into
Conversation
The nested output (SDL, Wayland backends) always presents with FIFO. With the game on vsync inside gamescope, that is a second queue behind the first, and frames reach the screen unevenly: a per-frame log of a game's view angles showed 4 ms / 33 ms frame pairs through gamescope, against 15.6 to 17.7 ms (5th to 95th percentile) without it. On a stereo 3D TV and in red/cyan anaglyph, fast camera turns then read as false depth. GAMESCOPE_NESTED_PRESENT_MODE=mailbox or immediate picks that mode when the surface offers it, and logs the mode in use. Unset, or not offered, it stays FIFO as before. With the game free-running and the nested output on IMMEDIATE, the 95th percentile frame time went to 4.5 ms and the swim was gone. NVIDIA offers no MAILBOX for the window; IMMEDIATE did not tear, since the host compositor still composites it.
danielcamposramos
added a commit
to danielcamposramos/sony-bravia-linux
that referenced
this pull request
Sep 26, 2026
…ate posted - Module (fcdb6730): motion blur off while VR is on. Source keeps the blur's previous view in statics shared by both eyes, so each eye blurs differently in turns; run p20: "blur wrecked the mouse movement". The player's own value is kept next to the module and restored when VR stops. SVRTV_BLUROFF=0 leaves it alone. - ValveSoftware/gamescope#2438: GAMESCOPE_NESTED_PRESENT_MODE, built on master; the #8297 comment, discovery and solution. Drafts 06 and 07 marked posted. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
@misyltoad, a gift from the 3D side, since ValveSoftware/Source-1-Games#8297 already has you in copy.
The nested output (SDL and Wayland backends) always presents with FIFO.
With the game on vsync inside gamescope, that is a second queue behind the first.
What it did: frames reached the screen in 4 ms / 33 ms pairs, against 15.6 to 17.7 ms (5th to 95th percentile) without gamescope.
On a stereo 3D TV, and in red/cyan anaglyph, fast camera turns then read as walls moving in depth.
Measured with a per-frame log of Half-Life 2's view angles, VR mode driving a 3D TV (RTX 3060, KDE Plasma on Wayland, gamescope in an SDL window on X11).
The change:
GAMESCOPE_NESTED_PRESENT_MODE=mailboxorimmediatepicks that mode when the surface offers it, and logs the mode in use.Unset, or not offered, it stays FIFO, so nothing changes by default.
Result: with the game free-running and the nested output on IMMEDIATE, the 95th percentile frame time went to 4.5 ms and the depth swim was gone, in side by side and in anaglyph.
NVIDIA offers no MAILBOX for this window, so the fallback path is exercised too.
IMMEDIATE did not tear, since the host compositor still composites the window.
If a command-line option suits the project better than a variable, I will change it.
AI partners were leveraged in the production of this work.