Skip to content

gamescope: payload 20261023.2 fixes 64-bit games crashing at vkMapMemory on Android 16 - #2229

Closed
utkarshdalal wants to merge 1 commit into
masterfrom
gamescope-payload-gdpa-gate
Closed

utkarshdalal wants to merge 1 commit into
masterfrom
gamescope-payload-gdpa-gate

Conversation

@utkarshdalal

@utkarshdalal utkarshdalal commented Oct 23, 2026 •

Copy link
Copy Markdown
Owner

Description

Bumps the gamescope payload to 20261023.2: 20261023.1 (PR #2227) plus the ICD shim from GameNative/gamenative-drm device-proc-gdpa-gate (GameNative/gamenative-drm#11).

64-bit games crashed inside their first vkMapMemory under gamescope on Android 16 while X11 worked: Cyber's Control, BioShock 2 Remastered and Cult of the Lamb (Adreno 840, Turnip Gen8 V38) and Yurim's Hollow Knight Silksong (Adreno 750, Turnip 26.2.0 R4). The shim resolved device entry points through dlsym on the system libvulkan before asking the device, and its KHR-to-core alias turned vkMapMemory2KHR into Android 16's exported vkMapMemory2, a loader trampoline into a dispatch slot the 1.3 device never filled. winevulkan calls p_vkMapMemory2KHR whenever it is non-NULL, so the call landed on PC 0: Exception 0xc0000005 in Unix call on Proton 11, or the loader_thunks assert on Proton 9, whose dialog hides behind the splash. Android 15 does not export those names, which is why the Odin 3 never hit it.

With the new shim the device's own vkGetDeviceProcAddr decides whether a name exists, so Wine falls back to vkMapMemory exactly as it does through the X11 wrapper. Only lib/libadrenotools_gamescope.so differs from 20261023.1; the archive is live on both CDN URLs.

Recording

No visible change on devices that already worked. Odin 3 (Android 15) no-regression run: Vampire Survivors renders under gamescope and X11 with the new shim. The crash itself only occurs on Android 16 devices, none of which are available here; confirmation from Cyber or Yurim is pending.

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 cubic

Bumps the gamescope payload to 20261023.2 so 64-bit games (Control, BioShock 2 Remastered, Cult of the Lamb, Hollow Knight Silksong on Adreno 840/750) no longer crash inside their first vkMapMemory on Android 16.

The crash came from the ICD shim resolving device entry points via dlsym on the system libvulkan: the KHR-to-core alias turned vkMapMemory2KHR into Android 16's exported vkMapMemory2, a loader trampoline into a dispatch slot the 1.3 device never filled, and winevulkan calls p_vkMapMemory2KHR whenever it is non-NULL. The new shim lets the device's own vkGetDeviceProcAddr decide whether a name exists, so Wine falls back to vkMapMemory exactly as it does through the X11 wrapper. Android 15 never exported those names, which is why the Odin 3 no-regression run (Vampire Survivors) passed unchanged; confirmation on Android 16 is pending since no such device was available. Only lib/libadrenotools_gamescope.so differs from 20261023.1, and the archive is live on both CDN URLs.

Written for commit 33b339b. Summary will update on new commits.

View guided diff Turn on auto-fix

Summary by CodeRabbit

  • Updates
    • Updated the Gamescope payload version.

…the shim

64-bit games crashed inside their first vkMapMemory under gamescope on
Android 16 (Control, BioShock 2, Cult of the Lamb on an Adreno 840 phone;
Hollow Knight Silksong on an Adreno 750 phone), while X11 was fine. The
ICD shim resolved device entry points through dlsym on the system
libvulkan.so before asking the device, and the KHR-to-core alias hop
turned vkMapMemory2KHR into Android 16's exported vkMapMemory2: a loader
trampoline into a dispatch slot the 1.3 device never filled. winevulkan
calls p_vkMapMemory2KHR whenever it is non-NULL, so the call landed on
PC 0 and surfaced as "Exception 0xc0000005 in Unix call" (Proton 11) or
the loader_thunks assert whose dialog hides behind the splash (Proton 9).

Payload 20261023.2 is 20261023.1 with the shim from gamenative-drm
device-proc-gdpa-gate: the device's own vkGetDeviceProcAddr now decides
whether a name exists, so Wine falls back to vkMapMemory as it does
through the X11 wrapper.
@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: 19117cec-b0f1-4487-bc93-08c49c021b76
📥 Commits

Reviewing files that changed from the base of the PR and between 5a1d22b and 33b339b.

📒 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 pull request updates GamescopePayload.VERSION from 20261022.13 to 20261023.2. The archive name and readiness stamp continue to derive 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.2. The archive name and readiness stamp continue to derive from the constant.

Priority: ➖ Normal

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

Change: Bug fix

Possibly related PRs

Suggested reviewers: joshuatam

Merge Risk: ⚪ Minimal · up to 33b33

The payload update keeps related identifiers synchronized with no concrete merge-blocking risk.

Pre-merge checks: Passed 5
Check name Status Explanation
Title check Passed The title names the main change: the gamescope payload bump to 20261023.2 that addresses 64-bit games crashing at vkMapMemory on Android 16. The raw summary only shows the VERSION constant change, whi…
Description check Passed The description follows the template. It has a Description section that explains the change and root cause, a Recording section that states no recording is attached and explains why, a Type of Change …
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: Title check

Explanation

The title names the main change: the gamescope payload bump to 20261023.2 that addresses 64-bit games crashing at vkMapMemory on Android 16. The raw summary only shows the VERSION constant change, which is consistent with a payload bump. The title is specific and matches the description and objectives.

Full details: Description check

Explanation

The description follows the template. It has a Description section that explains the change and root cause, a Recording section that states no recording is attached and explains why, a Type of Change section with Bug fix checked, and a Checklist. The recording checkbox is unchecked, and the author explains in the Recording section that no Android 16 device was available for a demonstration.

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

@utkarshdalal

Copy link
Copy Markdown
Owner Author

Closing: the payload bump should follow the shim PR (GameNative/gamenative-drm#11) once it is merged, not precede it.

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