-
-
Notifications
You must be signed in to change notification settings - Fork 195
Description
NTsync (title not approved) is more "Correctness" and "Robustness" alternative implementation of synchronization primitives in Wine from Zebediah Figura (the author of "Esync" and "Fsync").
This requires changes on the Wine side (usually patches are called - fastsync ) and corresponding changes on the kernel side (implemented as a kernel module - winesync. Unlike Fsync, the winesync functionality cannot be used anywhere except Wine).
More details about what problem NTsync solves and what is "implementation of synchronization primitives in Wine" can be found here: https://lkml.org/lkml/2021/1/17/312 and here: sync2022.pdf
Some plans and wishes for tests from @zfigura:
-
Find or get good, convincing data vs server sync. Benchmarks of esync are hard to find and a lot of them are not exactly very convincing (on the order of 50 -> 54 FPS).
-
Test ntsync with applications that break with fsync or esync:
- [21142] Planet Zoo crashes when selecting a friend's avatar
- [20155] Ubisoft launcher hangs on "looking for patches"
- [17625] Yakuza 0 hangs on exit
- [19072] Yakuza 0/Kiwami manual save fails
- [21194] GTAV hangs or something. This issue: Grand Theft Auto V (271590) ValveSoftware/Proton#37
- [20444] System Shock: Enhanced Edition hangs on exit
-
Add this information to the document. I intend to submit this upstream along with the cover letter.
-
Submit kernel patches upstream.
CALL FOR TESTS: anyone who can test games from the "breaks with esync/fsync" list, that would be quite appreciated. Note there's a lot more that break simply because of PulseEvent(), and we've had a couple tested already and they work so I'm not worried about those. All of the above break because of subtler timing problems and I'd like to see if they work with ntsync.
ALSO CALL FOR TESTS: I need good, convincing data comparing winesync vs server side sync. I don't have application names because in the 3-4 years since I wrote esync I've completely forgotten what the most important applications even are.
How to get NTsync working on TkG builds?
- you need set
_winesync="true"
in .cfg for linux-tkg, build, install and loading on it - when you need set
_use_fastsync="true"
in .cfg for wine-tkg and build it - if you did everything correctly, then when you start the game in the output of the terminal or in the logs will appear
wine: using fast synchronization.
- to disable NTsync, set env var
WINE_DISABLE_FAST_SYNC=1
.