Stop gamescope from loading libandroid.so (payload 20261023.1)

UT
18d ago
+1-1

Description

Gamescope sessions preload libgndrm_shim.so into every process, and that shim pulled in libandroid.so without using it. On device libandroid.so loads ~215 system libraries, and they look up their own dependencies through our LD_LIBRARY_PATH, so they bind to imagefs libraries with the same name. That is how Samsung (libcrypto.so, #2223) and Xiaomi HyperOS (libjpeg.so, #2225) ended up with "CANNOT LINK EXECUTABLE gamescope", and 5 more shared names (libexpat libpng libvulkan libxml2 libz) were waiting for the next OEM.

This bumps the payload to 20261023.1, which has the libraries from GameNative/gamenative-drm#9:

  • libgndrm_shim.so no longer depends on libandroid.so
  • the ICD shim gets AHardwareBuffer_* from libnativewindow.so, whose dependency tree shares no names with imagefs

Everything else is byte-identical to 20261023 (the gamescope A43 build from #2224), so this also covers the payload bump in #2224. The archive is uploaded and matches on both downloads.gamenative.app and the r2.dev fallback.

Once this is verified on devices, the gamescope_system_libs links from #2223 and #2225 can go.

Recording

Device testing 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.1 so libgndrm_shim.so no longer preloads libandroid.so into every process.

The old shim pulled in libandroid.so, whose ~215 system libraries could bind to imagefs libraries with the same name through LD_LIBRARY_PATH. That caused CANNOT LINK EXECUTABLE gamescope on Samsung (libcrypto.so) and Xiaomi HyperOS (libjpeg.so) devices, with more name collisions waiting. The new payload gets AHardwareBuffer_* from libnativewindow.so, whose dependency tree shares no names with imagefs. Everything else is byte-identical to 20261023 and also carries the gamescope A43 build. Once verified on devices, the gamescope_system_libs links from the earlier Samsung and Xiaomi fixes can go.

Summary by CodeRabbit

  • Updates
    • Updated the Gamescope component version used by the app. The app now uses the newer version when locating the corresponding archive and checking readiness. This update does not change any other user-facing functionality. No additional interface or feature changes are included.