-
-
Notifications
You must be signed in to change notification settings - Fork 168
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
NTsync (aka Winesync+Fastsync) - feedback topic #936
Comments
I've got some numbers for you from the in-game-benchmark in Total War: Troy in 1080p / Ultra. With NTSync: Scene 1: 75,2 fps WINE_DISABLE_FAST_SYNC=1: Scene 1: 74,0 fps (-1,6 %) Analysis: Scene 2 is the most CPU-bound of the three. As you see, there is quite a pronounced impact from the change. My test system:
|
Company of Heroes 2 - WQHD, Higher preset With NTSync (2nd run): Min: 56,00 fps WINE_DISABLE_FAST_SYNC=1: Min: 56,99 fps (+1,7 %) Notes: There is a performance regression with NTSync in this older game. The first run with NTSync showed even worse numbers (77 fps avg) - but that might have been due to the shader compilation, hence I took the numbers from the second run which did show some improvements. I wouldn't read too much into this result as it is still in the range of normal deviation in this benchmark. Maybe still something worth to investigate? |
With only 2 runs it's hard to say if it's more than margin of error considering such minuscule differences. If the average on 10 runs leads to a similar gap, then that could be considered as an actual perf drop. Now and that being said, if the |
thanks for trying to look into this. I have access to the EGS-version of A Total War Saga: Troy so I did a couple of tests with "campaign_benchmark" at Ultra preset settings - there seems to be a difference between regular wineserver-sync and ntsync at least. UPD. another run I made mangolog https://flightlessmango.com/games/26979/logs/3576 please make sure the terminal output or log show |
Those results are making much more sense @Iglu47 . Thanks. |
I have no control over the build process, I simply used the proton-winesync binary packages ptr1337 provided in CachyOS for testers. That means by deduction that my numbers are highly likely just as valid as Iglu47's, as I've used the defaults even if they look different. Our hardware and software setup is very different after all. I will leave more testing to others as I spend enough of my time with this experimental version that has other issues - even if Tk-Glitch considers these expected behavior. . |
@ms178 The proton build isn't enough for NTsync to work. Unless @ptr1337 added similar patches and handling to what we're doing in linux-tkg, you would need both You didn't confirm you were seeing |
Please have mercy with me, I am not a programmer and just wanted to help you guys. :) Admittedly I had missed that crucial part of the process. |
Hello, your resident Overwatch player reporting in! Soon as I have time I can get performance numbers vs server sync but I am glad to report Battle.net crashing wineserver in some cases with fsync doesn’t happen with winesync. (A reliable repro for the fsync issue is to also run Battle.net via Feral’s Gamemode with fsync enabled, such thing doesn’t happen using Winesync!) |
Still present with NTsync for me. Using "wineserver sync" helps as workaround. |
i get hangs on ea's new game app |
Battle.net client struggles with fsync (fails to launch 1/2 the time). So far it hasn't had an issue starting with winesync. In-game performance (WoW) appears to be the same or better than fsync but being an MMO it is fairly subjective. |
Again not a perfect comparison as it's protonified vanilla wine vs actual proton with valve wine but Hogwarts Legacies is running better (10-15 fps at 4k ultra no RT) with fastsync than fsync and hasn't crashed on me yet which was frequently happening on load screens. |
You can also compile a fsync protonfied vanilla wine, then you would have a better comparison. |
winesync tkg is gone from aur |
https://aur.archlinux.org/packages/winesync-dkms & works fine |
There was a specific prebuild protonified wine version of tkg that supported winesync |
Is there some instruction how to build and test winesync? And what's the current status of it? A side question, I recently encountered huge performance improvement in the Witcher 3 (DX12 mode) and Cyberpunk 2077 when Wine-esync is used. I wanted to compare it to Wine+fsync. What is a good way to apply fsync patches to upstream Wine? I didn't find it in Wine-staging and it's not clear how to apply them from other sources. |
Another report for Battle.net working nicely with winesync. On both esync and fsync it would not launch half the time or cause wineserver to coredump sometimes taking the whole system with it. I've been playing StarCraft 2 and Overwatch 2 - both used to work with fsync anyway - with winesync. No problems. Performance in StarCraft 2 is better but it could be any number of reasons since wine-tkg (my custom build of)/wine-ge-custom are very different things. |
Not completely related to this thread, but the crypt32 dll isntalled through winetricks allows to get through this error in my experience, and has for a few other users I have helped in the past. |
Just a follow up. Any recommended way to use Winesync now over upstream kernel and wine? Various repos are quite outdated to apply things. |
The winesync-dkms module + a recent build of wine-tkg with fastsync enabled in the config. That's generally what I do. For Proton, it's a bit trickier, I've been working on a valve tree patchset for that. |
I tried playing around with that, but couldn't figure out how to apply only that on top of upstream Wine. wine-tgk has a ton of stuff and is a bit cumbersome to configure. No matter what I tried, it seemed to pull some extra stuff that I didn't want. It would be nice to have something like wine-staging patchset for it that is easy to apply to upstream Wine. And which repo has an up to date dkms module for winesync? |
What's the current state of this in general? I.e. is it close to getting upstream or more data is needed? Are there any blockers? Not sure where / how to check the status, so asking here. |
@shmerl the status has not changed. |
Generally a rebase against proton 8 would be very interesting for many users, i think. |
porting to wine-valve tree and availability of wenesync module. I'll try to find the time and do something about it |
Is there anyone working on or planning on re-basing against the current wine master since it broke? |
thank you Iglu47 i was planning on doing wine build this week using your patchset and the wine-valve tree as well as proton for steam with the ntsync patches if its doable what reversion or current tree version are your patches compatible with ei. wine-protonified, or wine-protontified bleeding edge, same for steams proton which build is most compatible? for now since i have dxvk gasync installed via aur with arch will try it using system dxvk and see if it all works till and if the developer of the new dxvk patch files work is included into the frogging family of patches. |
Garden Warfare 2? |
If you'd bothered to read my initial post, you'd know it's Guild Wars 2. |
Still no ack on the new patchset. May be maintainers are on vacation. Let's hope it's approved early next year. |
I assume we need Linux 6.13 to build now, because of the new patch? Cause it doesn't build with 6.12.4 on Arch Linux.
|
You need the appropriate Linux header; that's what this error is about. WINE is userspace. |
I just added ntsync7 support for ntsync5 v7. But then I realized that it is currently only available in linux-cachyos 6.12.6 and maybe in other custom kernels, in ntsync5-dkms from AUR and linux-zen still ntsync5 v6. So now I have created a pull request: #1345 |
I was using this with all three ntsync packages from the AUR with normal Arch |
@nokia8801 With this pull request you will now be able to use ntsync5 again. I just added ntsync7 as a separate version that can be used if you set |
@nokia8801 you need:
Additionally, you will likely need to |
As I said, I already know all this and have been using it like this with no issues for the past month. Using the regular linux kernel from Arch core repository, with three ntsync packages installed from the AUR and wine-tkg-git compiled with ntsync support. I never had to chmod /dev/ntsync btw. However, after commit 0638ad0, it did not build with Linux 6.12.4-arch1-1 and current ntsync packages from the AUR. It showed that error I posted above. Maintainer of the AUR packages says this:
I don't use linux-zen so I was a bit confused. But thanks to @Artewar67 with commit 41f7e24, it now works again and I updated to 10.0-rc3. NTsync works as usual. |
If you're using the regular Arch kernel, you have no ntsync support whatsoever. There will be no ntsync kernel module or device.
WDYM by "ntsync packages"? There's no such thing. There's only patches for the kernel and WINE.
Looking closer at the error again, it's due to an ABI mismatch, not missing headers. Ensure your kernel patches aswell as the headers generated from the patched kernel are from the same patch revision of ntsync as the WINE patches. There was an ABI break recently. Mismatched versions will not work. |
What you mean there is no NTsync support? It works when these packages are installed, using the regular ntsync-dkms Lutris log:
|
Ah, I see. Building the module out-of-tree also works ig. This is a single package which provides multiple packages that each provide (in order) kernel module, kernel headers and udev rules. What causes your error is that the version of the patch this package is based upon must be compatible with the WINE patches; the ABI has changed recently. Incompatible versions will not compile (with your error) and pre-compiled versions will not work correctly. If you want to use the latest ntsync patches for WINE, you need to update this package to the newest kernel patches. You could probably just do that yourself. |
Are there anything else left from Elizabeths side or everything that's to implement has been submitted in v7? I'll be testing soon. Currently in openSUSE TW. Any specific distro you guys recommend to make the testing easier? |
Latest CachyOS has NTSync v7 support |
@Atemu I built your fork last night with the help of a friend, but when I launch games with it, all I get is fsync. I'm using the out-of-tree modules: ntsync-dkms, ntsync-header, and ntsync-common.
Or is there perhaps a compilation flag or launch argument I need in order to launch with ntsync support? Using mainline kernel |
If the device is present and your user has rw access, it should work. Have you disabled fsync and esync? Those currently take precedence. |
Do they take precedence or wine is using both synchronization methods? In your rebase I don't see anything guarding against enabling ntsync when either fsync or esync are enabled. |
Good question; I merely did a dumb cherry-pick of the patches and resolved conflicts. It only prints one It may very well be the case that my rebase is wrong or bad in some way. |
I am asking because my rebase disables the other two when ntsync is enabled, but suffers from an issue with Unity games hanging. I was more interested in making them run with fsync/esync disabled that it didn't occur to me to test with allowing either of them to stay enabled to see if it "fixes" the issue. It's not a solution but it could be an interim hack. |
Are you guys talking about ntsync5 port on valve proton? I was trying to port ntsync and also encountered the unity problem. I solved it by replacing
|
Hm, I don't think it'd be good to have both enabled. I'd actually considered removing esync/fsync support entirely but it touches a dozen places because C doesn't have default values for structs and a revert wouldn't be possible cleanly. I actually also experience a hang in the Planetside 2 launcher which is an old CEF. I actually wrote an email to Elizabeth and she said she doesn't have the bandwidth to look into random rebases of her patches which is fair. She told be to try to repro with regular WINE with her ntsync patches but I haven't gotten around to doing that yet. I'd recommend you do that. If it works with her WINE branch but not your rebase (or mine), we dun goofed up ;) |
I've been using ntsync on mainline wine since 9.8 and I haven't encountered issues with Unity games there or later rebases on top of mainline wine, so I think it is safe to assume that whatever issue this is it's in conjunction with esync/fsync on Proton. I have not encountered the old CEF issue on mainline wine either, or maybe I didn't because there wasn't one, so it's inconclusive in that regard. In the meantime I will queue a rebuild following @Artewar67 's fix and see how that goes. |
@Artewar67 You solution indeed works and it allowed for Unity games to run with ntsync. FWIW for unrelated reasons I had to use my ntsync7 rebase, the complete patchset I used can be found here CachyOS/wine-cachyos@cachyos-9.0-20241206-base...cachyos_staging/ntsync7 I have also updated the AUR ntsync package since |
@loathingKernel so how's the experience any improvements compared to default syncs? |
Does NTsync even work with Proton? I've been happily using it with Wine with Lutris for the past month, but also want to utilize it with Proton on Steam. Do I need a different patch or repository for it? Or is just a matter of compiling proton-tkg with ntsync=true? |
You need to rebase the WINE patches ontop of Proton. This involves solving quite a few conflicts as Proton includes esync/fsync support which hooks into the same sort of places in the code base. @loathingKernel and I apparently did it independently but both have discovered issues that are likely caused by the integration into Proton. |
When it's set to NTsync still works, just wanted to point out this little bug. Edit: It's fixed with the latest revert and just using |
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:
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?
_winesync="true"
in .cfg for linux-tkg, build, install and loading on it_use_fastsync="true"
in .cfg for wine-tkg and build itwine: using fast synchronization.
WINE_DISABLE_FAST_SYNC=1
.*Please don't post conflicts with other patches, versions of Wine, or other things related to building or installing kernel or Wine in THIS thread - this is a place intended for developers and other players to see other people's NTsync test results and determine if there are any significant performance deviations (both up and down) compared to wineserver-sync, esync, fsync. And any issues are saved or added compared to esync/fsync/wineserver-sync only.
The text was updated successfully, but these errors were encountered: