vkd3d-proton
vkd3d-proton copied to clipboard
`VKD3D_FILTER_DEVICE_NAME` do not work consistently
System information
- GPU: RX 6700 XT (NAVI22) + RX 570 (POLARIS10)
- Driver: mesa-git
- Wine version: proton experimental
Issue description
I'm using MANGOHUD with the config opiton gpu_name so I can see the name of the GPU the game is using, and launching my games with VKD3D_FILTER_DEVICE_NAME="AMD Radeon RX 6700 XT" (the same string I've been using successfully with all my DX11 DVXK games for years with DXVK_FILTER_DEVICE_NAME), but the results are mixed with VKD3D.
- Horizon zero dawn complete edition → Detect RX 6700 correctly
- Cyberpunk → Don't detect it, defaults to RX 570
- Apex Legends → Don't detect it, defaults to RX 570
Launch parameters
- Horizon zero dawn complete edition →
mangohud AMD_VULKAN_ICD=RADV VKD3D_FILTER_DEVICE_NAME="AMD Radeon RX 6700 XT" %command%- Cyberpunk →
mangohud AMD_VULKAN_ICD=RADV VKD3D_FILTER_DEVICE_NAME="AMD Radeon RX 6700 XT" %command% --intro-skip --skipStartScreen -modded- Apex Legends →
mangohud AMD_VULKAN_ICD=RADV VKD3D_FILTER_DEVICE_NAME="AMD Radeon RX 6700 XT" %command% -dev -novid -eac_launcher_settings SettingsDX12.json
Just to clarify, all games launch without errors.
Log files
- Horizon zero dawn
- log: https://fastupload.io/HXIwsFjxcV3cyea/file
- screenshot: https://i.imgur.com/g5JZ2zs.png
- Cyperpunk:
- log: https://fastupload.io/smcFZe5MyWDnCic/file
- screenshot: https://i.imgur.com/UmIgs8A.png
- Apex legends:
- log: https://fastupload.io/pXoNbsvE9xq4zV5/file
- screenshot: https://i.imgur.com/dZtXcPM.jpg
VKD3D_FILTER_DEVICE_NAME only works if the game does not explicitly pass a DXGI adapter to D3D12CreateDevice. If a game does explicitly pass the adapter, then only the DXVK env var will work.
But yeah, we could consider supporting both environment variables in one of the projects to make this less clunky.
ApexLegends is nice to test this:
- GPU not filtered correctly → If I launch the game in DX12 mode
VKD3D_FILTER_DEVICE_NAME="AMD Radeon RX 6700 XT" %command% -dev -eac_launcher_settings SettingsDX12.json
- GPU filtered correctly → If if launch the game in DX11 mode
DXVK_FILTER_DEVICE_NAME="AMD Radeon RX 6700 XT" %command%
Also, I'm sure it's filtering the wrong GPU because the performance drops X6.
Given we use DXVK DXGI now, that env-var should be deprecated I think.
Given we use DXVK DXGI now, that env-var should be deprecated I think.
By any chance, could we use a new env-var that is universal to both DXVK and VKD3D-Proton games to prevent confusion that might come from having to use DXVK's env-var for device filtering?
I've re-tested with proton-experimental and mesa 23.2.1-2. Something has changed:
- Cyberpunk → Now works fine. It detect the GPU correctly when running the game with VKD3D. The env var
DXVK_FILTER_DEVICE_NAME="AMD Radeon RX 6700 XT"is indeed enough. Very likely this change has been introduced either on proton-experimental or in the latest Cyberpunk update. - Apex Legends → The issue persists.
- Resident Evil 2 → The issue also affect this game.
Filter didn't work for me as well, but this one VKD3D_VULKAN_DEVICE=0 %command% worked. Just had to make sure that device 0 is discrete video-card.
Filter didn't work for me as well, but this one
VKD3D_VULKAN_DEVICE=0 %command%worked. Just had to make sure that device 0 is discrete video-card.
I can confirm that works for Apex Legends on DX12 mode.
I keep the issue opened because the problem remains with DXVK_FILTER_DEVICE_NAME/VKD3D_FILTER_DEVICE_NAME not working as expected with the DX12 games mentioned above.