avatarMatthew Casperson

Summary

The web content provides a list of Proton environment variables and commands that Linux gamers can use to troubleshoot and improve compatibility for Windows games running on Linux systems.

Abstract

Proton, a tool developed by Valve, is essential for Linux gamers to run Windows games on their systems. The article outlines several environment variables that can be set to work around common issues encountered when running these games. These variables include DXVK_FILTER_DEVICE_NAME to specify the GPU for DXVK, VKD3D_CONFIG to enable DirectX Raytracing (DXR), PROTON_ENABLE_NVAPI to enable NVAPI support, PROTON_HIDE_NVIDIA_GPU to prevent NVIDIA GPUs from being misidentified as AMD GPUs, and VKD3D_FEATURE_LEVEL to set the DirectX 12 feature level. The author emphasizes the importance of using these commands to debug and enhance gaming performance on Linux, particularly when using the Steam Deck or similar devices.

Opinions

  • The author believes that Proton is an "incredible tool" for enabling Windows games to run on Linux.
  • The author suggests that Proton often requires additional configuration to work correctly, implying that it is not always plug-and-play.
  • The use of environment variables like DXVK_FILTER_DEVICE_NAME and VKD3D_CONFIG is recommended by the author for games that do not work correctly out of the box.
  • The author provides a personalized command sequence that they typically use for debugging Proton-related issues, indicating a preference for this approach based on their experience.
  • The inclusion of PROTON_ENABLE_NVAPI and PROTON_HIDE_NVIDIA_GPU suggests the author's recognition of the importance of correct GPU identification and support for NVIDIA-specific features in games.

Common Proton workarounds for Linux gamers

Proton is an incredible tool offered by Valve to enable Windows games to run seamlessly under Linux. The Steam Deck uses Proton extensively to run Windows games with its custom Linux distribution, but any Linux user can also make use of Proton to run Windows games on their personal machine.

However, Proton often needs a helping hand to work correctly. Over the last few months I have debugged quite a few games in Linux, and this collection of environment variables is what I use for any game that doesn’t quite work correctly.

This option forces the use of my GPU. The documentation provides this description:

Some applications do not provide a method to select a different GPU. In that case, DXVK can be forced to use a given device. DXVK_FILTER_DEVICE_NAME="Device Name" Selects devices with a matching Vulkan device name, which can be retrieved with tools such as vulkaninfo.

Note that you will need to run vulkaninfo on your own machine to find the correct name of your GPU:

DXVK_FILTER_DEVICE_NAME="NVIDIA GeForce RTX 3060"

This option enabled DirectX Raytracing (DXR). The documentation provides this description:

VKD3D_CONFIG - a list of options that change the behavior of vkd3d-proton.

dxr - Enables DXR support if supported by device.

dxr11 - Enables DXR tier 1.1 support if supported by device

VKD3D_CONFIG="dxr,dxr11"

This option enables NVAPI. The documentation provides this description:

Enable NVIDIA’s NVAPI GPU support library.

PROTON_ENABLE_NVAPI="1"

This option prevents a NVIDIA GPU from being exposed as an AMD GPU. The documentation provides this description:

Force Nvidia GPUs to always be reported as AMD GPUs. Some games require this if they depend on Windows-only Nvidia driver functionality. See also DXVK’s nvapiHack config, which only affects reporting from Direct3D.

PROTON_HIDE_NVIDIA_GPU="0"

This option informs the game that the GPU supports DirectX 12 with feature level 12.2:

VKD3D_FEATURE_LEVEL="12_2"

So the complete command I usually start with to debug issues is:

DXVK_FILTER_DEVICE_NAME="NVIDIA GeForce RTX 3060" VKD3D_CONFIG="dxr,dxr11" PROTON_ENABLE_NVAPI="1" PROTON_HIDE_NVIDIA_GPU="0" VKD3D_FEATURE_LEVEL="12_2" %command%
Linux
Proton
Steam
Valve
Recommended from ReadMedium