Skip to content

Gamescope payload 20261026.3: FPS cap at acquire, present wait served by the shim, custom resolutions on Turnip - #2257

Merged
utkarshdalal merged 1 commit into
masterfrom
gamescope-payload-20261026-3
Oct 26, 2026
Merged

utkarshdalal merged 1 commit into
masterfrom
gamescope-payload-20261026-3

Conversation

@utkarshdalal

@utkarshdalal utkarshdalal commented Oct 26, 2026 •

Copy link
Copy Markdown
Owner

Description

Gamescope payload 20261026.3 and the matching gamenative-drm daemon: gamescope 92e30f5 + gamenative-drm master a11b500 (#19 to #24).

  • The frame cap moves from a slot's release to the swapchain acquire (drm Optimisations #19): a capped game waits before it gets an image instead of after rendering, so nothing rendered is discarded. Blazing Chrome at a 60 cap: ~85 % CPU before, ~10 % after, on the Odin 3; cap accuracy 29.9 / 59.6 fps.
  • Present wait is now real under gamescope: the shim serves VK_KHR_present_id / VK_KHR_present_wait on every route (drm See why stray fails #21, Cloud saves #22, Fix steam login #24), so DXVK 2.x and vkd3d-proton pace to the display again. Verified with DXVK 2.4.1, 2.6.1, 2.7.1 and 1.10.3 (control) on the wrapper route, 2.7.1 on Turnip, and vkd3d (Hades II); waits complete within one frame, no stalls.
  • Custom resolutions on Turnip no longer shear (drm Fixes for booting #23): the slot is created at the pool buffer's row pitch.
  • Daemon rebuilt from the same tree (frame-cap notes, latch reports). Payload = 20261024.4 base with gamescope, both shims, ICD, LSFG engine and probe tools rebuilt; 1015 members, no AppleDouble entries, none of the 77 ELFs links libandroid.so. Asset uploaded to the CDN.

Caveat for the -r/present-wait design: with no cap set, FIFO does not hold the guest to the display rate under the shim, so DXVK's own limiter engages at 60.00 Hz; unchanged by this PR.

Recording

Screenshots and logs from the Odin 3 and Poco F6 runs are kept locally (gn-testlogs); a recording of the 30 vs 60 cap on Blazing Chrome is available on request.

Type of Change

  • Bug fix
  • Performance / stability improvement
  • Compatibility improvements
  • Other (requires prior approval)

Checklist

  • If I have access to #code-changes, I have discussed this change there and it has been green-lighted. If I do not have access, I have still provided clear context in this PR. If I skip both, I accept that this change may face delays in review, may not be reviewed at all, or may be closed.
  • This change aligns with the current project scope (core functionality, stability, or performance). If not, it has been explicitly approved beforehand.
  • I have attached a recording of the change.
  • I have read and agree to the contribution guidelines in CONTRIBUTING.md.

Summary by CodeRabbit

  • Chores
    • Updated the Gamescope payload version to 20261026.3. The app now uses this version when identifying the payload archive and checking whether the payload is ready. This update does not add or remove any user-facing features.

…rved by the shim, and the gamenative-drm daemon that goes with it

gamescope 92e30f5 and gamenative-drm master a11b500 (#19, #20, #21, #22, #23,
#24). The frame cap moves from a slot's release to the swapchain acquire, so a
capped game no longer throws rendered frames away; Blazing Chrome at a 60 cap
went from about 85 % CPU to about 10 % on the Odin 3. The shim now advertises
and serves VK_KHR_present_id / VK_KHR_present_wait on every route, so DXVK 2.x
and vkd3d-proton pace to the display again under gamescope, and custom
resolutions on Turnip render at the pool's row pitch instead of shearing.

The daemon is rebuilt from the same tree (frame-cap note, latch reports). The
payload is the 20261024.4 base with the gamescope, shim, ICD, LSFG engine and
probe binaries rebuilt; no member links libandroid.so and it carries no
AppleDouble entries. The archive is on the CDN.
@coderabbitai

coderabbitai Bot commented Oct 26, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

No actionable comments were generated in the recent review.

Recent review info
Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 7321d3c5-8a08-47e5-97f6-1c2d54015ba6
Commits

Reviewing files that changed from the base of the PR and between dc24544 and 0b8890f.

Files ignored due to path filters: 1
  • app/src/main/jniLibs/arm64-v8a/libgamenative_drm.so is excluded by !**/*.so
Files selected for processing: 1
  • app/src/main/java/app/gamenative/display/GamescopePayload.kt

Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 9 remain after this review.

Walkthrough

The Gamescope payload version changes from 20261024.4 to 20261026.3. The derived archive name and readiness stamp comparison use the updated version.

Changes: Gamescope payload version

Layer / File(s) Summary
Update payload version
app/src/main/java/app/gamenative/display/GamescopePayload.kt
GamescopePayload.VERSION changes to 20261026.3. The derived archive name and readiness stamp comparison use this version.

Priority: Normal

Estimated code review effort: 1 (Trivial) | ~2 minutes

Change: Bug fix

Possibly related PRs

Suggested reviewers: joshuatam

Merge Risk: Minimal · up to 0b889

No actionable merge-blocking risk is identified in this version-only update.

Pre-merge checks: Passed 5
Check name Status Explanation
Description check Passed The description follows the required template and provides detailed change context, test results, caveats, change type, and checklist status. The recording is not attached, but this is a non-critical …
Title check Passed The title clearly identifies the Gamescope payload version and the main functional changes: FPS capping, present wait handling, and custom Turnip resolutions.
Docstring Coverage Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 1…
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Full details: Description check

Explanation

The description follows the required template and provides detailed change context, test results, caveats, change type, and checklist status. The recording is not attached, but this is a non-critical omission because the description states that it is available on request.

Full details: Docstring Coverage

Explanation

No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 1 files.

Finishing Touches
📝 Generate docstrings
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No issues found across 2 files

View guided diff | Turn on auto-fix | Re-trigger cubic

@utkarshdalal

Copy link
Copy Markdown
Owner Author

Device results for this build (modernDebug of this branch, payload re-extracted to 20261026.3 on first launch, ICD md5 4630ea1d):

Odin 3 (Adreno, wrapper/System route for Blazing Chrome, Turnip for Hades II)

run cap rate present waits picture
Blazing Chrome, DXVK 2.7.1 60 59.73 fps done/latched 9-17 ms, dxvk-frame idle OK
Blazing Chrome, DXVK 2.7.1 30 29.90 fps ~17 ms, acquire holds the rest of the period OK
Hades II, vkd3d, LSFG x3 60 59.78 source, HUD 120 (panel-bound) first wait 98 ms during loading, then 16-19 ms OK

Earlier passes with the same ICD on this device also covered DXVK 2.4.1, 2.6.1 and 1.10.3 (control) on the wrapper route, 2.7.1 on Turnip at 1280x720 and 1024x576, and Hades II with LSFG off at cap 30; all within 1 % of cap, no timeouts.

Poco F6 (Snapdragon 8s Gen 3, Turnip, DXVK 2.4.1)

run cap rate present waits picture
Balatro (OpenGL via zink) 60 / 30 55.7 / 28.7 (app metric) n/a splash clears, menu OK
Blazing Chrome 60 59.51 fps latched/done, max 14.4 ms OK
Blazing Chrome 30 29.85 fps max 15.1 ms OK
Blazing Chrome 1024x576 60 59.43 fps max 14.7 ms single image, no shear
L.A. Noire 30 29.66 fps all latched, max 16.9 ms OK

No hangs, no crashes, no one-second waits on either device. Containers restored after each run.

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