Skip to content

gamescope: payload 20261102.4, shim from gamenative-drm master - #2323

Merged
utkarshdalal merged 1 commit into
masterfrom
gamescope-drm-master-payload-20261102-4
Nov 2, 2026
Merged

utkarshdalal merged 1 commit into
masterfrom
gamescope-drm-master-payload-20261102-4

Conversation

@utkarshdalal

@utkarshdalal utkarshdalal commented Nov 2, 2026 •

Copy link
Copy Markdown
Owner

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:

  • icd_shim: the X11 wrapper's feature lift, served by the shim 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 VkPhysicalDeviceFeatures bits that the X11 path's libvulkan_wrapper.so lifts.
    • At vkCreateDevice it masks them back to what the driver actually answers. textureCompressionBC is not lifted.
    • On a driver that reports its own capabilities this is a no-op.
    • It needs no gamescope, Xwayland or daemon change.

What changes in this PR

  • GamescopePayload.VERSION = 20261102.4.
  • jniLibs/arm64-v8a/libgamenative_drm.so does not change. Built from drm master, the daemon is 9d3619681d9d5e382f78f2953c98ba1eff645334df8b7af8e88bc166ea774828, 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 warnings is clean.
  • tools/check-exports.sh passes.

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

  1. 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, and gn-vkshim: ICD loaded [shim 202611021006 2bfe8b3] in the game process.
  2. 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.
  3. 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.
  4. 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.

Written for commit 2c3945e. Summary will update on new commits.

View guided diff Turn on auto-fix

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.

…ster

Payload 20261102.4 is 20261101.6 with only lib/libadrenotools_gamescope.so
replaced by the shim built from gamenative-drm master 2bfe8b3 (#44 merged,
plus #45: the X11 wrapper's Vulkan feature lift, served by the shim), sha256
814601e9. gamescope and Xwayland are unchanged.

libgamenative_drm.so built from the same master is 9d361968, byte-identical
to the daemon already here: the daemon sources have not changed since #44's
head, so the file does not change.
@coderabbitai

coderabbitai Bot commented Nov 2, 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: e478ce6d-ce17-46a3-ae77-5c21f53192bf
Commits

Reviewing files that changed from the base of the PR and between 2d40575 and 2c3945e.

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 20261102.3 to 20261102.4. The archive name and readiness check use 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 20261102.4. The archive name and readiness check use the updated version.

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

Change: Feature

Possibly related PRs

Suggested reviewers: joshuatam

Merge Risk: Minimal · up to 2c394

No actionable merge-blocking risk remains.

Pre-merge checks: Passed 5
Check name Status Explanation
Title check Passed The title "gamescope: payload 20261102.4, shim from gamenative-drm master" names the main change: the gamescope payload is bumped to 20261102.4 and its shim is rebuilt from gamenative-drm master. The …
Description check Passed The description follows the repository template in substance. It has a clear '## Description' section explaining the shim rebuild, the daemon byte-identity, build and test evidence, payload hashes, an…
Docstring Coverage Passed No eligible functions found in the changed files. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentat…
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 "gamescope: payload 20261102.4, shim from gamenative-drm master" names the main change: the gamescope payload is bumped to 20261102.4 and its shim is rebuilt from gamenative-drm master. The PR's changed file (GamescopePayload.VERSION) and the objectives match this. The title is specific, though somewhat long at 62 characters and 7 words, and it does not mention the Vulkan feature-lift behavior.

Full details: Description check

Explanation

The description follows the repository template in substance. It has a clear '## Description' section explaining the shim rebuild, the daemon byte-identity, build and test evidence, payload hashes, and test steps. The 'Type of Change' and 'Checklist' sections are filled in. The '## Recording' section is left as the template placeholder, and the checklist item for attaching a recording is unchecked. The author states device re-anchoring runs will be added later. The description is mostly complete, so the check passes, but the missing recording should be noted.

Full details: Docstring Coverage

Explanation

No eligible functions found in the changed files. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentation-only edits and deletions within surviving functions are included; unchanged diff context and fully deleted functions are excluded. 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

@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
utkarshdalal merged commit 0ca3d8e into master Nov 2, 2026
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