protonscr

Issue with GPU (wrong GPU chosen)

dxvkclosed
doitsujin/dxvk#2036 · opened 2021-04-22 by gabriele2000 · updated 2025-05-31 · 19 comments · github
1 matching comments, n / p to jump
Ggabriele2000 2021-04-22 github

I honestly don't know where to ask this, because I don't know if it's a DXVK issue or a Wine one...
Long story short, the game "Curse of the Dead Gods" launches on my integrated GPU instead on the Nvidia GPU which is strange because the game runs on DX11 as far as I know...
I'll upload the log, that's the only game that has this "issue". Yes, issue because the framerate is pure garbage without DXVK
wine.log

Ddoitsujin maintainer 2021-04-22 github

Are you using Proton? If so, WINEDLLOVERRIDES=dxgi=n should fix that problem (which switches to DXVK's DXGI implementation).

DXVK always prioritizes dedicated GPUs over integrated ones, but if the game insists on using the integrated one for whatever reason, there's always the option to use DXGI_FILTER_DEVICE_NAME as well.

Ggabriele2000 2021-04-22 github

Are you using Proton? If so, WINEDLLOVERRIDES=dxgi=n should fix that problem (which switches to DXVK's DXGI implementation).

DXVK always prioritizes dedicated GPUs over integrated ones, but if the game insists on using the integrated one for whatever reason, there's always the option to use DXGI_FILTER_DEVICE_NAME as well.

I'm using wine-staging-tkg 6.5, a custom build, and that's the only game that has this problem...
I'll wait until 6.7 comes out, maybe it'll fix the problem

Mmisyltoad 2021-04-22 github

It will not.

Ggabriele2000 2021-04-22 github

It will not.

where do I have to write "DXGI_FILTER_DEVICE_NAME" if there isn't any .log file in the game's folder? Asking since the log files are a living proof that DXVK is working and for that game, it's not.

Besides, I always used DXGI from DXVK, 'cause I use reshade, and that too is a proof that everything's working

SSveSop 2021-04-23 github

https://github.com/doitsujin/dxvk#device-filter
Either in your launcher script with eg. export DXVK_FILTER_DEVICE_NAME="My GPU" or just as part of the wine launcher line.

You can also redirect log files to a separate folder of your choosing (so you do not have to find the correct folder where the .exe file is or whatnot).
export DXVK_LOG_PATH="/home/yourname/gamelogs" (or whatever you would like).

NN-Accumbens 2021-04-25 github

Related to this, is it possible to choose the GPU based on something other than the name? I have two of the same GPUs that have the same name, but they're not in SLI...

Ggabriele2000 2021-05-11 github

GPU selection is possible from the nvidia control panel.
The one in the windows settings only works for directx.

What if I'm a Linux user?
You know, DXVK is for Linux

Mmeladath 2021-12-21 github

I have made a change that allows DXVK to check deviceUUID rather than just device name.

I use this locally to force my PC to use my first GPU. I have 2 vega 56 with only a the top card plugged into monitors. vulkaninfo reports it as GPU 1 (not 0), however it is in the first PCI-E slot. DXVK always picks the other card. I checked the UUID using vulkaninfo and then force it in with DXVK_FILTER_DEVICE_UUID=3 (the UUID is all 0's with a single 3 to indicate its pcibus).

This code works for me, if people are interested I may put up a branch/PR, but the code may very well be rejected, as I do not know the DXVK codebase well, and this was just a 15 minute fix to allow playing games...

LLunNova 2022-09-21 github

The device UUIDs aren't guaranteed to be unique either:

Devices:
========
GPU0:
        apiVersion         = 4206803 (1.3.211)
        driverVersion      = 92278791 (0x5801007)
        vendorID           = 0x1002
        deviceID           = 0x73a3
        deviceType         = PHYSICAL_DEVICE_TYPE_DISCRETE_GPU
        deviceName         = AMD RADV SIENNA_CICHLID
        driverID           = DRIVER_ID_MESA_RADV
        driverName         = radv
        driverInfo         = Mesa 22.1.7
        conformanceVersion = 1.3.0.0
        deviceUUID         = 00000000-0600-0000-0000-000000000000
        driverUUID         = 414d442d-4d45-5341-2d44-525600000000
GPU1:
        apiVersion         = 4206803 (1.3.211)
        driverVersion      = 92278791 (0x5801007)
        vendorID           = 0x1002
        deviceID           = 0x73a3
        deviceType         = PHYSICAL_DEVICE_TYPE_DISCRETE_GPU
        deviceName         = AMD RADV SIENNA_CICHLID
        driverID           = DRIVER_ID_MESA_RADV
        driverName         = radv
        driverInfo         = Mesa 22.1.7
        conformanceVersion = 1.3.0.0
        deviceUUID         = 00000000-0c00-0000-0000-000000000000
        driverUUID         = 414d442d-4d45-5341-2d44-525600000000

edit: Nevermind, didn't see the c/6 at the left and parsed it as all zeros.

BBlisto91 2024-09-30 github

@gabriele2000 Are you still having the issue to this day?
There have been some changes lately that should make it work better with games that prioritize GPU depending on reported vram amount.

KK0bin maintainer 2024-09-30 github

Reopen if it's still an issue. Otherwise I'll assume the recent changes to the way GPUs are presented to the game fixes this.

Bbaughmann 2025-01-10 github

Sort of a follow up to this. Not sure if it deserves its own thread though. I have two 4090s in my system, though one has terrible airflow.

For this reason i have my display plugged into the one that has decent airflow. I'd have assumed that DXVK would've selected this one to launch applications on, but it just selects the first one it sees. The one with bad airflow is 0 in nvidia-smi and the one with good airflow is 1. However, to vulkaninfo they are both just called NVIDIA GeForce RTX 4090 so the name filter doesn't work.

I don't suppose there is a way to tell DXVK which GPU to use? If not via the GPU ID in nvidia-smi, then maybe by it's PCIe device ID?

Ggilvbp 2025-05-30 github

Sort of a follow up to this. Not sure if it deserves its own thread though. I have two 4090s in my system, though one has terrible airflow.

For this reason i have my display plugged into the one that has decent airflow. I'd have assumed that DXVK would've selected this one to launch applications on, but it just selects the first one it sees. The one with bad airflow is 0 in nvidia-smi and the one with good airflow is 1. However, to vulkaninfo they are both just called NVIDIA GeForce RTX 4090 so the name filter doesn't work.

I don't suppose there is a way to tell DXVK which GPU to use? If not via the GPU ID in nvidia-smi, then maybe by it's PCIe device ID?

You could use my branch, it's working, ref: https://github.com/doitsujin/dxvk/pull/2408#issuecomment-2922310765

ZZebra2711 2025-05-30 github

Sort of a follow up to this. Not sure if it deserves its own thread though. I have two 4090s in my system, though one has terrible airflow.
For this reason i have my display plugged into the one that has decent airflow. I'd have assumed that DXVK would've selected this one to launch applications on, but it just selects the first one it sees. The one with bad airflow is 0 in nvidia-smi and the one with good airflow is 1. However, to vulkaninfo they are both just called NVIDIA GeForce RTX 4090 so the name filter doesn't work.
I don't suppose there is a way to tell DXVK which GPU to use? If not via the GPU ID in nvidia-smi, then maybe by it's PCIe device ID?

You could use my branch, it's working, ref: [#2408 (comment)](https://github.com/doitsujin/dxvk/pull/2408#issuecomment-2922310765)

does this https://github.com/aejsmith/vkdevicechooser help fix that issue?

Ggilvbp 2025-05-30 github

Sort of a follow up to this. Not sure if it deserves its own thread though. I have two 4090s in my system, though one has terrible airflow.
For this reason i have my display plugged into the one that has decent airflow. I'd have assumed that DXVK would've selected this one to launch applications on, but it just selects the first one it sees. The one with bad airflow is 0 in nvidia-smi and the one with good airflow is 1. However, to vulkaninfo they are both just called NVIDIA GeForce RTX 4090 so the name filter doesn't work.
I don't suppose there is a way to tell DXVK which GPU to use? If not via the GPU ID in nvidia-smi, then maybe by it's PCIe device ID?

You could use my branch, it's working, ref: [#2408 (comment)](https://github.com/doitsujin/dxvk/pull/2408#issuecomment-2922310765)

does this https://github.com/aejsmith/vkdevicechooser help fix that issue?

No. I gave vkdevicechooser a try, but it didn’t solve the issue on my system.
Since I have two identical GPUs, only filtering by UUID worked properly in my case.

ZZebra2711 2025-05-30 github

No. I gave vkdevicechooser a try, but it didn’t solve the issue on my system.

Are you sure you tested that? It used the index instead. I used:

ENABLE_DEVICE_CHOOSER_LAYER=1 VULKAN_DEVICE_INDEX=1 vulkaninfo --summary

and the output only showed one GPU's information.

Ggilvbp 2025-05-30 github

No. I gave vkdevicechooser a try, but it didn’t solve the issue on my system.

Are you sure you tested that? It used the index instead. I used:

ENABLE_DEVICE_CHOOSER_LAYER=1 VULKAN_DEVICE_INDEX=1 vulkaninfo --summary

and the output only showed one GPU's information.

You're right — I just tested it again, and it worked. Now I see what happened: I hadn’t tested it with Gamescope as I thought.

Without using Gamescope, I still get DXGI surface problems.

Thank you!

Ggilvbp 2025-05-30 github

No. I gave vkdevicechooser a try, but it didn’t solve the issue on my system.

Are you sure you tested that? It used the index instead. I used:

ENABLE_DEVICE_CHOOSER_LAYER=1 VULKAN_DEVICE_INDEX=1 vulkaninfo --summary

and the output only showed one GPU's information.

@Zebra2711 FYI my branch was merged, therefore, now you can use DXVK_FILTER_DEVICE_UUID=adef250e5637a4fae6c2c42288ffe233 (my example)

ZZebra2711 2025-05-31 github

@Zebra2711 FYI my branch was merged, therefore, now you can use DXVK_FILTER_DEVICE_UUID=adef250e5637a4fae6c2c42288ffe233 (my example)

Tks, i opened a PR to add it to lutris