Valve have announced the release of Steam Play Proton 4.11, this is a pretty exciting one and it's pretty huge overall.
Firstly, it was re-based on top of Wine 4.11. So it brings thousands of improvements over, considering that's quite a version bump. Additionally, 154 patches from Proton were upstreamed directly to Wine!
The next exciting bit is that Valve are now funding D9VK (and have been since June according to developer Joshua Ashton), along with shipping it in Proton as part of this update. This Vulkan-based Direct3D 9 renderer is still experimental, so it's not enabled by default as you need to use the "PROTON_USE_D9VK" setting.
Additionally DXVK was updated to 1.3, your current display refresh rate is now actually reported to games, there's more fixes to window management and mouse cursor focus, VR users rejoice as there's support for the latest OpenVR SDKs, FAudio was updated to 19.07, GameMaker titles got a fix for networking and there's a joystick input lag fix and rumble support for certain games.
Possibly just as exciting, is that a bunch of Wine "modules" are now built as Windows PE files instead of Linux libraries. Eventually, this will help some DRM and anti-cheat systems as work progresses on it. Fantastic to see work on that being done!
Is that all? Oh no—there's more.
When Valve identified issues with multi-threaded games as Proton development was being ramped up, CodeWeavers worked on developing the "esync" patchset to address it. It worked well but it came with multiple issues. As Valve said it needed a "special setup" and can cause "file descriptor exhaustion problems in event-hungry applications", they also think it "results in extraneous spinning in the kernel". So, they're working on what they're calling fsync and suggesting changes to accommodate it in the Linux Kernel.
Valve also showed off some proof-of-concept glibc patches, to expose the Kernel patches as part of the pthread library to get it all working. They said that if it's all accepted, "we would achieve efficiency gains by adopting it in native massively-threaded applications such as Steam and the Source 2 engine". You can read more about all that work in this Steam forum post and fsync testing instructions here.
As always, the Proton changelog for Steam Play can be found here.
Thanks to everyone, and Valve, for doing this effort.
Quoting: liamdaweAlso, sorry for the delay everyone. Yesterday was my 31st birthday so I took a rare 100% day off, I'm in catch-up mode now.
Well...
... we hope this was the last time!
Seriously: Happy birthday, young man!
QuoteSo, they're working on what they're calling fsync and suggesting changes to accommodate it in the Linux Kernel.
Valve also showed off some proof-of-concept glibc patches, to expose the Kernel patches as part of the pthread library to get it all working.
That's really great. For Linux gaming, Valve is improving Linux in general.
patch -p1 < 1
patching file include/uapi/linux/futex.h
patching file kernel/futex.c
Hunk #1 succeeded at 195 (offset 12 lines).
Hunk #2 succeeded at 2694 (offset -27 lines).
Hunk #3 succeeded at 2924 (offset -18 lines).
Hunk #4 succeeded at 3824 (offset -5 lines).
Hunk #5 succeeded at 3842 (offset -5 lines).
Hunk #6 succeeded at 3852 (offset -5 lines).
Hunk #7 succeeded at 4036 (offset -5 lines).
patch unexpectedly ends in middle of line
update: it fails.
kernel/futex.o
kernel/futex.c: In function ‘do_futex_wait_multiple’:
kernel/futex.c:2712:7: error: implicit declaration of function ‘futex_setup_timer’; did you mean ‘futex_top_waiter’? [-Werror=implicit-function-declaration]
to = futex_setup_timer(abs_time, &timeout, flags,
^~~~~~~~~~~~~~~~~
futex_top_waiter
kernel/futex.c:2712:5: warning: assignment makes pointer from integer without a cast [-Wint-conversion]
to = futex_setup_timer(abs_time, &timeout, flags,
^
kernel/futex.c:2731:9: error: implicit declaration of function ‘__futex_wait_setup’; did you mean ‘futex_wait_setup’? [-Werror=implicit-function-declaration]
ret = __futex_wait_setup(wb[i].uaddr, wb[i].val,
^~~~~~~~~~~~~~~~~~
futex_wait_setup
cc1: some warnings being treated as errors
scripts/Makefile.build:276: recipe for target 'kernel/futex.o' failed
update 2: seems kernel must be at least 5.1
Last edited by Koopacabras on 31 July 2019 at 10:52 am UTC
Quoting: liamdaweAlso, sorry for the delay everyone. Yesterday was my 31st birthday so I took a rare 100% day off, I'm in catch-up mode now.
I'm surprised you managed that! :D Well done! You should probably do it more often.
I'm particularly interested in this new release because it includes the updates needed to use the new Index controllers in games that have specific support for them. And now the temperature is dropping again, I can continue my VR adventures.
This is all very, very exciting news about SteamPlay Proton, of course, but I'm most excited by the inclusion of D9VK at last! Is the
PROTON_USE_D9VK
setting done in Steam Launch option on a per game basis? (Please say yes.) Exciting news!
Quoting: NanobangFirst off, a very happy birthday to you Liam!You can do it per-game, yes. Do "PROTON_USE_D9VK=1 %command%" as a launch option.
This is all very, very exciting news about SteamPlay Proton, of course, but I'm most excited by the inclusion of D9VK at last! Is thePROTON_USE_D9VK
setting done in Steam Launch option on a per game basis? (Please say yes.)
Exciting news!
See more from me