Skip to content

Use gamescope payload 20261023.4: shim thunks keyed by target, LSFG latch-grid pacing - #2233

Merged
utkarshdalal merged 1 commit into
masterfrom
gamescope-payload-thunk-per-target
Oct 23, 2026
Merged

utkarshdalal merged 1 commit into
masterfrom
gamescope-payload-thunk-per-target

Conversation

@utkarshdalal

@utkarshdalal utkarshdalal commented Oct 23, 2026 •

Copy link
Copy Markdown
Owner

Description

Payload 20261023.4: 20261023.3 with the ICD shim built from gamenative-drm master e1f4474, and the bundled libgamenative_drm.so is the daemon from the same commit. The pair carries GameNative/gamenative-drm#15 (thunks keyed by target) and #14 (LSFG frames paced on the panel's latch grid; the daemon sends vsync notes to a shim that subscribes with the new capability bit, so shim and daemon ship together). The archive is live on both CDN URLs.

Dishonored DE (Epic, D3D9 through DXVK 1.10.3, Proton 11.0-2-x86_64-7, AYN Thor on Turnip) died ~11 s into a gamescope session at its first query reset: vkResetQueryPoolEXT Exception 0xc0000005 in Unix call, a branch to PC 0. The game's process creates two Vulkan devices: zink's first (API 1.2+, no host-query-reset extension, so that name resolved through the alias to Android's exported core vkResetQueryPool trampoline, valid for that device), then DXVK's (API 1.1, extension enabled, correct answer Turnip's own function). The shim kept one thunk per function name per process, so DXVK's device reused zink's thunk and jumped through an Android dispatch slot that is empty for a 1.1 device. The shim now keys thunks by target address, and its diagnostic logs are per device and uncapped (the old per-process caps had hidden the decisive line in two user logs).

Recording

Odin 3 (Adreno 830, Turnip Gen8 V37, gamescope) with the #15 shim before #14 landed: Vampire Survivors (64-bit DXVK, two devices in one process) 60 fps, Blazing Chrome (32-bit) 60 fps, Balatro (zink) ~277 fps; splash hides within 20 ms of the first-map note; no exceptions; no thunk retargets. Not run on the Thor; BrainBeat's next log should show thunk retarget vkResetQueryPoolEXT followed by a second thunk into libvulkan_freedreno.so.

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.

@coderabbitai

coderabbitai Bot commented Oct 23, 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: 607d5242-1ede-41ab-bab6-80082ed6a9b8
📥 Commits

Reviewing files that changed from the base of the PR and between f69f1c3 and 2bb0499.

📒 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

GamescopePayload.VERSION changes from 20261023.3 to 20261023.4. ARCHIVE continues to derive its filename from this 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 20261023.4.

Priority: ➖ Normal

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

Change: Bug fix

Possibly related PRs

Suggested reviewers: joshuatam

Merge Risk: ⚪ Minimal · up to 2bb04

No actionable merge risk remains for this payload version update.

Pre-merge checks: Passed 5
Check name Status Explanation
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.
Title check Passed The title clearly identifies the payload version and the two main fixes included in that payload: target-keyed shim thunks and LSFG latch-grid pacing.
Description check Passed The description follows the required template. It explains the change and cause, provides recording details, selects the change type, and completes all checklist items.
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 1 file

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

…atch-grid pacing

Payload 20261023.4 is 20261023.3 with the ICD shim built from
gamenative-drm master e1f4474, and the bundled libgamenative_drm.so is the
daemon from the same commit. Together they carry:

- gamenative-drm#15: thunks keyed by target address. Dishonored DE (DXVK
  1.10.3, D3D9) died at its first query reset under gamescope because the
  shim kept one thunk per function name per process: zink's device
  resolved vkResetQueryPoolEXT first through an Android loader trampoline
  valid for that device, and DXVK's 1.1 device then reused that thunk and
  jumped through an empty dispatch slot. The shim's diagnostics are now
  per device and uncapped.
- gamenative-drm#14: LSFG generated frames are paced on the panel's latch
  grid, in order. The daemon sends vsync notes to a shim that subscribes
  with the new capability bit, so shim and daemon ship as a pair.
@utkarshdalal
utkarshdalal force-pushed the gamescope-payload-thunk-per-target branch from 2bb0499 to e248ec7 Compare October 23, 2026 13:59
@utkarshdalal utkarshdalal changed the title Use gamescope payload 20261023.4: shim thunks keyed by target Use gamescope payload 20261023.4: shim thunks keyed by target, LSFG latch-grid pacing Oct 23, 2026
@utkarshdalal
utkarshdalal merged commit 9c5f412 into master Oct 23, 2026
3 of 4 checks passed
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