When a Linux gaming system has more than one graphics processor, VKD3D-Proton may not always use the GPU you expect. This is especially common on laptops with integrated and dedicated graphics, desktops with multiple GPUs, or systems where Vulkan exposes several physical devices. If a game running through Proton selects the wrong GPU, you may experience lower performance, unexpected frame rates, graphical problems, or unnecessary power usage. In these situations, forcing VKD3D-Proton to use a specific GPU can help you control which graphics hardware handles Direct3D 12 workloads.
The process usually involves identifying the correct Vulkan GPU and then using environment variables or Proton launch options to influence GPU selection. The exact method depends on your graphics drivers, Vulkan setup, desktop environment, and Proton configuration. Steam makes it possible to apply these settings to an individual game without changing your entire Linux graphics configuration. For most users, a per-game configuration is the safest approach because it limits the change to the title that actually needs it.
Why You May Need to Force VKD3D-Proton to a Specific GPU
A system with multiple GPUs can expose several Vulkan devices to applications. VKD3D-Proton uses Vulkan to translate Direct3D 12 commands, so the selected Vulkan device determines which GPU performs the rendering work.
On a laptop, for example, the system may contain an integrated AMD or Intel GPU alongside a dedicated NVIDIA or AMD GPU. The game could launch on the integrated GPU even though the dedicated GPU provides significantly more graphics performance.
Multiple GPUs can also exist in desktop systems. You might have two discrete graphics cards installed for testing, rendering, virtualization, or other workloads. In such configurations, selecting the intended GPU can prevent Proton games from automatically choosing an unwanted device.
Forcing GPU selection can be useful when:
- A game launches on the integrated GPU instead of the dedicated GPU.
- VKD3D-Proton detects multiple Vulkan devices.
- The wrong GPU causes poor gaming performance.
- You need to test a game on different graphics hardware.
- A specific GPU has better driver compatibility.
- You want a particular game to use a dedicated GPU.
- You are troubleshooting Direct3D 12 rendering problems.
The important point is that you should first determine which GPU Vulkan and the Linux graphics stack are exposing before changing launch options.
Identify the GPUs Available to Vulkan
Before attempting to force VKD3D-Proton to use a specific GPU, identify the available Vulkan devices.
A useful command on many Linux distributions is:
vulkaninfo --summary
If vulkaninfo is installed, the output can show information about the available Vulkan physical devices, including their names and device properties.
You may see output representing devices such as:
GPU0: AMD Radeon Graphics
GPU1: NVIDIA GeForce RTX 4070
The exact names and ordering depend on your system.
You can also inspect the system’s graphics hardware with:
lspci | grep -E "VGA|3D|Display"
This helps identify the physical GPUs installed in the computer, but it does not necessarily tell you the exact Vulkan device ordering used by an application.
That distinction matters. The GPU listed first by lspci is not automatically the GPU that VKD3D-Proton considers device 0.
Use Vulkan Device Information Instead of Guessing
GPU numbering can vary depending on drivers, Vulkan implementation, environment variables, and system configuration. Therefore, avoid assuming that GPU0 always means your dedicated graphics card.
For example, a laptop might expose:
Device 0: Intel integrated graphics
Device 1: NVIDIA discrete graphics
Another configuration could expose the devices in a different order.
Before configuring Steam, write down the exact Vulkan device names. This makes it easier to verify whether the game is actually using the intended GPU after the change.
You can also use tools such as vulkaninfo to inspect vendor and device information. The important details are the GPU name, vendor, and Vulkan device properties.
Force GPU Selection Through Steam Launch Options
Steam allows environment variables to be added directly to a game’s launch options.
Open Steam and locate the game you want to configure. Right-click the game, select Properties, and open the General section. Find the Launch Options field.
The relevant environment variable depends on the graphics stack and the specific GPU-selection method you are using.
For example, a common Vulkan-related approach is:
DRI_PRIME=1 %command%
On systems using Mesa, DRI_PRIME can influence which GPU is selected for applications.
For a game that should use the secondary GPU, this may be sufficient:
DRI_PRIME=1 %command%
However, DRI_PRIME is not a universal VKD3D-Proton GPU selector. Its behavior depends on the graphics driver and system configuration. NVIDIA systems, hybrid graphics configurations, and systems with several discrete GPUs may require a different approach.
The %command% portion is important because Steam replaces it with the game’s normal launch command.
Understanding DRI_PRIME
DRI_PRIME is commonly used on Linux systems with multiple GPUs, particularly where Mesa drivers are involved.
For example:
DRI_PRIME=1 %command%
can request that an application use a different GPU than the default device.
A value of 0 generally represents the default GPU, while 1 can select another GPU. More complex configurations can expose additional devices, but you should not assume the numbering without checking your system.
On a hybrid laptop, the difference may look like this:
DRI_PRIME=0 %command%
for the default GPU and:
DRI_PRIME=1 %command%
for another available GPU.
Whether this works exactly as expected depends on your driver configuration.
NVIDIA Hybrid Graphics and VKD3D-Proton
NVIDIA hybrid graphics systems can require additional configuration because the integrated GPU and NVIDIA GPU may be managed differently.
If you are using an NVIDIA laptop, forcing a game onto the dedicated GPU may involve NVIDIA’s PRIME configuration rather than relying only on DRI_PRIME.
A common environment configuration is:
__NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia %command%
However, this configuration is primarily associated with NVIDIA rendering offload and should not be treated as a universal VKD3D-Proton setting.
The exact requirements depend on the installed NVIDIA driver, Vulkan support, desktop environment, and whether the system is configured for hybrid graphics.
For Vulkan applications, the critical issue is ensuring that the intended NVIDIA Vulkan device is available and selected rather than simply changing an OpenGL-related variable.
Use VKD3D-Proton Configuration Variables Carefully
VKD3D-Proton supports environment variables that can alter its behavior, but not every GPU-selection problem should be solved by changing VKD3D-Proton-specific options.
The GPU-selection layer can involve several components:
Steam
↓
Proton
↓
VKD3D-Proton
↓
Vulkan
↓
GPU driver
↓
Physical GPU
This is why forcing the GPU is sometimes a driver or Vulkan configuration issue rather than a VKD3D-Proton configuration issue.
If the wrong GPU is already being selected at the Vulkan level, changing unrelated VKD3D-Proton options may not solve the problem.
Start with Vulkan device detection, then configure the appropriate GPU-selection mechanism.
Apply the Setting to One Steam Game
A per-game Steam launch option is generally preferable when only one title needs a specific GPU.
For example:
DRI_PRIME=1 %command%
This affects that particular Steam game rather than changing GPU selection for every application on the system.
The basic process is:
- Open Steam.
- Go to your Library.
- Right-click the game.
- Select Properties.
- Open General.
- Find Launch Options.
- Add the appropriate GPU-selection variable.
- Close the Properties window.
- Launch the game.
- Verify which GPU is being used.
This approach is useful for testing because removing the configuration is as simple as deleting the launch option.
Verify That VKD3D-Proton Is Using the Intended GPU
Adding a launch option does not guarantee that the game selected the desired GPU. Verification is important.
Linux provides several ways to monitor GPU activity.
For NVIDIA GPUs, nvidia-smi can show active processes and GPU utilization:
nvidia-smi
If the game appears in the process list while it is running, this can help confirm that the NVIDIA GPU is being used.
For AMD and Intel GPUs, tools such as radeontop, intel_gpu_top, or desktop GPU monitoring utilities can provide activity information, depending on the hardware and distribution.
You can also monitor the game’s performance. If the game was previously running on an integrated GPU and is now running on a dedicated GPU, there may be a noticeable change in GPU utilization and frame rates.
However, performance alone should not be treated as proof. Use GPU monitoring or Vulkan device information whenever possible.
Check the GPU Used by the Vulkan Application
Because VKD3D-Proton translates Direct3D 12 to Vulkan, Vulkan-level information is particularly useful when troubleshooting GPU selection.
If your system exposes multiple physical devices, compare the available Vulkan devices with the GPU that becomes active when the game starts.
This helps separate two different problems:
- The correct GPU is available, but the game selects the wrong one.
- The intended GPU is not correctly exposed to Vulkan.
The second problem cannot normally be fixed simply by adding a Steam launch option. It may require driver, Vulkan, PRIME, or system configuration changes.
Forcing a Specific GPU on Multi-GPU Desktop Systems
Desktop systems with multiple discrete GPUs require extra care.
Suppose your computer has:
GPU 0: AMD Radeon RX 7800 XT
GPU 1: NVIDIA GeForce RTX 4070
The desired device depends on the game and your configuration.
Using a generic device number without checking the Vulkan environment can produce unexpected results. GPU enumeration can change, particularly after driver changes or hardware modifications.
Instead of relying only on a number, verify the Vulkan device names first and then use the appropriate mechanism supported by your driver stack.
If you frequently switch between GPUs, keeping game-specific Steam launch options can make testing easier.
Why GPU Index Numbers Can Be Unreliable
A common mistake is assuming that GPU numbering is permanent.
For example, you might discover that:
GPU0 = Integrated GPU
GPU1 = Dedicated GPU
and assume this will always remain true.
That is not guaranteed. Device enumeration can depend on the system’s hardware, drivers, Vulkan implementation, and configuration.
After a driver update, hardware change, or major system configuration change, verify the device list again if a previously working GPU-selection setting stops behaving as expected.
Troubleshooting When the Wrong GPU Is Still Used
If the game continues using the wrong GPU, work through the configuration one layer at a time.
First, confirm that Linux detects both GPUs:
lspci | grep -E "VGA|3D|Display"
Then confirm that Vulkan detects them:
vulkaninfo --summary
Next, check the installed graphics drivers. A GPU can appear in PCI device listings while still having incomplete or incorrect graphics-driver support.
After that, test the Steam launch option with a simple game or benchmark where GPU activity is easy to monitor.
If the configuration still does not work, remove other GPU-related environment variables temporarily. Multiple graphics variables can interact and make troubleshooting harder.
Avoid Combining Random GPU Variables
One of the easiest ways to create a confusing configuration is to combine several environment variables copied from unrelated guides.
For example, you might find instructions for:
DRI_PRIME
__NV_PRIME_RENDER_OFFLOAD
__GLX_VENDOR_LIBRARY_NAME
VK_ICD_FILENAMES
These variables affect different parts of the graphics stack and are not interchangeable.
Adding all of them to one Steam launch command can produce an environment that is difficult to diagnose.
Use only the variables relevant to your GPU, driver, and configuration. Change one thing at a time and test the game after each change.
Be Careful With Vulkan ICD Selection
Vulkan Installable Client Drivers, commonly referred to as ICDs, determine which Vulkan driver implementations are available to applications.
Advanced users sometimes manipulate Vulkan ICD selection when troubleshooting multi-GPU configurations. However, this is a more system-level approach and should not be the first solution for a normal Steam game.
Incorrect ICD configuration can cause Vulkan applications to stop launching or make certain GPUs disappear from the available device list.
If your goal is simply to make one Proton game use a dedicated GPU, start with the GPU-selection mechanism appropriate to your graphics driver rather than changing global Vulkan configuration files.
Test After Changing the GPU
After forcing a GPU, test the game under the same conditions used before the change.
Compare:
- Average FPS
- Frame-time consistency
- GPU utilization
- VRAM usage
- Stuttering
- Loading behavior
- Graphical artifacts
- Crashes
- Power consumption
For example, if a game previously used an integrated GPU, switching to a dedicated GPU should generally change GPU utilization and available graphics performance. But if the game becomes unstable after the change, the configuration may need further investigation.
Do not judge the configuration from a single short test. Play the same demanding section or benchmark so that the results are comparable.
When You Should Not Force VKD3D-Proton to a GPU
Forcing a GPU is not always necessary.
If the system automatically selects the correct GPU and the game performs normally, adding additional launch options only increases configuration complexity.
You should also avoid changing GPU-selection variables merely because a guide recommends them for a different hardware configuration.
A setting designed for an NVIDIA hybrid laptop may not be appropriate for an AMD desktop with two GPUs. Likewise, a Mesa-specific configuration may not behave the same way with a different graphics driver.
The safest configuration is usually the simplest one that produces the required result.
A Practical Configuration Workflow
A reliable approach is to troubleshoot GPU selection in stages.
Start by identifying all installed GPUs:
lspci | grep -E "VGA|3D|Display"
Then identify the Vulkan devices:
vulkaninfo --summary
Determine which GPU the game currently uses. After that, select the appropriate GPU mechanism for your graphics driver.
For a Mesa-based multi-GPU configuration, you can test:
DRI_PRIME=1 %command%
For an NVIDIA hybrid configuration, use the NVIDIA PRIME/offload variables appropriate to your driver setup.
Launch the game and monitor GPU activity. If the intended GPU is active, test performance and stability. If it is not, remove the launch option and investigate the Vulkan or driver configuration instead of continually adding more variables.
Does Forcing a GPU Improve VKD3D-Proton Performance?
Forcing VKD3D-Proton to use a specific GPU can improve performance when the game was previously running on weaker hardware.
For example, a demanding Direct3D 12 game running on an integrated GPU may perform substantially differently when moved to a dedicated graphics processor.
However, forcing GPU selection does not inherently optimize VKD3D-Proton. It simply changes which GPU performs the Vulkan rendering work.
If the game was already using the fastest suitable GPU, forcing the same device will not automatically increase performance.
Performance is also affected by the Proton version, VKD3D-Proton implementation, Vulkan driver, CPU, memory, shader compilation, game settings, and GPU workload.
Can You Force a GPU for Every Proton Game?
You can configure GPU selection at a broader system or desktop level, depending on your Linux graphics stack. However, this is usually unnecessary when only a few games require a specific GPU.
Per-game Steam launch options provide better control because they allow different games to use different GPUs.
For example, you might allow lightweight games to use an integrated GPU while directing demanding Direct3D 12 games toward a dedicated GPU.
This can reduce unnecessary power consumption on laptops and gives you more control over multi-GPU systems.
Final Checks Before Using the Configuration
Before keeping a GPU-selection launch option permanently, verify four things.
First, make sure the intended GPU is actually detected by Vulkan. Second, confirm that the Steam game launches normally with the setting. Third, verify GPU activity while the game is running. Finally, test the game for performance and stability.
If the game stops launching after adding the option, remove the launch option and return to the previous configuration. This makes it easier to identify whether the problem comes from GPU selection, Proton, VKD3D-Proton, Vulkan, or the graphics driver.
Conclusion
You can force VKD3D-Proton to use a specific GPU by configuring the graphics environment used by the Proton game. On many Mesa-based multi-GPU systems, DRI_PRIME can be used through Steam launch options, while NVIDIA hybrid systems may require NVIDIA PRIME/offload configuration. The correct method depends on your hardware and driver stack.
The most reliable process is to identify the GPUs exposed to Vulkan first, apply the appropriate setting to the individual Steam game, and then verify GPU activity. Avoid guessing GPU indexes or combining unrelated environment variables. If the correct GPU is already being selected, additional configuration is unnecessary.