Repository navigation
gamescope: payload 20261023.2 fixes 64-bit games crashing at vkMapMemory on Android 16 - #2229
utkarshdalal wants to merge 1 commit into
Conversation
…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.
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info
📝 Walkthrough
Merge Risk: ⚪ Minimal · up to
|
|
Closing: the payload bump should follow the shim PR (GameNative/gamenative-drm#11) once it is merged, not precede it. |
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
vkMapMemoryunder 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 turnedvkMapMemory2KHRinto Android 16's exportedvkMapMemory2, a loader trampoline into a dispatch slot the 1.3 device never filled. winevulkan callsp_vkMapMemory2KHRwhenever it is non-NULL, so the call landed on PC 0:Exception 0xc0000005 in Unix callon 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
vkGetDeviceProcAddrdecides whether a name exists, so Wine falls back tovkMapMemoryexactly as it does through the X11 wrapper. Onlylib/libadrenotools_gamescope.sodiffers 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
Checklist
#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.CONTRIBUTING.md.Summary by cubic
Bumps the gamescope payload to
20261023.2so 64-bit games (Control, BioShock 2 Remastered, Cult of the Lamb, Hollow Knight Silksong on Adreno 840/750) no longer crash inside their firstvkMapMemoryon Android 16.The crash came from the ICD shim resolving device entry points via
dlsymon the system libvulkan: the KHR-to-core alias turnedvkMapMemory2KHRinto Android 16's exportedvkMapMemory2, a loader trampoline into a dispatch slot the 1.3 device never filled, and winevulkan callsp_vkMapMemory2KHRwhenever it is non-NULL. The new shim lets the device's ownvkGetDeviceProcAddrdecide whether a name exists, so Wine falls back tovkMapMemoryexactly 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. Onlylib/libadrenotools_gamescope.sodiffers from20261023.1, and the archive is live on both CDN URLs.Written for commit 33b339b. Summary will update on new commits.
Summary by CodeRabbit