ValveSoftware / Proton

Compatibility tool for Steam Play based on Wine and additional components
Other
24.02k stars 1.05k forks source link

NVIDIA 535, VK_KHR_present_wait, and ForceFullCompositionPipeline #6869

Open tgurr opened 1 year ago

tgurr commented 1 year ago

Compatibility Report

System Information

I confirm:

steam-14950642966836805632.log.zip

Symptoms

Before the latest update to experimental-8.0-20230624 a few minutes ago the previous proton experimental (2023/06/06) worked well but since the update after launching the game from within Battle.net I get a black screen with the music playing and the intro movies not playing anymore and while it eventually gets further when being patient you can see the login to Battle.net inside diablo happening and getting to the character selection screen, however the performance is absolutely crawling to the point even the menu is unusable. Also even Alt+Tabbing is taking ages to be able to manually force-stopping the game.

Reproduction

  1. Launch Diablo IV
  2. Observe issue

Additional note

tgurr commented 1 year ago

I have to update my initial report pointing out that it appears not to be an actual problem with Diablo IV but rather a general problem for me since the latest Proton Experimental update since I've now tested other games I played/started just recently like System Shock (the new one) and STEINS;GATE ELITE and both behave the same like Diablo IV now. I've also tested native games just to be sure it's not a general problem but games like e.g. Crusader Kings III or Return to Monkey Island are not affected and work fine. I had a look at the Proton Experimental betas to opt in as to see if the previous Proton Experimental version is offered to be able to really nail it down but apparently it sadly is not - it would be nice of you could also add that as a selectable beta for such cases to ease problem finding in regards to possible regressions.

Edit: I just also additionally installed Proton 8.0-2 and selecting that for either System Shock or STEINS;GATE ELITE the games work fine indicating it might indeed be a problem introduced by the latest update to Proton Experimental.

@kisak-valve I've refrained from changing the topic of my initial report to a more fitting one now that it has nothing to do with Diablo IV in specific since I don't know what you'd like in the topic, would be nice if you could change it to your liking. Thanks in advance.

kisak-valve commented 1 year ago

Hello @tgurr, this is a blind guess, but it might be interesting to test if running the game with VKD3D_DISABLE_EXTENSIONS=VK_KHR_present_id,VK_KHR_present_wait.

tgurr commented 1 year ago

VKD3D_DISABLE_EXTENSIONS=VK_KHR_present_id,VK_KHR_present_wait

@kisak-valve That is interesting as I thought we'd finally be done with this with recent nvidia drivers however it indeed works for Diablo IV and makes it playable again with the latest Proton Experimental release! But neither for System Shock which is DirectX 11 nor STEINS;GATE ELITE which is DirectX 9, is there a similiar parameter for DXVK? I thought the whole present stuff only affects vkd3d-proton to begin with, however I'm by far no expert.

HansKristian-Work commented 1 year ago

DXVK recently got present_wait support. Is it possible you're using force composition pipeline or something like that? I recall someone saying that was an issue.

tgurr commented 1 year ago

Fedora today also got the update from nvidia-drivers 530.41.03 to 535.54.03 and the problem with Diablo IV is reproducible there as well now, adding VKD3D_DISABLE_EXTENSIONS=VK_KHR_present_id,VK_KHR_present_wait works there as well.

@HansKristian-Work it is indeed yes! Removing ForceFullCompositionPipeline allowed DXVK games like the mentioned System Shock and STEINS;GATE ELITE to be playable again as well.

--- 50-nvidia-before.conf       2021-11-27 14:20:50.927834285 +0100
+++ 50-nvidia.conf      2023-06-24 17:09:42.923875035 +0200
@@ -16,7 +16,7 @@
     Identifier     "Screen0"
     Device         "Device0"
     Monitor        "Monitor0"
-    Option         "MetaModes" "nvidia-auto-select +0+0 {ForceFullCompositionPipeline=On}"
+    Option         "MetaModes" "nvidia-auto-select +0+0"
     Option         "AllowIndirectGLXProtocol" "off"
     Option         "TripleBuffer" "on"
 EndSection

So all that appears to be just a problem with the latest nvidia-driver 535.54.03 while things were working with 530.41.03 as could be seen on Fedora while for me personally things got broken with the latest Proton Experimental and were working nicely before with 535.54.03. 530.41.03 however also already had working present_wait support right? So is it purely a driver problem in the end? Has this already been reported to nvidia? Should I do so (not knowing any technical details)?

