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:
VKD3D_FILTER_DEVICE_NAME="AMD Radeon RX 6700 XT" %command% -dev -eac_launcher_settings SettingsDX12.jsonDXVK_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:
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.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.
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.
Hmm.. I haven't looked at the code but shouldn't it be possible to get/match the "device id" from whatever DXVK_FILTER_DEVICE_NAME is set to and use that for VKD3D_VULKAN_DEVICE? You get the idea... since VKD3D_VULKAN_DEVICE obviously works?
proton experimentalx2 2023-12DXVK_FILTER_DEVICE_NAMEx3 2024-09VKD3D_VULKAN_DEVICE=0x3 2024-09VKD3D_VULKAN_DEVICEx1 2024-09VKD3D_FILTER_DEVICE_NAMEx2 2024-01DXVK_FILTER_DEVICE_NAME="AMD Radeon RX 6700 XT"x2 2023-12VKD3D_FILTER_DEVICE_NAME="AMD Radeon RX 6700 XT"x2 2023-11MANGOHUDx1 2023-11VKD3D_VULKAN_DEVICE=0 %command%x3 2024-09DXVK_FILTER_DEVICE_NAME="AMD Radeon RX 6700 XT" %command%x1 2023-11VKD3D_FILTER_DEVICE_NAME="AMD Radeon RX 6700 XT" %command% -dev -eac_launcher_settingsx1 2023-11mangohud AMD_VULKAN_ICD=RADV VKD3D_FILTER_DEVICE_NAME="AMD Radeon RX 6700 XT" %command%x1 2023-11mangohud AMD_VULKAN_ICD=RADV VKD3D_FILTER_DEVICE_NAME="AMD Radeon RX 6700 XT" %command% --intro-skip --skipStartScreen -moddedx1 2023-11mangohud AMD_VULKAN_ICD=RADV VKD3D_FILTER_DEVICE_NAME="AMD Radeon RX 6700 XT" %command% -dev -novid -eac_launcher_settingsx1 2023-11
System information
Issue description
I'm using MANGOHUD with the config opiton
gpu_nameso I can see the name of the GPU the game is using, and launching my games withVKD3D_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.Launch parameters
mangohud AMD_VULKAN_ICD=RADV VKD3D_FILTER_DEVICE_NAME="AMD Radeon RX 6700 XT" %command%mangohud AMD_VULKAN_ICD=RADV VKD3D_FILTER_DEVICE_NAME="AMD Radeon RX 6700 XT" %command% --intro-skip --skipStartScreen -moddedmangohud AMD_VULKAN_ICD=RADV VKD3D_FILTER_DEVICE_NAME="AMD Radeon RX 6700 XT" %command% -dev -novid -eac_launcher_settings SettingsDX12.jsonJust to clarify, all games launch without errors.
Log files