vkd3d-proton
vkd3d-proton copied to clipboard
Forspoken Demo - Runs with a workaround, but feels broken
The game outright doesn't launch due to it maybe shipping some new DX12 libraries with the Agility SDK.

It runs when launching Steam with a -steamdeck command. But it seems to be a very optimized Steam Deck version. All the UI elements seem tailored for the Steam Deck, everything looks very blurry, even on 1080p. Then the fun starts.
Selecting any quality preset crashes the game, perhaps due to it forcing DXR, which is broken and otherwise can't be selected even with proper env variables. I've managed to set everything up to the highest possible setting. The game didn't really utilize more than 5GB of VRAM on highest vs 4GB on low. The LOD distances were broken, restart fixed them. Still, after setting everything to the highest, the game doesn't look as good, as it perhaps should(?). Particularly that landscape texture. I could swear it looked better on my PS5.

I've also logged both tries with a warn setting, Deck or regular Windows mode. The Deck mode log is very long and spammy. Many lines similar to this:
0184:warn:d3d12_pipeline_library_load_pipeline: Pipeline "PFIEIOBF_MGDNKKED_AAAAAAAA_AOJFFAAA_HFAAAAAA_FPMCAAAA_DPIDFAJD_FCNKFIBM" does not exist.
DeckModeLOG.txt DesktopSteamLOG.txt
My Specs:
Fedora 37 (6.1.7-200.fc37.x86_64) i5 10400 16GB RAM RTX 3060 12GB (525.85.05) 512GB NVME Gen3 SSD
Wonder if we should add a dummy D3D12Core.dll for now with some .rc
Selecting any quality preset crashes the game, perhaps due to it forcing DXR, which is broken and otherwise can't be selected even with proper env variables.
I cannot confirm this. At least on current RADV git, changing graphics settings works fine and raytracing works fine too.
VKD3D_FEATURE_LEVEL=12_2 is required for the game to show Raytracing options, in addition to the usual stuff.
Or at least, RT and graphics settings did work fine pre release, but with the Steam Deck hacks in place they no longer seem to do anything. Still can't reproduce the crashes though.
I don't think it's useful to spend any significant amount of time looking into this from a vkd3d-proton angle though. Clearly the game has a bunch of Deck-specific hacks, and as long as we don't get a build that allows us to run the game without them, there's no point in guessing what is and isn't caused by their hacks.
Valve has outright forced the steamdeck=1 command on for this game on proton. So it would be odd if the deck hacks (which imo should not exist) no longer do anything.
While proton defaults the game to run SteamDeck=1, you can run the game with the SteamDeck=0 argument to turn that off again. That should turn off the deck-specific hacks. The primary issue with the game making it unstartable without the deck hacks is the dll error from the first post.
The version of dx12 the game is using doesn't seem to be supported, and the deck hacks force the game to fall back to either an older version of dx12, or something else more compatible at the expense of a lot.
Selecting any quality preset crashes the game, perhaps due to it forcing DXR, which is broken and otherwise can't be selected even with proper env variables.
I cannot confirm this. At least on current RADV git, changing graphics settings works fine and raytracing works fine too.
VKD3D_FEATURE_LEVEL=12_2is required for the game to show Raytracing options, in addition to the usual stuff.
After adding the correct feature level variable, the game does let me switch the presets and ray tracing effect do work on Nvidia hardware.
I can confirm also, that Steam forces Proton Hotfix for it and it does run with steamdeck=1 launch argument. Also agree that the game is hacky using that mode. I think nobody from the Luminous team expected it to run on anything other than the Deck. Compared to other gameplays, I can see that the texture resolution on some things is generally the same across OSes(pretty bad ngl). But I've noticed that LOD transitions are scaled down significantly. Some models don't ever switch from LOD 3-4.

The version of dx12 the game is using doesn't seem to be supported, and the deck hacks force the game to fall back to either an older version of dx12, or something else more compatible at the expense of a lot.
Yes, the Agility SDK provides latest DX12 libs without the need for a system update. Must be a very recent version and this title seems to be the first to require it. Curious to see how the game will perform on Linux with support for the new DX12 libs in the future.
Must be a very recent version and this title seems to be the first to require it
A lot of games rely on Agility SDK and it works fine. The odd-ball thing that this game does is to check that d3d12core.dll exists. Normally, applications would check that Win10 1909 is supported I think. A likely fix on our end would just be to expose a dummy d3d12core.dll that doesn't actually implement anything useful.
FWIW, there is another game that similarly complains about the Agility SDK not being available: https://github.com/ValveSoftware/Proton/issues/6288
Maybe a dummy D3D12Core.dll would help there as well.
If that's all that's required, that seems like it should be relatively easy to test.
Here's a stub DLL patch for Wine that returns the lowest SDK version. 0001-d3d12core-Add-stub-DLL.txt
The dll does seem to get around the dll error and is probably worth incorporating.
The next error looks like possibly a denuvo error, so it's probably outside the scope of this project. EDIT: Yeah, the ntdll.dll error is almost certainly a denuvo error. That dll is one of the dlls that denuvo checks.
@Joshua-Ashton @HansKristian-Work
Could any of you please add your expert input to this merge-request for the Wine stub: https://gitlab.winehq.org/wine/wine/-/merge_requests/2045
@jkrhu Are you still having issues with this game and latest vkd3d-proton? 🙂
@jkrhu Are you still having issues with this game and latest vkd3d-proton? slightly_smiling_face
I just downloaded it to check, cause I've honestly forgotten about it. Game launches outright, no workarounds needed. RT works. The game itself kind of got better, a bit. The memory stuff, LODs and glitches are gone. Performance is still pretty bad for my system. There's a constant stutter when traversing, probably due to streaming. Even if I previously been to a place. There's some audio bufforing crackle as well sometimes. Not sure if it's vkd3d-proton related or not. Probably more of a Wine or Proton thing with the CPU streaming and audio.