If you're like me, and I know you are, you're going to buy this card for your small form-factor computer that's using integrated graphics (in my case a 5700g).
I've found that there is very little loss in performance by using the HDMI output from my 5700g, and setting an environment variable to go through the 6400. That said, here are the pertinent variables:
DRI_PRIME for OpenGL
MESA_VK_DEVICE_SELECT for Vulkan.
DXVK_FILTER_DEVICE_NAME for DXVK.
To determine what to use for DRI_PRIME, run "xrandr --listproviders" and you should get something like:
Providers: number : 2
Provider 0: id: 0x55 cap: 0xf, Source Output, Sink Output, Source Offload, Sink Offload crtcs: 4 outputs: 2 associated providers: 1 name:Unknown AMD Radeon GPU @ pci:0000:0f:00.0
Provider 1: id: 0xa3 cap: 0xf, Source Output, Sink Output, Source Offload, Sink Offload crtcs: 2 outputs: 2 associated providers: 1 name:Unknown AMD Radeon GPU @ pci:0000:03:00.0
You can then determine which card is which by running this: "lspci | grep VGA" which returns something like this:
lspci | grep VGA
03:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Navi 24 [Radeon RX 6400 / 6500 XT] (rev c7)
0f:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Cezanne (rev c8)
So if provider 0 is pci:0000:0f that maps to 0f:00.0 Cezanne. and provider is 03:00 that maps to the 6400.
To run an OpenGL application on the 6400, do this: DRI_PRIME=1 <command>
An example would be "DRI_PRIME=1 glxgears -info | grep RENDER" which yields this:
GL_RENDERER = AMD BEIGE_GOBY (LLVM 11.0.1, DRM 3.42, 5.15.35-desktop-2.mga8)
Setting DRI_PRIME to zero yields this (DRI_PRIME=0 glxgears -info | grep RENDER)
GL_RENDERER = AMD RENOIR (LLVM 11.0.1, DRM 3.42, 5.15.35-desktop-2.mga8)
For Vulkan, you determine your arguments this way:
MESA_VK_DEVICE_SELECT=list vkcube
selectable devices:
GPU 0: 1002:1638 "AMD RADV RENOIR" integrated GPU 0000:00:00.0
GPU 1: 1002:743f "AMD RADV BEIGE_GOBY" discrete GPU 0000:00:00.0
GPU 2: 10005:0 "llvmpipe (LLVM 11.0.1, 256 bits)" CPU 0000:00:00.0
So to pick a device, use the argument after the "GPU X:" So to use the Cezanne GPU in GravityMark do this:
MESA_VK_DEVICE_SELECT=1002:1638 ./run_windowed_vk.sh
And you should see both devices BEIGE_GOBY mostly idle and Cezanne with high usage. To run the 6400, do this:
MESA_VK_DEVICE_SELECT=1002:743f ./run_windowed_vk.sh
and you should see the 6400 under high load and Cezanne under low load.
Lastly, to pick the device for DXVK, run this command: " vulkaninfo | grep "GPU id :" | sort | uniq" and you should get something like:
GPU id : 0 (AMD RADV RENOIR):
GPU id : 1 (AMD RADV BEIGE_GOBY):
GPU id : 2 (llvmpipe (LLVM 11.0.1, 256 bits)):
You can verify what is happening in your DXVK enhanced game by setting the DXVK_HUD environment variable to "full" like this: "export DXVK_HUD=full" on the command line before running the commands below.
According to the DXVK documentation, you only need to specify something that differentiates the GPUs so to use the 6400 to play Batman Arkham Knight do this:
DXVK_FILTER_DEVICE_NAME=BEIGE_GOBY wine BatmanAK.exe
To use Cezanne, do this:
DXVK_FILTER_DEVICE_NAME=RENOIR wine BatmanAK.exe
Finally to set a GPU in Steam/Proton, just set DXVK_FILTER_DEVICE_NAME before running steam:
DXVK_FILTER_DEVICE_NAME=BEIGE_GOBY steam
and all launched games that use DXVK will use the 6400.
I've found that there is very little loss in performance by using the HDMI output from my 5700g, and setting an environment variable to go through the 6400. That said, here are the pertinent variables:
DRI_PRIME for OpenGL
MESA_VK_DEVICE_SELECT for Vulkan.
DXVK_FILTER_DEVICE_NAME for DXVK.
To determine what to use for DRI_PRIME, run "xrandr --listproviders" and you should get something like:
Providers: number : 2
Provider 0: id: 0x55 cap: 0xf, Source Output, Sink Output, Source Offload, Sink Offload crtcs: 4 outputs: 2 associated providers: 1 name:Unknown AMD Radeon GPU @ pci:0000:0f:00.0
Provider 1: id: 0xa3 cap: 0xf, Source Output, Sink Output, Source Offload, Sink Offload crtcs: 2 outputs: 2 associated providers: 1 name:Unknown AMD Radeon GPU @ pci:0000:03:00.0
You can then determine which card is which by running this: "lspci | grep VGA" which returns something like this:
lspci | grep VGA
03:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Navi 24 [Radeon RX 6400 / 6500 XT] (rev c7)
0f:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Cezanne (rev c8)
So if provider 0 is pci:0000:0f that maps to 0f:00.0 Cezanne. and provider is 03:00 that maps to the 6400.
To run an OpenGL application on the 6400, do this: DRI_PRIME=1 <command>
An example would be "DRI_PRIME=1 glxgears -info | grep RENDER" which yields this:
GL_RENDERER = AMD BEIGE_GOBY (LLVM 11.0.1, DRM 3.42, 5.15.35-desktop-2.mga8)
Setting DRI_PRIME to zero yields this (DRI_PRIME=0 glxgears -info | grep RENDER)
GL_RENDERER = AMD RENOIR (LLVM 11.0.1, DRM 3.42, 5.15.35-desktop-2.mga8)
For Vulkan, you determine your arguments this way:
MESA_VK_DEVICE_SELECT=list vkcube
selectable devices:
GPU 0: 1002:1638 "AMD RADV RENOIR" integrated GPU 0000:00:00.0
GPU 1: 1002:743f "AMD RADV BEIGE_GOBY" discrete GPU 0000:00:00.0
GPU 2: 10005:0 "llvmpipe (LLVM 11.0.1, 256 bits)" CPU 0000:00:00.0
So to pick a device, use the argument after the "GPU X:" So to use the Cezanne GPU in GravityMark do this:
MESA_VK_DEVICE_SELECT=1002:1638 ./run_windowed_vk.sh
And you should see both devices BEIGE_GOBY mostly idle and Cezanne with high usage. To run the 6400, do this:
MESA_VK_DEVICE_SELECT=1002:743f ./run_windowed_vk.sh
and you should see the 6400 under high load and Cezanne under low load.
Lastly, to pick the device for DXVK, run this command: " vulkaninfo | grep "GPU id :" | sort | uniq" and you should get something like:
GPU id : 0 (AMD RADV RENOIR):
GPU id : 1 (AMD RADV BEIGE_GOBY):
GPU id : 2 (llvmpipe (LLVM 11.0.1, 256 bits)):
You can verify what is happening in your DXVK enhanced game by setting the DXVK_HUD environment variable to "full" like this: "export DXVK_HUD=full" on the command line before running the commands below.
According to the DXVK documentation, you only need to specify something that differentiates the GPUs so to use the 6400 to play Batman Arkham Knight do this:
DXVK_FILTER_DEVICE_NAME=BEIGE_GOBY wine BatmanAK.exe
To use Cezanne, do this:
DXVK_FILTER_DEVICE_NAME=RENOIR wine BatmanAK.exe
Finally to set a GPU in Steam/Proton, just set DXVK_FILTER_DEVICE_NAME before running steam:
DXVK_FILTER_DEVICE_NAME=BEIGE_GOBY steam
and all launched games that use DXVK will use the 6400.
Comment