protonscr

THE FINALS fails to create swapchain and crashes

dxvkclosed
doitsujin/dxvk#3856 · opened 2024-02-17 by LazarusCat59 · updated 2024-04-06 · 11 comments · github
2 matching comments, n / p to jump
LLazarusCat59 2024-02-17 github

This game used to work fine for me few weeks ago. Now it crashes after displaying a black screen briefly. All I remember of what I did after it was working is upgrading to 550.40.07 NVIDIA beta driver but downgrading back to 545.29.06 does not fix it. Besides, all other games that I play still work fine, no other games has this issue.

In the proton logs, I thought these 2 lines were interesting:

err:   D3D11SwapChain: Failed to recreate swap chain: VK_ERROR_INITIALIZATION_FAILED
err:   DXGI: CreateSwapChainForHwnd: Failed to create swap chain, hr -2147467259

But I'm not really sure how to debug further or to try and fix it.

Software information

THE FINALS, ran with mangohud %command% -d3d11 in steam launch options

System information

  • GPU: NVIDIA GTX 1660Ti
  • Driver: 550.40.07
  • Wine version: Proton Hotfix for THE FINALS, also tried Experimental and 8.0-5 with similar results
  • DXVK version: v2.3

Apitrace file(s)

Could get only 2.7MB trace file, so I'm not sure it helps much
start_protected_game.tar.gz

Log files

Proton log: steam-2073850.tar.gz
DXVK logs:
Discovery_d3d11.log
Discovery_dxgi.log

BBlisto91 2024-02-17 github

Does it make a difference if you launch with PROTON_ENABLE_NVAPI=1

Edit: actually nevermind it probably wont. I'm am not seeing an issue here on my AMD setup.

LLazarusCat59 2024-02-18 github

Does it make a difference if you launch with PROTON_ENABLE_NVAPI=1

No difference launching with PROTON_ENABLE_NVAPI=1.

BBlisto91 2024-02-24 github

I tried with my RTX 4080 using the 550.54.14 drivers on Experimental and Experimental Bleeding Edge, but it also starts fine.

LLazarusCat59 2024-02-25 github

I tried with my RTX 4080 using the 550.54.14 drivers on Experimental and Experimental Bleeding Edge, but it also starts fine.

I also just tried with the new 550.54.14 drivers and it still crashes just the same for me. I did look around on Proton issue tracker and even posted there once but it seems like I'm the only one with this issue. Tried wiping my root partition and reinstalling Arch recently but no dice.

Launching in DX12 also results in same swapchain creation failed messages printed but no crash, but that ones takes much longer before it's printed. I think it's because the game spends a while after opening just compiling shaders. Running in DX11 results in a crash almost immediately, so that's why I reported here since it's much faster to reproduce the crash on my machine. Here's a link to my comment of Proton issuetracker: Proton#7317.

To add some extra details I have a laptop with an Intel Integrated GPU and NVIDIA 1660Ti with an external monitor connected. I run Hyprland with the variable WLR_DRM_DEVICES=/dev/dri/card0:/dev/dri/card1 where card0 is my NVIDIA card. Laptop display is a lil broken so I only use external monitor and hence the variable so that it renders on my NVIDIA card. It gets me better performance and laptop display always stays off either way.

Hopefully this helps a little at least. I'm always willing to provide logs or compile things from source and test if required. Thanks and have a good day!

Ppollux78 2024-02-25 github

I tried with my RTX 4080 using the 550.54.14 drivers on Experimental and Experimental Bleeding Edge, but it also starts fine.

I also just tried with the new 550.54.14 drivers and it still crashes just the same for me. I did look around on Proton issue tracker and even posted there once but it seems like I'm the only one with this issue. Tried wiping my root partition and reinstalling Arch recently but no dice.

Launching in DX12 also results in same swapchain creation failed messages printed but no crash, but that ones takes much longer before it's printed. I think it's because the game spends a while after opening just compiling shaders. Running in DX11 results in a crash almost immediately, so that's why I reported here since it's much faster to reproduce the crash on my machine. Here's a link to my comment of Proton issuetracker: Proton#7317.

To add some extra details I have a laptop with an Intel Integrated GPU and NVIDIA 1660Ti with an external monitor connected. I run Hyprland with the variable WLR_DRM_DEVICES=/dev/dri/card0:/dev/dri/card1 where card0 is my NVIDIA card. Laptop display is a lil broken so I only use external monitor and hence the variable so that it renders on my NVIDIA card. It gets me better performance and laptop display always stays off either way.

Hopefully this helps a little at least. I'm always willing to provide logs or compile things from source and test if required. Thanks and have a good day!

have you tested proton 9(beta) to see if that makes any difference?

LLazarusCat59 2024-02-25 github

have you tested proton 9(beta) to see if that makes any difference?

Yup I did, just today. Doesn't really make a difference, same crash as always.

BBlisto91 2024-02-26 github

Could you check if "Force Full Composition Pipeline" is turned on in the Nvidia settings app and if yes then try turning it off.

Another thing to try is running with VK_DRIVER_FILES=/usr/share/vulkan/icd.d/nvidia_icd.json

Also it might be interesting to see if it runs with older dxvk versions like 1.10.3 or 2.0

LLazarusCat59 2024-02-26 github

Could you check if "Force Full Composition Pipeline" is turned on in the Nvidia settings app and if yes then try turning it off.

I don't see this option in the NVIDIA settings app, probably because I'm using Wayland right now.

Another thing to try is running with VK_DRIVER_FILES=/usr/share/vulkan/icd.d/nvidia_icd.json

This works! So I'm assuming somehow my laptop tries to use a different driver to render and it fails at swapchain creation? Will I always need the variable if I'm playing this game? Also I wonder why it wouldn't select the NVIDIA driver by default for Vulkan, while all other games seem to work just fine without this variable? Anyways, thanks a lot, it's good to be able to play the game again!

BBlisto91 2024-02-26 github

I can't really personally give a reason why it only works with the variable and why other games don't have issues.
Multiple GPUs can sometimes just be a bit of a mess on Linux i feel and there are many variables that influence it from various software, drivers, which GPU drives the display etc etc.

LLazarusCat59 2024-02-26 github

I can't really personally give a reason why it only works with the variable and why other games don't have issues. Multiple GPUs can sometimes just be a bit of a mess on Linux i feel and there are many variables that influence it from various software, drivers, which GPU drives the display etc etc.

Ah I see. Thanks a lot for figuring it out for me, closing the issue now.

Bblipk 2024-04-06 github

Just wanted to comment that this solution also worked for me to get Age of Empires II DE (AoE) working with proton on a multi-GPU linux setup - might be useful for anyone searching CreateSwapChain() Failed

Proton versions

Launch options

Launch lines

Upstream links