gamescope: payload 20261102.4, shim from gamenative-drm master
Description
This ships the gamescope shim built from gamenative-drm master now that GameNative/gamenative-drm#44 is merged, as payload 20261102.4. App master runs payload 20261102.3, whose shim was built from #44's branch head (5831f1e) before the merge.
drm master (2bfe8b3) has one change beyond #44:
- GameNative/gamenative-drm#45 (d3c4bdf, Joshua Tam), "icd_shim: the X11 wrapper's feature lift, served by the shim". It touches only the shim and docs (
icd_shim/src/advertise.rs(new),lib.rs,placed.rs,proxy.rs,docs/04-gamenative-app.md).- The shim now reports the same ten core
VkPhysicalDeviceFeaturesbits that the X11 path'slibvulkan_wrapper.solifts. - At
vkCreateDeviceit masks them back to what the driver actually answers.textureCompressionBCis not lifted. - On a driver that reports its own capabilities this is a no-op.
- It needs no gamescope, Xwayland or daemon change.
- The shim now reports the same ten core
What changes in this PR
GamescopePayload.VERSION=20261102.4.jniLibs/arm64-v8a/libgamenative_drm.sodoes not change. Built from drm master, the daemon is9d3619681d9d5e382f78f2953c98ba1eff645334df8b7af8e88bc166ea774828, byte-identical to the one already on master (5144ef9c…in the APK after stripping), because the daemon sources are unchanged since #44's head.
Build (NDK 27.3, rustc 1.98.1, daemon and shim in one cargo invocation, SOURCE_DATE_EPOCH = head commit time)
- Test gate passes in
rust:1-bookworm: gndrm-daemon 99 unit + 36 golden + 8 diag, gndrm-android, gndrm-uapi 19 + 2 ABI. - Shim:
cargo test -p adrenotools_gamescope --lib, 75 passed. cargo clippy --target aarch64-linux-android -p adrenotools_gamescope -p gndrm-android -p gndrm-daemon --all-targets -- -D warningsis clean.tools/check-exports.shpasses.
Payload 20261102.4
gamescope-gamenative-20261102.4.tzst, 14303755 B, sha256 b3b30389f635effb5909e71f09f1dd5e43e030df3b19fed729fdda69b2929ad9. It is uploaded and verified on both CDN hosts, including the members from the served copy. It is 20261101.6 with only the shim replaced; every other member is byte-identical. 20261102.3 stays on the CDN.
| member | sha256 | from |
|---|---|---|
lib/libadrenotools_gamescope.so | 814601e954cf0a1e61b5632264dc6608af4e38fac5236301bc6aca5892787698 | gamenative-drm master 2bfe8b3, build string 2026110210062bfe8b3 |
bin/gamescope (unchanged) | 65d024fcee6af1b1f81b2281cc5223ee07615daa05aa8d9ecebe865526f8df69 | as in 20261101.6 |
bin/Xwayland (unchanged) | 4dded8566661423ee3c91490523d96240c85906bd00e0774adc912df9dd38698 | as in 20261101.6 |
Device
The re-anchoring runs (Retroid Pocket 6, Odin 3) will be added to this PR when they are done.
Test steps
- Install the APK and open a game with the display server set to gamescope. On first launch payload 20261102.4 downloads. In logcat, expect
Gamescope payload 20261102.4 ready, andgn-vkshim: ICD loaded [shim 202611021006 2bfe8b3]in the game process. - Set the FPS limit to 60 on a 60 Hz panel.
- Every 10 s:
gn-vkshim: present mode: declared=fifo … cap=60 … feedback=on … discarded=0 fallback=0. gndrm-daemon: vsync: check … late=0.
- Every 10 s:
- A DXVK game at a D3D11 feature level that needs the lifted bits (for example multiViewport) creates its device. On a driver that already reports them, nothing changes, and no mask line is printed.
- Regression check: Dave the Diver with in-game VSync on still holds about 60 at cap 60.
Device re-anchor (RP6, this APK + payload 20261102.4 via the CDN)
| game | path | SF fps / panel | intervals | shim | daemon |
|---|---|---|---|---|---|
| Dave the Diver, in-game VSync on, cap 60, 60 Hz | gamescope DXVK | 59.980 / 59.980 | 3597 single, no gaps | 3600 commits, 3600 presented, 0 discarded, 0 fallback | 4200/4200, late 0 |
| SteamWorld Dig 2, cap 60, 60 Hz | gamescope GL | 59.862 / 59.995 | 3583 single, 8 double | n/a | 3593/3600, late 6 |
Payload re-downloaded on the first launch (.payload.version 20261102.4; members gamescope 65d024fc, Xwayland 4dded856, shim 814601e9; ICD loaded [shim 202611021006 2bfe8b3]). Screenshots unchanged against the .3 build; no new shim/daemon/gamescope log patterns; 0 panics.
Recording
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 20261102.4, replacing the shim built from the gamenative-drm #44 branch head with one built from master once #44 merged. The shim now reports the same ten core Vulkan physical device features that the X11 wrapper lifts, masking them back to the driver's real answers at vkCreateDevice; drivers that report their own capabilities see no change. The daemon is byte-identical to the one already on master, so only the shim member changes in the payload.
Summary by CodeRabbit
- Updates
- Updated the Gamescope payload version. The app now recognizes installations as ready when their version stamp matches the current payload; installations with an older stamp are not considered current.