HansKristian-Work commented 1 year ago

I just reported it to NV.

8836290 commented 1 year ago

Tested a Unity 3D game Empyrion-Galactic survival with VKD3D_DISABLE_EXTENSIONS=VK_KHR_present_id,VK_KHR_present_wait nvidia's currently latest proprietary driver 535.86.05 on Ubuntu 22.04.2 LTS Proton experimental Kept ForceFullCompositionPipeline active and I confirm the issue does not occur any more with this configuration.

tgurr commented 1 year ago

The above mentioned Empyrion-Galactic appears to be a DirectX 11 according the steam system requirements so VKD3D shouldn't play any role here.

For the "Need Retest" label, the initial reported problems are still valid for the current latest non-beta nvidia-drivers 535.86.05, as in:

8836290 commented 1 year ago

The above mentioned Empyrion-Galactic appears to be a DirectX 11 according the steam system requirements so VKD3D shouldn't play any role here.

For the "Need Retest" label, the initial reported problems are still valid for the current latest non-beta nvidia-drivers 535.86.05, as in:

  • VKD3D (e.g. Diablo IV) still requires VKD3D_DISABLE_EXTENSIONS=VK_KHR_present_id,VK_KHR_present_wait
  • DXVK (e.g. STEINS;GATE ELITE) still fails to work with {ForceFullCompositionPipeline=On} set

I stand corrected. I messed something up and need to retest.

Jenrikku commented 1 year ago

I have had a similar issue with multiple Unity games which was solved after downgrading my nvidia drivers to 530. This issue does not seem to be related to any proton new update as I have been using version 8.3 Not even Proton 7 seems to work.

8836290 commented 1 year ago

What I did, until a solution to the issue, was to disable the composition pipeline (un-ticking both force and force full composition pipeline) in the nvidia-settings, under X-server display configuration/Advanced.

Arcitec commented 1 year ago

DXVK recently got present_wait support. Is it possible you're using force composition pipeline or something like that? I recall someone saying that was an issue.

@HansKristian-Work You're completely right. NVIDIA's "Force Full Composition Pipeline" breaks all Vulkan applications on X11 if they use the "present id / present wait" Vulkan features.

I just discovered the same thing in DXVK 2.3 which recently re-enabled those Vulkan extensions since NVIDIA "has fixed" their drivers. But the desktop crashes if composition pipeline is enabled:

https://github.com/doitsujin/dxvk/issues/3670#issuecomment-1732691158

I just reported it to NV.

Was this reported via NVIDIA's normal forums? If there's a public thread about it, I can add my voice to it if that helps.

mozo78 commented 12 months ago

It not fixed, there's a problem and most of the games doesn't working with VK_KHR_present_wait, and ForceFullCompositionPipeline. Do we have to post a report on NVIDIA's forums or HansKristian report is enough?

Arcitec commented 12 months ago

@mozo78 I wasn't able to find his report (I searched for keywords in the entire Linux NVIDIA forum), which leads me to assume that he has reported it to them privately.

It might help to also report it publicly just in case, so I made a thread via a trash account here:

https://forums.developer.nvidia.com/t/complete-gpu-crash-on-x11-with-force-full-composition-pipeline-and-vk-khr-present-wait-100-reproducible/267934

If you have an NVIDIA account (or can make one with a trash email quickly), you could add your voice to that if you wanna show NVIDIA that it's a confirmed issue.

Other than that, there's nothing else we can do but wait for NVIDIA to fix it.

mozo78 commented 12 months ago

Thanks, I made a post :)

DarkSattis commented 10 months ago

In case the link goes bad or someone else stumbles on this:

nvidia-settings --assign CurrentMetaMode="nvidia-auto-select +0+0 { ForceCompositionPipeline=Off, ForceFullCompositionPipeline=Off }"

For my setup (Ubuntu 22.04) this was equivalent to changing /etc/X11/xorg.conf Option "metamodes" and set ForceFullCompositionPipeline to off. (I removed ForceCompositionPipeline as well, but unsure if needed)

Then Diablo IV did work for me again without having 1 frame/minute.

Nvidia Driver Version: 545.29.02

SamuraiScientist commented 10 months ago

I am also having similar on my system with Proton 8.0 and experimental. Though, my workaround was different. I'm using the KDE Plasma Desktop and my fix was to go to Display and Monitor > Compositor and turn off "Allow applications to block compositing". Some of the games I tested that would not work without the workaround were Fallout 4, Deep Rock Galactic and Postal Brain Damaged. Though, Warframe and XCOM2 worked on Proton 8.0 without a workaround.

