protonscr

Can't use my Nvidia dGPU?

protonclosed
ValveSoftware/Proton#5180 · opened 2021-09-24 by iijj22gg · updated 2021-09-24 · 10 comments · github
1 matching comments, n / p to jump
Iiijj22gg 2021-09-24 github

Hello, I'm having some trouble with Proton, with the same general issue in all Proton versions.

I seem to be unable to use my Nvidia dGPU. DRI_PRIME=1, PROTON_USE_WINED3D=1, and WINEDLLOVERRIDES="dxgi=n" seem to do absolutely nothing, as performance is exactly the same.

For reference, I am running Linux Mint 20.2 Cinnamon on a muxless laptop with an Nvidia GeForce GT 720M and an Intel HD Graphics 4400 (128 MB). Because the Nvidia GPU is so old I am using Nouveau to make it usable, as the proprietary driver doesn't output properly, and prime-select has all sorts of issues, including broken vsync and overheating.

While this isn't a problem for simple or old games, this is a problem for games like Subnautica, Valve games after HL2, etc. Because the iGPU only has 128MB of VRAM, the games either crash or fail to load geometry, not to mention terrible latency (some get as high as 1 second) and framerates lower than 20.

Later versions of Proton are worse, because launching a game with PROTON_USE_WINED3D=1 or WINEDLLOVERRIDES="dxgi=n" simply doesn't work.

LLeopard1907 2021-09-24 github

http://us.download.nvidia.com/XFree86/Linux-x86_64/470.74/README/primerenderoffload.html

__NV_PRIME_RENDER_OFFLOAD=1 __VK_LAYER_NV_optimus=NVIDIA_only __GLX_VENDOR_LIBRARY_NAME=nvidia steam

Start Steam like this and observe.

If it works either set this into your steam.desktop file or just copy paste that into the game launch options for the games you might want to run on dgpu with %command% at the end.

For steam.desktop editing, you will change your exec line to this:

Exec=/usr/bin/env __NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia __VK_LAYER_NV_optimus=NVIDIA_only /usr/bin/steam %U

Kkisak-valve maintainer 2021-09-24 github

Hello @IIJJ22GG, in general, Proton requires a Vulkan-capable, spec-conformant GPU to work, and using PROTON_USE_WINED3D=1 is not considered supported. The issues you have with your Haswell Intel GPU is due to the incomplete Vulkan support with that GPU generation in mesa. It looks like your system is unsupportable in general.

That said, do you have the Fermi (GF117) or Kepler (GK208) variant of the nVidia 720M? Something like lspci | grep VGA in a terminal should let you know which variant you have. The Fermi variant has no support for Vulkan at all, and the Kepler variant is capable of using Vulkan with the nVidia proprietary driver up to the 470.xx driver series. It should also be noted that nVidia technically dropped support for the mobile variant of Kepler GPUs, but it seems like they left the needed pieces in the driver for the desktop variants pf that generation, and people have had mild success with that. Mesa/nouveau does not support Vulkan, which makes it summary unsupported by Proton.

Iiijj22gg 2021-09-24 github

http://us.download.nvidia.com/XFree86/Linux-x86_64/470.74/README/primerenderoffload.html

__NV_PRIME_RENDER_OFFLOAD=1 __VK_LAYER_NV_optimus=NVIDIA_only __GLX_VENDOR_LIBRARY_NAME=nvidia steam

Start Steam like this and observe.

If it works either set this into your steam.desktop file or just copy paste that into the game launch options for the games you might want to run on dgpu with %command% at the end.

For steam.desktop editing, you will change your exec line to this:

Exec=/usr/bin/env __NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia __VK_LAYER_NV_optimus=NVIDIA_only /usr/bin/steam %U

Do I need to download something @Leopard1907? I didn't see a download link on that page, and using those settings didn't seem to change anything with the games, although Steam did have the same minor stuttering that occurs when launched with DRI_PRIME=1

LLeopard1907 2021-09-24 github

@IIJJ22GG No need to download anything. I just linked readme above for you to see where i get those env vars from.

Fwiw, if you are new at using Linux you must know you have to disable secure boot in order to get NV drivers load, unless you want to go through process of signing Nvidia kernel module by yourself.

Iiijj22gg 2021-09-24 github

Hello @IIJJ22GG, in general, Proton requires a Vulkan-capable, spec-conformant GPU to work, and using PROTON_USE_WINED3D=1 is not considered supported. The issues you have with your Haswell Intel GPU is due to the incomplete Vulkan support with that GPU generation in mesa. It looks like your system is unsupportable in general.

That said, do you have the Fermi (GF117) or Kepler (GK208) variant of the nVidia 720M? The Fermi variant has no support for Vulkan at all, and the Kepler variant is capable of using Vulkan with the nVidia proprietary driver up to the 470.xx driver series. It should also be noted that nVidia technically dropped support for the mobile variant of Kepler GPUs, but it seems like they left the needed pieces in the driver for the desktop variants pf that generation, and people have had mild success with that. Mesa/nouveau does not support Vulkan, which makes it summary unsupported by Proton.

@kisak-valve How do I tell? What I can tell you is that when running Windows, the latest compatible driver according to Experience was around 380 or 390, and No Man's Sky, which uses Vulkan didn't work.

That said, why have I gotten older or 2D games like Geometry Dash to work with Proton, without any launch options? I've also noticed that when running native Vulkan programs, they crash whenever they tries to render 3D, if that has anything to do with it.

Iiijj22gg 2021-09-24 github

@Leopard1907 I have secure boot disabled because it only works with UEFI (or whatever that boot mode is called), which doesn't work. I use legacy.

Kkisak-valve maintainer 2021-09-24 github

Looks like I added a note to my previous comment a little bit too late for you to catch it. Something like lspci | grep VGA in a terminal should include the chipset name in the output.

Iiijj22gg 2021-09-24 github

@kisak-valve Not sure what's happening here:

iijj22gg@I-Latitude-E5440:~$ lspci | grep VGA
00:02.0 VGA compatible controller: Intel Corporation Haswell-ULT Integrated Graphics Controller (rev 0b)
iijj22gg@I-Latitude-E5440:~$ DRI_PRIME=1 lspci | grep VGA
00:02.0 VGA compatible controller: Intel Corporation Haswell-ULT Integrated Graphics Controller (rev 0b)

You can see my computer's model is a Dell Latitude E5440, if you're interested

Kkisak-valve maintainer 2021-09-24 github

I'm going to have to guess that https://linux-hardware.org/index.php?probe=7582be2134 is approximately a match to your system, which have GF117 (Fermi) paired with that laptop model. This matches your memory of video driver support as the nVidia 390.xx series driver is the last driver to support the Fermi generation on Linux. Sorry, but your system is not supported by Proton.

If lspci can't see the nVidia GPU, then there's some other issue going on with your system using the secondary GPU which is outside of anything Proton is doing. That utility should be able to see the hardware regardless of what video driver is in use (or if there's no hardware specific driver loaded).

Iiijj22gg 2021-09-24 github

Okay. I'll just use Windows for my Steam games