Skip to content

Releases: The412Banner/proton-wine

Proton 10.0-4 — FEX unixlib + fast-yield (arm64ec/bionic) · stripped + zstd · SDK 28 + SDK 35

Choose a tag to compare

@The412Banner The412Banner released this 13 Jul 14:41

🍷 Proton 10.0-4 — FEX unixlib support · arm64ec (bionic)

Bionic arm64ec Proton 10.0-4 (Valve's latest 10.x point release), recompiled from source against Android bionic — a drop-in Wine/Proton runtime for Winlator-bionic emulators, carrying the built-in FEXCore unixlib load-by-name loader.

🪶 Smaller & faster to install: these builds are now compiled -g0 -O2 (no debug info) and stripped (llvm-strip --strip-all), cutting the installed tree from ~2 GB down to ~390 MB. The .wcp is now zstd-packed (zstd -T0 -19), dropping the download from 269 MB (xz) → ~88 MB (~3× smaller) and decompressing far faster (the app's ContentsManager auto-detects xz/zstd, so no app change is needed). CI is also ccache-accelerated now, so rebuilds are much faster. Assets: arm64ec, for SDK 28 (Android 9+, 4 KB pages) and SDK 35 (Android 15 / 16 KB pages).


✨ What it provides / does

  • 🎮 Runs Windows games on Android (arm64ec) — via Wine + FEXCore
  • 🆕 Valve Proton 10.0-4 base — the latest 10.x point release
  • 🪝 FEX unixlib loader — adds the MemoryWineLoadUnixLibByName ntdll loader (load_unixlib_by_name) so Wine can load FEXCore's native .so backend (libarm64ecfex.so / libwow64fex.so) by name
  • 📁 Auto-finds the FEX .so — searches $PREFIX/lib/wine/aarch64-unix/ on its own, so a separately-installed FEXCore -unix component is picked up with no app change
  • Fast-yield gate — opt-in (WINE_FAST_YIELD=1) fix for the bug that pins one CPU core at 100% via busy-wait SwitchToThreadNtYieldExecution; better perf/battery. Dormant by default (no behavior change unless the env var is set) — full parity with Proton 11
  • 🧩 Works with any FEXCore version — not locked to one
  • 🖼️ Graphics via DXVK / VKD3D → Vulkan (Turnip / Adreno)
  • 🔄 esync + fsync + ntsync — modern threading for heavy games
  • 🤖 Bionic — works on Bannerlator, WinNative, and other Winlator-bionic apps

In one sentence: it's the latest Proton 10.0-4 at full parity with P11's consolidated build — FEX unixlib loader + $PREFIX auto-search + env-gated fast-yield — that loads the FEX unixlib on its own with no app changes, now a fraction of the download size.


✅ Device-verified

Booted in a fresh arm64ec container (proton-10.0-4-arm64ec + emulator FEXCore + a FEXCore-…-unix component). /proc/<pid>/maps confirmed libarm64ecfex.so loaded with executable segments from .../lib/wine/aarch64-unix/ — the end-to-end FEX-unixlib load. Without a -unix FEX component it safely falls back to the standard in-DLL JIT. This stripped + zstd build was re-verified booting/rendering on real hardware.


🌙 Matching FEX unixlib builds (Nightlies)

The unixlib loader stays dormant until you install a matched -unix FEXCore. Grab one from the Nightlies:

➡️ https://github.com/The412Banner/Nightlies/releases

Look for the -unix assets on the latest build (e.g. FEX-…-Nightly-…-unix.wcp). Install that alongside this Proton and the .so companion is picked up automatically — no app change.

⚠️ Use the Nightlies -unix builds specifically. Other FEX -unix wcps leave shm_open/shm_unlink unresolved — Android's bionic doesn't provide those symbols, so the .so fails to dlopen and silently falls back to the DLL (the unixlib never actually loads). The Nightlies builds compile in stubs for those two functions, so the .so loads correctly.


📦 Which file do I want?

Your device Pick
Newer device / Android 15+ / 16 KB pages proton-10.0-4-arm64ec-sdk35.wcp
Everything else (API 28, 4 KB pages) proton-10.0-4-arm64ec-sdk28.wcp

Both assets are arm64ec and ready to install.

🚀 How to use

  1. Install this Proton (appears as proton-10.0-4-arm64ec).
  2. (Optional) Install a FEXCore -unix component (WinNative / Nightlies FEXCore-…-unix).
  3. Create a fresh arm64ec container, set Wine = this Proton, emulator = FEXCore, and pick the FEX version (the -unix one if you installed it).
  4. Boot your game.

🧩 Compatible with

  • Apps: Bannerlator, WinNative, and other Winlator-bionic / Cmod-lineage emulators (bionic ABI, /system/bin/linker64)
  • Translators: FEXCore (any version) for x86 / x86_64
  • Graphics: DXVK / VKD3D-Proton → Vulkan (Turnip / Adreno)

⚠️ Notes

  • arm64ec requires a fresh container.
  • x86_64 is intentionally omitted. The x86_64 build has the same pre-existing box64 display bug as Proton 11 (unrelated to this strip/zstd work), so only arm64ec is shipped.
  • This is stock Valve Proton, not GE-Proton — no GE game-fixes / FSR / OptiScaler tier.
  • The FEX unixlib loader is build-ahead: games run identically today; it future-proofs you for when FEX ships thin DLLs that need the native .so.

Credit: the FEXCore unixlib load-by-name loader (MemoryWineLoadUnixLibByName / load_unixlib_by_name) and the env-gated fast-yield path (WINE_FAST_YIELD), the same features shipped for Proton 11, now on Proton 10.

Proton Wine 11.0-1 (build-p11-20260712)

Choose a tag to compare

@github-actions github-actions released this 12 Jul 20:35

🍷 Proton 11.0-1 — FEX unixlib support · arm64ec + x86_64 (bionic)

Stock Valve Proton 11.0-1 (final), recompiled from source against Android bionic for arm64ec and x86_64 — a drop-in Wine/Proton runtime for Winlator-bionic emulators, now with the FEX unixlib loader built in.

🪶 Smaller & faster to install: these builds are compiled -g0 (no debug info) and stripped, cutting the installed tree from ~2 GB to ~730 MB and the download to ~80 MB. The .wcp is now zstd-packed, so it decompresses far faster than the old xz (the app auto-detects, no change needed). Assets: arm64ec + x86_64, for SDK 28 (Android 9+) and SDK 35 (Android 15 / 16 KB pages).


🔄 What's different from the last release

Much smaller and faster to install — the runtime itself is unchanged.

When a program is compiled it can carry a big pile of debug information: developer-only "notes" baked inside every file that map the machine code back to the original source (line numbers, internal names, and so on). It never runs — it's only there for a developer investigating a crash — but it takes up a huge amount of space. The previous release shipped with all of it left in. This release removes it (and avoids generating it in the first place), then packs the files with the faster zstd format.

The size difference

Last release (build-p11-20260709) This release
arm64ec download ~263 MB ~90 MB
x86_64 download (not released) ~59 MB
Installed on device ~2 GB ~730 MB

That's roughly a third of the download and a third of the storage — the debug notes were literally bigger than the actual runtime. It also installs quicker (less to unpack, and zstd decompresses much faster than the old format).

Nothing about how it runs changed: same Proton 11.0-1, same FEX unixlib support, same performance — games run identically. (If a Proton bug ever needs a full crash report, an un-stripped copy is kept on the build side to match against.)

Also new this release: x86_64 assets alongside arm64ec. On ARM phones, use arm64ec — see KNOWN_ISSUES.md; the x86_64 build is for box64/x86 setups.


✨ What it provides / does

  • 🎮 Runs Windows games on Android (arm64ec) — via Wine + FEX or wowbox64
  • 🆕 Latest Valve Proton 11.0-1 base — not an old snapshot
  • Fast-yield gate — opt-in (WINE_FAST_YIELD=1) fix for the bug that pins one CPU core at 100%; better perf/battery
  • 🪝 FEX unixlib loader — can load FEX's native .so add-on (the new thing we built); future-proofs you for when FEX makes it required
  • 📁 Auto-finds the FEX .so — searches the right folder on its own, so no app change needed
  • 🧩 Works with any FEXCore version — not locked to one
  • 🎞️ Video / FMV — ships winedmo (built against ffmpeg-8); actual decoding needs the emulator app's imagefs to supply the ffmpeg-8 libs (current Bannerlator / WinNative do), else it falls back to gstreamer.
  • 🖼️ Graphics via DXVK / VKD3D → Vulkan (Turnip / Adreno)
  • 🔄 esync + fsync + ntsync — modern threading for heavy games
  • 🤖 Bionic — works on Bannerlator, WinNative, and other Winlator-bionic apps

In one sentence: it's your current, sync-modern, fast-yield-capable Proton 11 that also loads the FEX unixlib on its own with no app changes — the build that keeps working when FEX makes the unixlib mandatory.


🌙 Matching FEX unixlib builds (Nightlies)

The unixlib loader stays dormant until you install a matched -unix FEXCore. Grab one from the Nightlies:

➡️ https://github.com/The412Banner/Nightlies/releases

Look for the -unix assets on the latest build, e.g. FEX-…-Nightly-…-unix.wcp (standard) or FEX-…-PPA-unix.wcp (PPA). Install that alongside this Proton and the .so companion is picked up automatically — no app change.

⚠️ Use the Nightlies -unix builds specifically — not other ports. Older/other FEX -unix wcps (e.g. nicholasx417's) leave shm_open/shm_unlink unresolved — Android's bionic doesn't provide those symbols, so the .so fails to dlopen and silently falls back to the DLL (the unixlib never actually loads). The Nightlies builds compile in stubs for those two functions, so the .so loads correctly. Games run fine either way; only whether the unixlib engages differs.


📦 Which file do I want?

Your device Pick
Newer device / Android 15+ / 16KB pages …-sdk35.wcp
Everything else (API 28, 4KB pages) …-sdk28.wcp

.wcp = ready to install · .wcp.xz = smaller download, extract first. All assets are arm64ec.

🧩 Compatible with

  • Apps: Bannerlator, WinNative, and other Winlator-bionic / Cmod-lineage emulators (bionic ABI, /system/bin/linker64)
  • Translators: FEXCore (any version) or wowbox64 for x86 / x86_64
  • Graphics: DXVK / VKD3D-Proton → Vulkan (Turnip / Adreno)

⚠️ Notes

  • arm64ec requires a fresh container.
  • This is stock Valve Proton, not GE-Proton — no GE game-fixes / FSR / OptiScaler tier.
  • The FEX unixlib loader is build-ahead: games run identically today (FEX DLLs are still self-contained); it future-proofs you for when FEX ships thin DLLs that need the native .so.

Base: Valve proton-11.0-1 (final) · Wine unix side built with Android NDK r27d · DLL trees: aarch64-windows (arm64ec) + i386-windows + x86_64-windows.

Refreshed Proton 10.0-4 & 11.0-1 — arm64ec + x86_64 (refresh-rate unlock)

Choose a tag to compare

🖥️ Refreshed Proton 10.0-4 & 11.0-1 — in-game refresh rates unlocked · arm64ec + x86_64 (bionic)

A combined refresh of both Proton 10.0-4 and Proton 11.0-1 (bionic) — the same runtimes you're already using, rebuilt to unlock in-game refresh rates. Everything from the current builds carries over (FEX unixlib loader, fast-yield, stripped + zstd); this adds one new capability on top.

🔀 Installs alongside your current Proton — these use new version slots (-2 for P11 → proton-11.0-1-arm64ec-2, -3 for P10-4 → proton-10.0-4-arm64ec-3 / proton-10.0-4-x86_64-3), so nothing is overwritten and you can switch back any time.

⚠️ Needs a compatible app build too — this Proton is only half of the feature. The refresh unlock requires a Bannerlator (or Winlator-bionic) version with the new "In-game refresh rate" container setting. That setting is what actually enables it: when the container launches, the app writes a small Wine registry change into that container's prefix — "EmulateModelist"="Y" / "EmulateModeset"="Y" under [Software\Wine\X11 Driver], which turns off Wine's built-in display-mode emulation so the panel's real refresh rates reach the game. This is applied automatically to both new and existing containers (and only on a layer that actually supports it — like these). On an older app build without that setting no registry change is made, so this Proton alone won't unlock refresh — it just behaves as a normal runtime.


🖥️ What's new — in-game refresh rates unlocked

Until now, every game's in-game Refresh Rate setting was stuck at 60 Hz, even on a 90 / 120 / 144 Hz phone or handheld. That was never a game limitation — the Windows side simply never saw the higher rates, because the display layer only ever reported a single 60 Hz mode.

These builds fix that at the source. Wine is now compiled with XRandR support, so it can read the real list of refresh rates your screen supports and hand them to the game. In a game's graphics / display settings you'll now be able to pick 90 / 120 / 144 Hz (whatever your panel actually offers) instead of only 60.

(Plain terms: your phone can do 144 Hz, but games could only ever see "60." Now they see the real options.)

🔧 How the two halves fit: the app advertises your panel's rates and, via the "In-game refresh rate" container setting, tells Wine to pass them through; this Proton is the Wine-side half that reads and exposes them to the game. Both are required. Most engines read the mode list once at startup — set the rate, then relaunch the game.


🆕 x86_64 builds added

This release now also carries Proton 10.0-4 x86_64 (SDK 28 + SDK 35), built from the same tree as the arm64ec files — same XRandR refresh unlock, same env-gated fast-yield, same -g0 -O2 + llvm-strip size pass, same zstd packing. At ~57 MB they're the smallest layers here.

⚠️ Read this before picking x86_64. These are new and untested on-device — they are CI builds whose contents were verified (see Verification below), but no game has been booted on them yet. The x86_64 tree runs the whole of Wine through box64 / FEXCore x86_64 emulation, which is slower than arm64ec and has a known rough edge: on the x86_64 side some prefixes ship with RpcSs / PlugPlay disabled, which showed up on Proton 11 as wfm.exe loading but never displaying (RPC_S_SERVER_UNAVAILABLE). That was a prefix service-config problem, not box64 itself, and it has not been re-tested on 10.0-4.

arm64ec remains the recommended, proven runtime. Take x86_64 if you specifically need an x86_64 Wine or want to help test it.


✨ Also included (carried from the current builds)

  • Fast-yield gate — opt-in (WINE_FAST_YIELD=1 per container) fix for the bug that pins one CPU core at 100% via busy-wait SwitchToThreadNtYieldExecution; better perf / battery. Dormant by default (no behavior change unless the env var is set). Present in both arm64ec and x86_64 builds.
  • 🪝 FEX unixlib loader — loads FEXCore's native .so backend (libarm64ecfex.so / libwow64fex.so) by name, auto-found in $PREFIX/lib/wine/aarch64-unix/; works with any FEX version. Stays dormant until a matched -unix FEXCore is installed (grab one from the Nightlies — use the -unix assets, which stub shm_open/shm_unlink for bionic). (arm64ec-relevant.)
  • 🪶 Stripped + zstd-packed-g0 -O2 + llvm-strip --strip-all, .wcp packed with zstd -T0 -19: ~88 MB arm64ec / ~57 MB x86_64 downloads that install fast (the app's ContentsManager auto-detects xz / zstd, no change needed).
  • 🖼️ Graphics via DXVK / VKD3D → Vulkan (Turnip / Adreno) · 🔄 esync + fsync + ntsync threading · 🤖 bionic (works on Bannerlator, WinNative, other Winlator-bionic apps).

📦 Which file do I want?

SDK 28 (Android 9+, 4 KB pages) SDK 35 (Android 15 / 16 KB pages)
Proton 11.0-1 · arm64ec ✅ recommended proton-11.0-1-arm64ec-sdk28.wcp proton-11.0-1-arm64ec-sdk35.wcp
Proton 10.0-4 · arm64ec ✅ recommended proton-10.0-4-arm64ec-sdk28.wcp proton-10.0-4-arm64ec-sdk35.wcp
Proton 10.0-4 · x86_64 🧪 untested proton-10.0-4-x86_64-sdk28.wcp proton-10.0-4-x86_64-sdk35.wcp

All six are ready-to-install zstd .wcp files. Pick the SDK that matches your device (SDK 35 if you're on a 16 KB-page Android 15 device, SDK 28 otherwise), then pick the architecture — arm64ec unless you have a reason not to.

🚀 How to use

  1. Install the .wcp (appears as proton-11.0-1-arm64ec-2, proton-10.0-4-arm64ec-3, or proton-10.0-4-x86_64-3).
  2. In your container / shortcut, set Wine = this Proton.
  3. In the container's settings, set In-game refresh rate to a rate or leave it Unlimited (the default). (Requires an app build that has this setting — see the note up top.)
  4. Launch the game, open its graphics settings, and pick your refresh rate. Relaunch if the list doesn't update live (most engines read it at startup).

🧩 Compatible with

  • Apps: Bannerlator, WinNative, and other Winlator-bionic / Cmod-lineage emulators (bionic ABI, /system/bin/linker64). ⚠️ The refresh unlock needs an app build that has the "In-game refresh rate" container setting; without it, this Proton is just a standard runtime (everything else still works).
  • Translators: FEXCore (any version) for x86 / x86_64 on the arm64ec builds; box64 / FEXCore x86_64 for the x86_64 builds.
  • Graphics: DXVK / VKD3D-Proton → Vulkan (Turnip / Adreno).

✅ Verification

Checked in the packaged binaries of both x86_64 files before publishing:

  • XRandR activewinex11.so carries the XRR* entry points (XRRGetScreenResources, XRRGetCrtcInfo, XRRConfigCurrentRate, …), i.e. --with-xrandr --with-xrender took effect on the x86_64 configure path too.
  • Fast-yield presentWINE_FAST_YIELD gate in ntdll.so.
  • Debug info stripped — zero .debug / .symtab sections; ELFs report stripped.
  • Correct page size per SDK — SDK 28 segments align to 0x1000 (4 KB), SDK 35 to 0x4000 (16 KB).
  • zstd container.wcp is a zstd tar for fast on-device extraction.

⚠️ Notes

  • Installs alongside your current Proton (-2 / -3 slots) — no overwrite; switch back any time.
  • The refresh unlock is a two-part feature — this Proton (the Wine half) plus an app build with the "In-game refresh rate" setting. Both are needed, and your panel has to actually offer higher rates (on a 60 Hz-only display there's nothing extra to show).
  • x86_64 is not device-proven — see the x86_64 section above. arm64ec is the working, tested runtime.
  • x86_64 is Proton 10.0-4 only — there is no x86_64 11.0-1 in this release.
  • Stock Valve Proton, not GE-Proton — no GE game-fixes / FSR / OptiScaler tier.

Base: Valve proton-11.0-1 (final) + proton-10.0-4 · Wine unix side built with Android NDK r27d, XRandR + XRender enabled · arm64ec DLL tree aarch64-windows, x86_64 DLL tree x86_64-windows + i386-windows. Carries the FEX unixlib loader + env-gated fast-yield from the current builds.

Proton 10.0-2c — Controller fix + FEX unixlib (arm64ec/bionic) · SDK 28

Choose a tag to compare

Proton 10.0-2c — Controller fix + FEX unixlib (arm64ec / bionic) · SDK 28

A bionic arm64ec Proton 10.0-2c build combining two things that normally can't coexist: Coffin Colors' controller fix and the FEXCore unixlib loader.

Installs as proton-10.0-2-arm64ec-2.

What's in it

  • Base: Valve Proton 10.0-2c (wine commit 3e255b997c), rebuilt for Android/bionic arm64ec.
  • Controller fix (credit: Coffin Colors): the patched winebus.so from Coffin Colors' Winlator Cmod "Controller Revolution" build, dropped in on the matching 10.0-2c base so controller/HID behaviour is byte-for-byte his fix.
  • FEX unixlib loader: the MemoryWineLoadUnixLibByName ntdll loader + $PREFIX/lib/wine search, so Wine can load a FEXCore -unix component's libarm64ecfex.so backend by name.

Why it's a separate build

winebus.so is ABI-locked to its wine version — Coffin's fix is a 10.0-2c binary and won't drop into a newer Proton without the interface mismatching. So the whole bionic base was re-ported back onto 10.0-2c to pair his exact winebus.so with the unixlib loader. This is a standalone variant, not part of mainline proton_10.0 (which tracks the newer 10.0-4).

Device-verified

Installs, creates a container, and boots on-device (arm64ec + FEXCore).

How to use

  1. Install this Proton → it appears as proton-10.0-2-arm64ec.
  2. (For the unixlib path) install a FEXCore -unix component.
  3. Create a fresh arm64ec container → Wine = this Proton, emulator = FEXCore, and pick the -unix FEX version.

Known issue (not specific to this build)

The in-container Windows file manager (wfm.exe) crashes only when copying a file to the C: drive root (C:\) — copying into any C: subfolder works fine. This is a pre-existing Wine shell32 NULL-pointer bug present across the Proton 10 line, unrelated to the controller fix or unixlib loader. Copy into a subfolder, or use the app's own file manager, meanwhile.

Build

  • SDK 28 (4KB pages), arm64ec only. Branch feat/p10-2c-fexunixlib (276f94f); base build run 29136936208, with Coffin's winebus.so swapped into the packaged layer.

⚠️ Testing build — may cause game instability or crashes. Use at your own risk.

Proton 11.0-1 — FEX unixlib support (arm64ec/bionic)

Choose a tag to compare

@github-actions github-actions released this 09 Jul 17:16

🍷 Proton 11.0-1 — FEX unixlib support · arm64ec (bionic)

Stock Valve Proton 11.0-1 (final), recompiled from source against Android bionic for arm64ec — a drop-in Wine/Proton runtime for Winlator-bionic emulators, now with the FEX unixlib loader built in.


✨ What it provides / does

  • 🎮 Runs Windows games on Android (arm64ec) — via Wine + FEX or wowbox64
  • 🆕 Latest Valve Proton 11.0-1 base — not an old snapshot
  • Fast-yield gate — opt-in (WINE_FAST_YIELD=1) fix for the bug that pins one CPU core at 100%; better perf/battery
  • 🪝 FEX unixlib loader — can load FEX's native .so add-on (the new thing we built); future-proofs you for when FEX makes it required
  • 📁 Auto-finds the FEX .so — searches the right folder on its own, so no app change needed
  • 🧩 Works with any FEXCore version — not locked to one
  • 🎞️ Video / FMV — ships winedmo (built against ffmpeg-8); actual decoding needs the emulator app's imagefs to supply the ffmpeg-8 libs (current Bannerlator / WinNative do), else it falls back to gstreamer.
  • 🖼️ Graphics via DXVK / VKD3D → Vulkan (Turnip / Adreno)
  • 🔄 esync + fsync + ntsync — modern threading for heavy games
  • 🤖 Bionic — works on Bannerlator, WinNative, and other Winlator-bionic apps

In one sentence: it's your current, sync-modern, fast-yield-capable Proton 11 that also loads the FEX unixlib on its own with no app changes — the build that keeps working when FEX makes the unixlib mandatory.


🌙 Matching FEX unixlib builds (Nightlies)

The unixlib loader stays dormant until you install a matched -unix FEXCore. Grab one from the Nightlies:

➡️ https://github.com/The412Banner/Nightlies/releases

Look for the -unix assets on the latest build, e.g. FEX-…-Nightly-…-unix.wcp (standard) or FEX-…-PPA-unix.wcp (PPA). Install that alongside this Proton and the .so companion is picked up automatically — no app change.

⚠️ Use the Nightlies -unix builds specifically — not other ports. Older/other FEX -unix wcps (e.g. nicholasx417's) leave shm_open/shm_unlink unresolved — Android's bionic doesn't provide those symbols, so the .so fails to dlopen and silently falls back to the DLL (the unixlib never actually loads). The Nightlies builds compile in stubs for those two functions, so the .so loads correctly. Games run fine either way; only whether the unixlib engages differs.


📦 Which file do I want?

Your device Pick
Newer device / Android 15+ / 16KB pages …-sdk35.wcp
Everything else (API 28, 4KB pages) …-sdk28.wcp

.wcp = ready to install · .wcp.xz = smaller download, extract first. All assets are arm64ec.

🧩 Compatible with

  • Apps: Bannerlator, WinNative, and other Winlator-bionic / Cmod-lineage emulators (bionic ABI, /system/bin/linker64)
  • Translators: FEXCore (any version) or wowbox64 for x86 / x86_64
  • Graphics: DXVK / VKD3D-Proton → Vulkan (Turnip / Adreno)

⚠️ Notes

  • arm64ec requires a fresh container.
  • This is stock Valve Proton, not GE-Proton — no GE game-fixes / FSR / OptiScaler tier.
  • The FEX unixlib loader is build-ahead: games run identically today (FEX DLLs are still self-contained); it future-proofs you for when FEX ships thin DLLs that need the native .so.

Base: Valve proton-11.0-1 (final) · Wine unix side built with Android NDK r27d · DLL trees: aarch64-windows (arm64ec) + i386-windows + x86_64-windows.

This was inspired by and built off the WinNative teams work originally

P11 fast-yield (WINE_FAST_YIELD) — tester-verified on device

Choose a tag to compare

P11 fast-yield (WINE_FAST_YIELD) — tester-verified on device

Verified on-device by a tester (Cyberpunk 2077) against this exact release: with WINE_FAST_YIELD=1 the pegged prime core dropped from 100% → ~0% with lower power draw and steady FPS. Verified on the tester's hardware, not exhaustively across games — the fast path is still opt-in / default-off by design. See "Verified" and "Caveats" below.

In plain terms

Some games (like Cyberpunk) have background helper threads that, when they've got nothing to do, sit there asking "anything for me yet? anything yet? anything yet?" as fast as possible instead of waiting patiently. That constant asking pins one CPU core at 100% forever — which wastes battery, makes the phone hot, and steals power from the parts actually running the game, so your framerate suffers even though nothing useful is happening.

This build changes one tiny function so that when a thread has nothing to do, it takes a very short breather instead of frantically spinning. That one core stops maxing out, the phone runs cooler and draws less power, and the freed-up headroom can bump the FPS up.

The catch: a few games expect that frantic behavior and can act up or freeze without it — so it isn't forced on. It's an optional switch (WINE_FAST_YIELD=1) you flip on per game if you want it.

What this is

Identical to stock build-p11-20260707 — Proton 11.0-1 for bionic (Android): arm64ec, esync / fsync / ntsync all compiled in — plus one addition: an env-var-gated NtYieldExecution fast-yield path.

Everything else (source, ABI, sync features, prefix, packaging) is the same as the stock 20260707 release. The only functional difference is the gated yield behavior described below.

How to use it

Set an environment variable in the container:

  • WINE_FAST_YIELD=1NtYieldExecution uses a usleep(0) fast-yield path.
  • unset / WINE_FAST_YIELD=0 → stock sched_yield behavior. This is the default and is safe.

No registry key, no profile change — purely the env var. Leave it unset to get exactly the stock 20260707 behavior.

What it fixes

Some games busy-wait: a worker thread spins on SwitchToThreadNtYieldExecution, pegging one CPU core at 100% regardless of any FPS cap. The usleep(0) fast-yield path lets the scheduler actually deschedule that spinner, cutting the wasted core.

Example: Cyberpunk 2077's spin-heavy worker.

Credit: fix discovered and reported by Hugo.

Verified

Tester Hugo ran this exact release on his device (Cyberpunk 2077, HUD overlay), verdict: "Worked!!"

Prime core (GameNative#7) Power draw FPS
Default (flag unset) 100% higher 30 cap
WINE_FAST_YIELD=1 ~0–3% lower (~5.3 W → ~3.9 W on his readout) steady 30 cap

The pegged core is freed with no loss of framerate at the cap. Verified on the tester's hardware only — behavior may differ on other games/devices, so keep it opt-in.

Honest caveats

  • ⚠️ Verified on one tester's device (Cyberpunk), not across a broad game set. It works where a game's spinner is the bottleneck; your mileage may vary elsewhere.
  • ⚠️ The fast path can starve producer threads and hang some games — that is exactly why it is opt-in and default-off. If a game misbehaves with WINE_FAST_YIELD=1, unset it.
  • ⚠️ Profile vc1 collides with the GE game-fixes id. The Proton .wcp ships versionCode 1; if you intend to ship this alongside a GE build, rebuild it as vc0 to avoid the id clash.

Which file for which device

Pick by page size, then arch, then target app:

Page size Arch File For
4 KB (SDK 28) — use unless your device has 16 KB pages arm64ec proton-11.0-1-arm64ec-sdk28.wcp GameNative / Bannerlator (Proton profile)
4 KB (SDK 28) arm64ec proton-wine-11.0-1-arm64ec-sdk28.wcp.xz Winlator CMOD & Ludashi (Wine profile)
4 KB (SDK 28) x86_64 proton-11.0-1-x86_64-sdk28.wcp GameNative / Bannerlator (Proton profile)
4 KB (SDK 28) x86_64 proton-wine-11.0-1-x86_64-sdk28.wcp.xz Winlator CMOD & Ludashi (Wine profile)
16 KB (SDK 35) — newer 16 KB-page devices arm64ec proton-11.0-1-arm64ec-sdk35.wcp GameNative / Bannerlator (Proton profile)
16 KB (SDK 35) arm64ec proton-wine-11.0-1-arm64ec-sdk35.wcp.xz Winlator CMOD & Ludashi (Wine profile)
16 KB (SDK 35) x86_64 proton-11.0-1-x86_64-sdk35.wcp GameNative / Bannerlator (Proton profile)
16 KB (SDK 35) x86_64 proton-wine-11.0-1-x86_64-sdk35.wcp.xz Winlator CMOD & Ludashi (Wine profile)

Both page-size targets are the same wine — only memory page size differs. arm64ec requires a fresh container.

Source

  • SDK 28 build: CI run 28932343496
  • SDK 35 build: CI run 28932344928
  • Built from branch feat/fast-yield-gate @ 08b90e7b (sync.c NtYieldExecution env-var gate).

Proton 11.0-1 — bionic (stock) · SDK 28 (4KB) + SDK 35 (16KB)

Choose a tag to compare

@github-actions github-actions released this 07 Jul 23:19
374c09e

Proton 11.0-1 — bionic (stock) · SDK 28 + SDK 35

Binary-verified (ABI + esync/fsync/ntsync markers checked inside the wcp) · ✅ Verified working on-device — installs, boots, and creates containers on Bannerlator, WinNative, and Winlator (Ludashi)

One release, both page-size targets. Pick by your device:

  • SDK 28 (4 KB pages) — broad compatibility, aarch64-linux-android28. Use this unless your device has 16 KB pages.
  • SDK 35 (16 KB pages)--enable-16kb-pages, aarch64-linux-android35. For newer 16 KB-page devices.

Both are the same wine (same source, same features) — only memory page size differs.

💡 Each build also comes in a -zstd variant that installs much faster (same files, bigger download) — see "Two compression flavors" below.

What this is

Stock Proton 11.0-1 for bionic (Android), for Winlator-Bionic / CMOD / GameNative / Ludashi. Clean Valve build — no GloriousEggroll patches (see the gefull-* releases for the GE flavor).

Built from the finalized proton-11.0-1 stable tag, not a dev snapshot:

  • Upstream release: Valve proton-11.0-1 (stable, 2026-07-07)
  • Upstream wine: that tag's wine submodule = 81d78e4f (Wine 11.0 final, proton_11.0)
  • This build's commit: 374c09eb = 81d78e4f (Valve wine) + GameNative's bionic/arm64ec patch set. 0 upstream commits behind at build time.

Verified — compiled into these binaries

Checked against the real .so/loader inside the arm64ec wcp (strings/readelf), not just the patch list:

Feature Evidence in the binary Status
Bionic ABI loader INTERP = /system/bin/linker64, AArch64, ELF64 ✅ genuine Android/bionic build
arm64ec PE side 608 arm64ec PE DLLs + full wine suite
esync do_esync, esync_init, "esync: up and running", shm (ntdll + wineserver) ✅ compiled in
fsync do_fsync, fsync.c (ntdll + wineserver); source uses __NR_futex_waitv ✅ compiled in (futex-based)
ntsync / in-proc sync full inproc_sync machinery in ntdll + /dev/ntsync in wineserver (kernel fast-sync path) ✅ compiled in

Honest caveats

  • Compiled-in ≠ auto-active. esync/fsync activate via env (WINEESYNC/WINEFSYNC=1); fsync needs kernel futex_waitv. ntsync activates only when the device kernel exposes /dev/ntsync (Linux 6.10+); otherwise it falls back to fsync/esync. Enabling these is the app/container's job, not the wcp's.
  • Video path = gstreamer, not winedmo/ffmpeg-8 (--with-gstreamer --without-ffmpeg). The winedmo→ffmpeg FMV rework lives only in the gefull-* GE builds.
  • DXVK / VKD3D-Proton are NOT in this wcp. Valve 11.0-1 pairs with DXVK 2.7.1-467 / VKD3D-Proton 20260410 / Wine-Mono 11.0.0, but here those ship as separate catalog layers — this is a wine-only wcp.

Install

  • Verified working on-device — installs, boots, and creates containers on Bannerlator, WinNative, and Winlator (Ludashi).
  • Profile: type Proton, versionName 11.0-1-<arch>, versionCode 1proton-11.0-1-arm64ec-1 / proton-11.0-1-x86_64-1.
  • arm64ec requires a fresh container. Emulator (wowbox64 / FEXCore) is injected at launch via HODLL — one wcp serves both.

⚡ Two compression flavors — standard .wcp vs -zstd.wcp

Every build is offered in two forms with identical contents:

  • proton-…-sdkNN.wcp — standard xz-compressed (smaller download).
  • proton-…-sdkNN-zstd.wcp — same build repacked with zstd (faster install).

What the -zstd files are, exactly: a -zstd.wcp is the same wine build, bit-for-bit — the inner tar's SHA-256 is verified identical to its xz twin, so the installed files, versionCode, and boot behavior are unchanged. The only difference is the outer compression. A wcp "install" is really just extraction, and zstd decompresses ~3–5× faster than xz, so the -zstd variants install noticeably quicker on-device. Trade-off: they're ~10 % larger to download (e.g. arm64ec-sdk28: 263 MB xz → 291 MB zstd).

They install with no app changes — the installer tries xz, sees the different magic, and falls back to the zstd path automatically (ContentsManager XZ→ZSTD fallback). Use -zstd if you want the fastest install and don't mind a slightly bigger download; use the plain .wcp to minimise download size.

Which file do I download?

Device / use Standard (xz) ⚡ Fast install (zstd)
Most devices (4 KB), arm64ec — recommended proton-11.0-1-arm64ec-sdk28.wcp proton-11.0-1-arm64ec-sdk28-zstd.wcp
Most devices (4 KB), x86_64 (box64) proton-11.0-1-x86_64-sdk28.wcp proton-11.0-1-x86_64-sdk28-zstd.wcp
16 KB-page devices, arm64ec proton-11.0-1-arm64ec-sdk35.wcp proton-11.0-1-arm64ec-sdk35-zstd.wcp
16 KB-page devices, x86_64 (box64) proton-11.0-1-x86_64-sdk35.wcp proton-11.0-1-x86_64-sdk35-zstd.wcp
Ludashi / Winlator-CMOD (Wine type) the matching proton-wine-…-sdkNN.wcp.xz
  • arm64ec — wine's PE DLLs are native arm64; only the game's x86/x64 code is translated. Faster — recommended.
  • x86_64 — entire wine runs under box64 translation. Slower, sometimes broader compat.

GE-Proton 11.0-1 FULL SDK35/16KB (wine-staging + GE video-rework, bionic arm64ec, gefull-20260624-sdk35)

Choose a tag to compare

Caution: testing build — may be unstable. Use at your own risk.

GE-Proton 11.0-1 FULL (bionic arm64ec, SDK 35 / 16 KB pages) — wine-staging + GE video-rework + game-fixes

The complete GloriousEggroll GE-Proton 11.0-1 stack compiled onto GameNative's bionic arm64ec Proton 11, for Winlator-Bionic (CMOD / Ludashi / Bannerlator).

Our earlier build (tag build-p11-20260624-sdk28) carried only GE's game-fixes tier. This one adds wine-staging, the headline video playback rework, and GE's full proton/hotfix tiers.

Built from: GloriousEggroll GE-Proton11-1 + wine-staging @6cc805e, on Valve proton_11.0 @31af7f9 + GameNative bionic patches.

16 KB-page (SDK 35) variant — same full GE stack as the SDK 28 build, built for newer Android 15+ / 16 KB-page hardware. Installs as proton-11.0-1-arm64ec-3; coexists with the SDK 28 full build (-2) and the game-fixes build (-1).


⬇️ Two downloads — which .wcp do I want?

This release ships two variants of the same GE stack (both 16 KB-page / SDK 35):

File What it is Use this if…
GE-Proton-11.0-1-FULL-arm64ec-bionic-sdk35.wcp Base build (versionCode 3). prefixPack media classes still registered to the removed winegstreamer.dll. You provide your own media-class fix, or don't need in-game FMV/video.
GE-Proton-11.0-1-FULL-arm64ec-bionic-winedmo-sdk35.wcp Recommended. Same binaries, FMV-fixed prefixPack: 40 media-class registrations redirected winegstreamer.dllwinedmo.dll. You want in-game video / cutscenes (FMV) to work out of the box.

Why the winedmo variant exists

GE's video rework removes winegstreamer.dll and routes Media Foundation / quartz playback through winedmo → ffmpeg. But the base prefixPack still registers the old winegstreamer.dll for ~40 media COM classes, so on a fresh prefix those classes fail to instantiate and FMV silently skips — even though winedmo + ffmpeg are present. The winedmo variant rewrites those 40 registrations to point at winedmo.dll, so the correct backend resolves automatically.

⚠️ Both variants still need ffmpeg-8 (libavcodec.so.62 …) in the imagefs /usr/lib for winedmo to decode. The winedmo fix wires up the registry; ffmpeg-8 does the decoding.
⛔ Known limit: D3D9↔D3D11 shared-texture FMV (e.g. Ninja Gaiden) still won't render — that's a DXVK/Turnip present-path wall, not a wine/winedmo issue. Decode works; the shared-surface present doesn't.
🧩 16 KB-page build — use only on 16 KB-page devices (4 KB devices use the SDK 28 release).


Mapped to the GE-Proton11-1 headline release notes

GE-Proton11-1 headlined item Previous build (game-fixes) This build (FULL)
Video playback rework (quartz/MF→winedmo→ffmpeg, gstreamer gutted) — the headline
wine-native RSX3D shim ✅ (rsx.dll)
winealsa channel-count / spatial override
OptiScaler / DLSS dll-override (DLSS/XeSS redirect) ❌ — patch applied to source but override code not compiled into kernelbase; also NVIDIA/upscaler-only, N/A on Adreno
NVIDIA DLSS upgrade ❌ — same kernelbase override (not in binary); NVIDIA-only
.exe dynamic relocation (FFXIV)
FSR fullscreen hack (WINE_FULLSCREEN_FSR)
WM-decoration toggle (WINE_NO_WM_DECORATION)
WINE_BLOCK_HOSTS anticheat host-block
updated Star Citizen patches
Task Bar Hero patches ❌ (dropped)
wine-staging (full patchset)
d7vk (D3D7→Vulkan) ❌ — ships as a separate PE DLL layer, not wine source
Discord bridge / xrandr-wayland / VRChat / standalone VR ❌ — N/A on Android

This build carries essentially the entire GE-Proton11-1 stack; the only omissions are d7vk (a separable PE layer) and desktop-Linux/VR features that don't apply to Android.


Full contents (verified compiled into the shipped binaries)

  • wine-staging — full patchset minus GE's curated -W excludes. (First validated wine-staging build for bionic arm64ec.)
  • GE video playback rework — winegstreamer media backend removed; quartz / Media Foundation video routed through winedmo → ffmpeg + RSX3D shim. ⚠️ needs ffmpeg-8 (libavcodec.so.62 …) in the imagefs /usr/lib.
  • GE game-fixes — PSO2, EAC timeout, Star Citizen, Vanguard Saga of Heroes, Assetto Corsa HUD, Dragon Age: Inquisition xinput, Task Bar Hero, Guilty Gear Accent Core Plus R.
  • GE proton tier — FSR fullscreen hack, WM-decoration toggle, WINE_BLOCK_HOSTS (anticheat), winealsa channel override, mutter→cinnamon detection. (OptiScaler/DLSS dll-override patch applied to source but did not compile into kernelbase — and is NVIDIA/upscaler-only, N/A on Adreno.)
  • GE hotfix / pendingWINE_DISABLE_SFN (Yakuza 5), NCryptDecrypt (Ghost of Tsushima PSN), unity crash hotfix, RegGetValue VR-mod fix, wineopenxr decouple, dynamic .exe relocation.
  • GameNative bionic/android — 47 patches (esync/fsync, dosdevices, sysvshm, winex11 keyboard …) reconciled with the GE stack.

Verification — markers confirmed in shipped binaries via strings | grep

Marker Binary Count
WINE_NO_OPEN_FILE_SEARCH (pso2) ntdll.so 1
EAC_LAUNCHERDIR (eac) ntdll.so 1
Star Citizen (silence-sc) user32.dll 3
winedmo_create_color_converter (video rework) winedmo.dll 14
winegstreamer (removed) 0
WINE_FULLSCREEN_FSR (FSR) win32u.so 4
WINE_NO_WM_DECORATION win32u.so 1
WINE_BLOCK_HOSTS (host block) ws2_32.dll 5
WINE_DISABLE_SFN (Yakuza) ntdll.so 1
rsx.dll (RSX3D shim) present

Architecture

arm64ec (bionic — interpreter /system/bin/linker64, Android 35 / NDK r27d, 16 KB memory pages). 609 arm64ec PE DLLs, full wine suite.

WCP file

GE-Proton-11.0-1-FULL-arm64ec-bionic-sdk35.wcp — Proton type, versionCode 3 → installs as proton-11.0-1-arm64ec-3. 16 KB-page build — use only on 16 KB-page devices (4 KB devices use the SDK 28 build). Needs ffmpeg-8 in the imagefs for winedmo video playback.

GE-Proton 11.0-1 FULL (wine-staging + GE video-rework, bionic arm64ec, gefull-20260624-sdk28)

Choose a tag to compare

Caution: testing build — may be unstable. Use at your own risk.

GE-Proton 11.0-1 FULL (bionic arm64ec) — wine-staging + GE video-rework + game-fixes

The complete GloriousEggroll GE-Proton 11.0-1 stack compiled onto GameNative's bionic arm64ec Proton 11, for Winlator-Bionic (CMOD / Ludashi / Bannerlator).

Our earlier build (tag build-p11-20260624-sdk28) carried only GE's game-fixes tier. This one adds wine-staging, the headline video playback rework, and GE's full proton/hotfix tiers.

Built from: GloriousEggroll GE-Proton11-1 + wine-staging @6cc805e, on Valve proton_11.0 @31af7f9 + GameNative bionic patches.

Installs as proton-11.0-1-arm64ec-2; coexists with the game-fixes build (-1).


⬇️ Two downloads — which .wcp do I want?

This release ships two variants of the same GE stack:

File What it is Use this if…
GE-Proton-11.0-1-FULL-arm64ec-bionic.wcp Base build (versionCode 2). prefixPack media classes still registered to the removed winegstreamer.dll. You provide your own media-class fix, or don't need in-game FMV/video.
GE-Proton-11.0-1-FULL-arm64ec-bionic-winedmo-sdk28.wcp Recommended. Same binaries, FMV-fixed prefixPack: 40 media-class registrations redirected winegstreamer.dllwinedmo.dll. You want in-game video / cutscenes (FMV) to work out of the box.

Why the winedmo variant exists

GE's video rework removes winegstreamer.dll and routes Media Foundation / quartz playback through winedmo → ffmpeg. But the base prefixPack still registers the old winegstreamer.dll for ~40 media COM classes, so on a fresh prefix those classes fail to instantiate and FMV silently skips — even though winedmo + ffmpeg are present. The winedmo variant rewrites those 40 registrations to point at winedmo.dll, so the correct backend resolves automatically.

⚠️ Both variants still need ffmpeg-8 (libavcodec.so.62 …) in the imagefs /usr/lib for winedmo to decode. The winedmo fix wires up the registry; ffmpeg-8 does the decoding.
⛔ Known limit: D3D9↔D3D11 shared-texture FMV (e.g. Ninja Gaiden) still won't render — that's a DXVK/Turnip present-path wall, not a wine/winedmo issue. Decode works; the shared-surface present doesn't.


Mapped to the GE-Proton11-1 headline release notes

GE-Proton11-1 headlined item Previous build (game-fixes) This build (FULL)
Video playback rework (quartz/MF→winedmo→ffmpeg, gstreamer gutted) — the headline
wine-native RSX3D shim ✅ (rsx.dll)
winealsa channel-count / spatial override
OptiScaler / DLSS dll-override (DLSS/XeSS redirect) ❌ — patch applied to source but override code not compiled into kernelbase; also NVIDIA/upscaler-only, N/A on Adreno
NVIDIA DLSS upgrade ❌ — same kernelbase override (not in binary); NVIDIA-only
.exe dynamic relocation (FFXIV)
FSR fullscreen hack (WINE_FULLSCREEN_FSR)
WM-decoration toggle (WINE_NO_WM_DECORATION)
WINE_BLOCK_HOSTS anticheat host-block
updated Star Citizen patches
Task Bar Hero patches ❌ (dropped)
wine-staging (full patchset)
d7vk (D3D7→Vulkan) ❌ — ships as a separate PE DLL layer, not wine source
Discord bridge / xrandr-wayland / VRChat / standalone VR ❌ — N/A on Android

This build carries essentially the entire GE-Proton11-1 stack; the only omissions are d7vk (a separable PE layer) and desktop-Linux/VR features that don't apply to Android.


Full contents (verified compiled into the shipped binaries)

  • wine-staging — full patchset minus GE's curated -W excludes. (First validated wine-staging build for bionic arm64ec.)
  • GE video playback rework — winegstreamer media backend removed; quartz / Media Foundation video routed through winedmo → ffmpeg + RSX3D shim. ⚠️ needs ffmpeg-8 (libavcodec.so.62 …) in the imagefs /usr/lib.
  • GE game-fixes — PSO2, EAC timeout, Star Citizen, Vanguard Saga of Heroes, Assetto Corsa HUD, Dragon Age: Inquisition xinput, Task Bar Hero, Guilty Gear Accent Core Plus R.
  • GE proton tier — FSR fullscreen hack, WM-decoration toggle, WINE_BLOCK_HOSTS (anticheat), winealsa channel override, mutter→cinnamon detection. (OptiScaler/DLSS dll-override patch applied to source but did not compile into kernelbase — and is NVIDIA/upscaler-only, N/A on Adreno.)
  • GE hotfix / pendingWINE_DISABLE_SFN (Yakuza 5), NCryptDecrypt (Ghost of Tsushima PSN), unity crash hotfix, RegGetValue VR-mod fix, wineopenxr decouple, dynamic .exe relocation.
  • GameNative bionic/android — 47 patches (esync/fsync, dosdevices, sysvshm, winex11 keyboard …) reconciled with the GE stack.

Verification — markers confirmed in shipped binaries via strings | grep

Marker Binary Count
WINE_NO_OPEN_FILE_SEARCH (pso2) ntdll.so 1
EAC_LAUNCHERDIR (eac) ntdll.so 1
Star Citizen (silence-sc) user32.dll 3
winedmo_create_color_converter (video rework) winedmo.dll 14
winegstreamer (removed) 0
WINE_FULLSCREEN_FSR (FSR) win32u.so 4
WINE_NO_WM_DECORATION win32u.so 1
WINE_BLOCK_HOSTS (host block) ws2_32.dll 5
WINE_DISABLE_SFN (Yakuza) ntdll.so 1
rsx.dll (RSX3D shim) present

Architecture

arm64ec (bionic — interpreter /system/bin/linker64, Android 28 / NDK r27d). 609 arm64ec PE DLLs, full wine suite.

WCP file

GE-Proton-11.0-1-FULL-arm64ec-bionic.wcp — Proton type, versionCode 2 → installs as proton-11.0-1-arm64ec-2. Needs ffmpeg-8 in the imagefs for winedmo video playback.

Proton-Wine 11.0-1 (arm64ec/bionic) — SGSR2 Depth-Courier Probe [Gate 0 · AHB-send handshake fix]

Choose a tag to compare

Proton-Wine 11.0-1 (arm64ec / bionic) — SGSR2 Depth-Courier [Gate 0 · AHB-send handshake fix]

Experimental / testing build — not a general-use release.

Patched GE-Proton 11.0-1 (arm64ec, bionic, SDK 28) carrying the Gate 0 depth-export "courier" probe for the SGSR2 temporal upscaling effort. It does not upscale anything and has no visible effect on games — it validates the guest→host depth-buffer transport a future SGSR2 renderer needs.

This revision (AHB-send handshake fix)

Gate 0 is now proven end-to-end on hardware — the guest courier sends a depth AHardwareBuffer and the host X server receives it. This build fixes an ordering deadlock: the courier previously called GetInputFocus (a blocking X round-trip) before sending the AHB, while the host X server was itself blocked waiting for that AHB — so neither side progressed. Reordered to send the AHB first over the socketpair, then confirm acceptance, with a 5 s timeout so nothing can hang. (Pairs with a host-side change that moves the receive off the X-server thread.)

On-device Gate 0 status (AYANEO Pocket FIT / Adreno 750 / Turnip)

  • (a) PASS — wrapper advertises VK_ANDROID_external_memory_android_hardware_buffer.
  • (b) PASSR32_SFLOAT AHB not allocatable; R8G8B8A8_UNORM OK → depth path uses RGBA8-pack.
  • (c) PASS — courier connects via $TMPDIR/.X11-unix/X0, sends DRI3 PixmapFromBuffers (modifier 1256), and the host receives it (frameId + dims). This build completes the AHB handoff so the full buffer transfers.

Inert by default — safe to install

Behaves identically to stock GE-Proton 11.0-1 unless WINE_DEPTH_COURIER=1 is set for a container; otherwise it returns immediately (no thread, no host device, no X connection).

How to run the probe (testers)

  1. Install to a container; set WINE_DEPTH_COURIER=1 in its Wine environment; renderer = Vulkan.
  2. Launch any Vulkan/DXVK scene.
  3. Read logcat (-b all, tag SGSR2_COURIER) for the (a)/(b)/(c) results + the AHB-handoff logs.

Asset

  • proton-11.0-1-arm64ec-sgsr2-depth-courier-gate0-ahbfix.wcp — install as a Proton component (type Proton) per container.

Build details

  • Base: GE-Proton 11.0-1 · arm64ec + bionic · SDK 28 · Toolchain bylaws/llvm-mingw
  • Branch feat/gate0-depth-courier · commit 0614c061193 · CI run 28540927218

⚠️ Development probe. No upscaler, no gameplay benefit yet — infrastructure validation only. DXVK untouched; default app/runtime unaffected.