OS: Debian Testing GPU: GTX 1060 6GB(tested with Debian's provided driver, 525.125.06-3 and a more up-to date Nvidia driver, 545.23.08-1)

KDE Plasma Version: 5.27.9 KDE Frameworks Version: 5.107.0 Qt Version: 5.15.10 Kernel Version: 6.5.0-4-amd64 Graphics Platform: X11

I'm adding this here since this could be related.

MikkoMMM commented 9 months ago

545.29.06-3 is also affected. Other games that are affected by this bug include Borderlands 3 and ARK: Survival Evolved.

cfasnacht commented 9 months ago

I am also having similar on my system with Proton 8.0 and experimental. Though, my workaround was different. I'm using the KDE Plasma Desktop and my fix was to go to Display and Monitor > Compositor and turn off "Allow applications to block compositing". Some of the games I tested that would not work without the workaround were Fallout 4, Deep Rock Galactic and Postal Brain Damaged. Though, Warframe and XCOM2 worked on Proton 8.0 without a workaround.

@SamuraiScientist Thank you that did work for me as well! Display and Monitor > Compositor and turn off "Allow applications to block compositing Although I did not have KDE installed but installed it to try if it makes any difference.

I was bugged with this issue for months and could not play most of the steam games.

upupupa commented 7 months ago

I can confirm 545.29.06 is also affected. Unfortunately, turning off ForceCompositionPipeline didn't work for me as well as disabling the "Allow applications to block compositing" in KDE settings.

The symptoms are the same as described in the original post.

Proton version: >=8.0 OS: Manjaro XFCE GPU: GTX 1070 Kernel Version: 6.6.10-1-MANJARO Graphics Platform: X11 Vulkan Instance Version: 1.3.274

8836290 commented 7 months ago

I can confirm 545.29.06 is also affected. Unfortunately, turning off ForceCompositionPipeline didn't work for me as well as disabling the "Allow applications to block compositing" in KDE settings.

The symptoms are the same as described in the original post.

Proton version: >=8.0 OS: Manjaro XFCE GPU: GTX 1070 Kernel Version: 6.6.10-1-MANJARO Graphics Platform: X11 Vulkan Instance Version: 1.3.274

And how is ForceFullComposition pipeline set, enabled or disabled?

upupupa commented 7 months ago

@8836290 hey! Sorry for the delay, ForceFullComposition pipline is also disabled. The game which I'm trying to launch is CP2077. Downgrading proton to 7.0-6 helps, the game works as expected.

Not sure if this has an impact, but I have 2 monitors, one of which is oriented vertically. (in nvidia-settings it is rotated left)

I can hear the sounds from the game, but the video doesn't play further than CDPR logo: the mouse and any inputs stucks for 10-20 seconds, then I can close the game using steam and while it is shutting down, I can't move the mouse/alt tab for 10-20 seconds.

8836290 commented 7 months ago

Replying to https://github.com/ValveSoftware/Proton/issues/6869#issuecomment-1948984357

I remember discussing proton versions on discord on GE's channel and it was recommended that it is not mandatory to always upgrade proton versions to the latest to have a game work. Instead the version that helps the game run without issues is the proper one for it. So in your case if you find that v7.0-6 does work with CP2077 stick with this version for that game. Of course you can have multiple versions for other games to work too. Needless to say, always read the release notes for Proton AND GPU drivers, to find useful information regarding the games you are interested and various fixes applied for them on your hardware/software configuration.

Tritibellum commented 4 weeks ago

Hi! I have come across this issue recently with 550.100 version with Vulkan applications (with and without Steam Proton), turning off both ForceCompositionPipeline and ForceFullCompositionPipeline did fix the issue for me, pardon me if I missing something.

OS: OpenSUSE Tumbleweed GPU: GTX 1650 Kernel Version: 6.10.5-1-default KDE Plasma Version: 6.14 KDE Frameworks Version: 6.50 Graphics Platform: X11 Vulkan Instance Version: 1.3.290

I can also confirm that SamuraiScientist's workaround is also a viable solution for me.

cfasnacht commented 3 weeks ago

Sadly for me without ForceCompositionPipeline and ForceFullCompositionPipeline the tearing is so bad that most games under proton are unplayable.