Skip to content

Enable fsync and esync#10

Open
Azkali wants to merge 1 commit into
SildurFX:mainfrom
Azkali:enable-fsync-esync
Open

Enable fsync and esync#10
Azkali wants to merge 1 commit into
SildurFX:mainfrom
Azkali:enable-fsync-esync

Conversation

@Azkali

@Azkali Azkali commented Jun 18, 2026

Copy link
Copy Markdown

What

Flip the Wine sync env vars in files/steam/launch-steam.sh to enable fsync (and esync as a fallback):

  • PROTON_NO_FSYNC=10
  • WINEESYNC=01, PROTON_NO_ESYNC=10

Why fsync works on the 4.9 kernel

The comment said fsync "requires Kernel 5.x+", which is why it was off. The L4S kernel backports futex_waitv (syscall 449) — the upstream bf69bad38cf6 primitive that Proton's fsync uses — into the Tegra X1 4.9 kernel. So fsync's kernel dependency is satisfied and Proton can use the fast vectored-futex sync path instead of falling back to slower server-side sync. This is a measurable win in CPU-bound games.

About esync and the dxvk caveat

The previous comment noted esync "crashes dxvk and only works with wined3d". That stays true as a fallback path, but Wine picks fsync first whenever the kernel supports it (which it now does on L4S), so esync is only ever selected when fsync is unavailable. Enabling it gives a graceful fallback without changing behaviour on the L4S kernel, where fsync wins.

PROTON_NO_NTSYNC=1 is left untouched — ntsync needs a 6.12+ driver that isn't backported.

Test

On an L4S device the kernel exposes sys_futex_waitv (kallsyms / syscall 449); with these flags Proton initialises in fsync mode rather than falling back. ntsync remains disabled.

The L4S kernel backports futex_waitv (syscall 449), so Proton fsync works
on the Tegra X1 4.9 kernel despite the "requires 5.x+" note. Enable it for
the faster in-game synchronisation path. Also enable esync as a fallback:
Wine selects fsync first when the kernel supports it, so esync (and its
older dxvk caveat) only comes into play when fsync is unavailable.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant