The work to improve gaming performance on Steam Deck and Linux desktops for AMD GPUs is always ongoing, and it seems we're set for another nice improvement to how smooth games are.
One of the biggest problems is shader compile stutter, where you play through a game first-time and see it stuttering about all over the place until the shaders get built. It's less of a problem in plenty of games if Valve have them ready for download but that's not always possible, and doesn't always solve it. Some games also update a lot and need shader cache updates often, this will again help with those times where it’s not yet available. For games not on Steam, it will also be a huge bonus win for performance.
DXVK 2.0 released back in November 2022 included some major changes to work around it, and work is ongoing in the AMD GPU driver RADV to make use it what's needed. Later NVIDIA drivers have it and the improvements there are quite impressive but the current experimental work in the AMD GPU driver needed work.
As Valve contractor Mike Blumenkrantz blogged about recently going over work they and others have done regarding the VK_EXT_graphics_pipeline_library Vulkan API extension, and the blog post is well worth a read for some background into it but to cut to the chase — the result of the work is a "50,000%" improvement in fast-linking which for gamers should result in a much improved experience for certain games.
The work should hopefully come in Mesa 23.1 due later this year where use of the noted Vulkan extension above should hopefully be turned on by default, and then for Steam Deck players specifically hopefully in something like SteamOS 3.5.
This and more was covered in my recent video:
Direct Link
Blumenkrantz' blog is worth reading. He has a very entertaining way to write about code optimization.
Thanks for saying that, I wouldn't have read the post without this.
(One takeaway for me is though that I'm still fine with having an Nvidia.)
I wonder if VK3D-Proton also has support for this Vulkan Extension. Would make sense as most of the newer games rely on DirectX 12.As far as I know this extension isn't necessary for vkd3d due to differences between DX11 and DX12. For example Apex Legends has recently gained a DX12 mode which has not stuttered for me, at all.
-rwxr-xr-x 1 grogan grogan 116238904 Dec 18 02:13 Borderlands3.exe
-rw-r--r-- 1 grogan grogan 1123144 Jan 30 20:21 vkd3d-proton.cache
-rw-r--r-- 1 grogan grogan 4572840 Jan 31 02:43 vkd3d-proton.cache.write
If that is disabled the pipeline library reverts to storing full info (if I'm understanding it correctly)
I think the best thing for DirectX 12 games is to NOT have RADV_PERFTEST=gpl set. This is from personal experience, but also inline with what I've (now) read.
I've enabled proton experimental for a couple of games and it works nicely. It doesn't completely eliminate stutter, but it's definitely a big step up. The biggest test for it was Star Citizen, which still has noticeable stutter but more in line with DXVK_ASYNC builds. And a far cry from the multiple second stalls with plain DXVK.
If you use GPL right now, the shader cache gets disable. So your games will stutter much more at the beginning because it hast to build all shaders for each session. DXVK_ASYNC still works much better, even though it might corrupt your cache, it's still better than not having one at all.
BTW for all who want to check it out. It got introduced in mesa 22.3.0 and you have to set RADV_PERFTEST=gpl
Last edited by lod on 1 February 2023 at 12:34 pm UTC
I've enabled proton experimental for a couple of games and it works nicely. It doesn't completely eliminate stutter, but it's definitely a big step up. The biggest test for it was Star Citizen, which still has noticeable stutter but more in line with DXVK_ASYNC builds. And a far cry from the multiple second stalls with plain DXVK.
If you use GPL right now, the shader cache gets disable. So your games will stutter much more at the beginning because it hast to build all shaders for each session. DXVK_ASYNC still works much better, even though it might corrupt your cache, it's still better than not having one at all.
BTW for all who want to check it out. It got introduced in mesa 22.3.0 and you have to set RADV_PERFTEST=gpl
İ have started Star Citizen installed with LUG installer script (linux user group for star citizen)
and it has has very little stutters time to time. Almost 1 sec or so. BTW user name is KUDUZ if you wanna play with in star citizen.
also looking forward for Vulkan Api update for Star Citizen.
See more from me