The Problem ๐
Last year, I switched to AMD graphics. I sort of regret it - I’ve never had more unexplained broken games and unexpected GPU driver timeouts. I’m not sure if it was worth trading away the shady business practices of NVIDIA for a subpar driver experience, but here I am.
Horizon Zero Dawn on PC does not seem well supported anymore at this point in time, and it got hit by a AMD driver regression that causes the driver to give up on the game several minutes to seconds into the game. One that the developers of course have not (and probably wouldn’t) address.
It’s not alone, only very recently AMD announced they’d be fixing a driver bug that caused Fallout 3 and New Vegas (the best Fallout game) to crash.
There wasn’t much to go on on the internet about this, so I’m writing down my solution.
The Solution ๐
The easiest way is fix these issues is to bypass the DirectX API, and use Vulkan. AMD’s Vulkan implementation isn’t without bugs, but it gets some games to run at all, and some others to be more stable.
We can do this with the help of DXVK (for DX9 and DX11) and vkd3d-proton (for DX12).
While DXVK is usually used to get Gaming on Linux and the Steam Deck working, they’re also just a set of Windows DLLs you can load up on Windows as well.
Do not use this trick with multiplayer games. You may get banned.
To fix the a game:
- Get something to open
zstd
files. 7-Zip ZS works well for this and can replace your existing 7-zip install. Runwinget install mcmilk.7zip-zstd
or install from the GitHub Releases page. - Download the latest DXVK. Get the
tar.gz
file. - Download the latest vkd3d-proton. This is only needed for DX 12 games (Horizon Zero Dawn is one of those).
- Extract the DLL files found in the archive to your game folder. Usually you’ll need the ones in the x64 directory.
- Play the game. You should see two new files in the game folder,
<filename>_d3d11.log
and<filename>_dxgi.log
, indicating the game now runs the DirectX to Vulkan translation layer.
And you’re done. Enjoy your slightly less subpar experience, Team Red.