Releases: The412Banner/proton-wine
Release list
Proton 10.0-4 — FEX unixlib + fast-yield (arm64ec/bionic) · stripped + zstd · SDK 28 + SDK 35
🍷 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.wcpis 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
MemoryWineLoadUnixLibByNamentdll loader (load_unixlib_by_name) so Wine can load FEXCore's native.sobackend (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-unixcomponent 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-waitSwitchToThread→NtYieldExecution; 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 +
$PREFIXauto-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-unixbuilds specifically. Other FEX-unixwcps leaveshm_open/shm_unlinkunresolved — Android's bionic doesn't provide those symbols, so the.sofails todlopenand silently falls back to the DLL (the unixlib never actually loads). The Nightlies builds compile in stubs for those two functions, so the.soloads 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
- Install this Proton (appears as
proton-10.0-4-arm64ec). - (Optional) Install a FEXCore
-unixcomponent (WinNative / NightliesFEXCore-…-unix). - Create a fresh arm64ec container, set Wine = this Proton, emulator = FEXCore, and pick the FEX version (the
-unixone if you installed it). - 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)
🍷 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.wcpis 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
.soadd-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-unixbuilds specifically — not other ports. Older/other FEX-unixwcps (e.g. nicholasx417's) leaveshm_open/shm_unlinkunresolved — Android's bionic doesn't provide those symbols, so the.sofails todlopenand silently falls back to the DLL (the unixlib never actually loads). The Nightlies builds compile in stubs for those two functions, so the.soloads 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)
🖥️ 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 (
-2for P11 →proton-11.0-1-arm64ec-2,-3for 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 aswfm.exeloading 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=1per container) fix for the bug that pins one CPU core at 100% via busy-waitSwitchToThread→NtYieldExecution; 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
.sobackend (libarm64ecfex.so/libwow64fex.so) by name, auto-found in$PREFIX/lib/wine/aarch64-unix/; works with any FEX version. Stays dormant until a matched-unixFEXCore is installed (grab one from the Nightlies — use the-unixassets, which stubshm_open/shm_unlinkfor bionic). (arm64ec-relevant.) - 🪶 Stripped + zstd-packed —
-g0 -O2+llvm-strip --strip-all,.wcppacked withzstd -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
- Install the
.wcp(appears asproton-11.0-1-arm64ec-2,proton-10.0-4-arm64ec-3, orproton-10.0-4-x86_64-3). - In your container / shortcut, set Wine = this Proton.
- 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.)
- 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 active —
winex11.socarries theXRR*entry points (XRRGetScreenResources,XRRGetCrtcInfo,XRRConfigCurrentRate, …), i.e.--with-xrandr --with-xrendertook effect on the x86_64 configure path too. - Fast-yield present —
WINE_FAST_YIELDgate inntdll.so. - Debug info stripped — zero
.debug/.symtabsections; ELFs reportstripped. - Correct page size per SDK — SDK 28 segments align to
0x1000(4 KB), SDK 35 to0x4000(16 KB). - zstd container —
.wcpis a zstd tar for fast on-device extraction.
⚠️ Notes
- Installs alongside your current Proton (
-2/-3slots) — 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
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.sofrom 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
MemoryWineLoadUnixLibByNamentdll loader +$PREFIX/lib/winesearch, so Wine can load a FEXCore-unixcomponent'slibarm64ecfex.sobackend 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
- Install this Proton → it appears as
proton-10.0-2-arm64ec. - (For the unixlib path) install a FEXCore
-unixcomponent. - Create a fresh arm64ec container → Wine = this Proton, emulator = FEXCore, and pick the
-unixFEX 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'swinebus.soswapped 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)
🍷 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
.soadd-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-unixbuilds specifically — not other ports. Older/other FEX-unixwcps (e.g. nicholasx417's) leaveshm_open/shm_unlinkunresolved — Android's bionic doesn't provide those symbols, so the.sofails todlopenand silently falls back to the DLL (the unixlib never actually loads). The Nightlies builds compile in stubs for those two functions, so the.soloads 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
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=1the 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=1→NtYieldExecutionuses ausleep(0)fast-yield path.- unset /
WINE_FAST_YIELD=0→ stocksched_yieldbehavior. 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 SwitchToThread → NtYieldExecution, 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 withWINE_FAST_YIELD=1, unset it.⚠️ Profilevc1collides with the GE game-fixes id. The Proton.wcpshipsversionCode 1; if you intend to ship this alongside a GE build, rebuild it asvc0to 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.cNtYieldExecutionenv-var gate).
Proton 11.0-1 — bionic (stock) · SDK 28 (4KB) + SDK 35 (16KB)
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
-zstdvariant 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/fsyncactivate via env (WINEESYNC/WINEFSYNC=1);fsyncneeds kernelfutex_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 thegefull-*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, versionName11.0-1-<arch>, versionCode1→proton-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)
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.dll → winedmo.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/libfor 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
-Wexcludes. (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 / pending —
WINE_DISABLE_SFN(Yakuza 5), NCryptDecrypt (Ghost of Tsushima PSN), unity crash hotfix, RegGetValue VR-mod fix, wineopenxr decouple, dynamic.exerelocation. - 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)
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.dll → winedmo.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/libfor 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
-Wexcludes. (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 / pending —
WINE_DISABLE_SFN(Yakuza 5), NCryptDecrypt (Ghost of Tsushima PSN), unity crash hotfix, RegGetValue VR-mod fix, wineopenxr decouple, dynamic.exerelocation. - 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]
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) PASS —
R32_SFLOATAHB not allocatable;R8G8B8A8_UNORMOK → depth path uses RGBA8-pack. - (c) PASS — courier connects via
$TMPDIR/.X11-unix/X0, sends DRI3PixmapFromBuffers(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)
- Install to a container; set
WINE_DEPTH_COURIER=1in its Wine environment; renderer = Vulkan. - Launch any Vulkan/DXVK scene.
- Read logcat (
-b all, tagSGSR2_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 (typeProton) per container.
Build details
- Base: GE-Proton 11.0-1 · arm64ec + bionic · SDK 28 · Toolchain bylaws/llvm-mingw
- Branch
feat/gate0-depth-courier· commit0614c061193· CI run28540927218