1.Determine whether a 32-bit graphics card driver is needed

  • Because some game installers, launchers, game bodies and other components mix 32-bit and 64-bit programs, it is recommended to install both 64-bit and 32-bit graphics card drivers at the same time
  • The following content, beginning with $, is to be executed in the terminal

1.1 Check executable file

Use the file command to check the exe file, for example:

$ file installer.exe

If the following content appears, it means that a 32-bit driver needs to be installed

PE32 executable (GUI) Intel 80386

If the following content appears, it means that a 64-bit driver needs to be installed

PE32+ executable (GUI) x86-64

1.2 Check Error log

If you find that the program cannot start, you can try the following methods to troubleshoot whether the 32-bit graphics card driver is missing

Click "..." next to the program icon, select "Advanced Debugging Tools"

right-click the program icon in the pop-up window, and select "Run in End Point".

If there is a failure to load files under the /lib/i386-linux-gnu/ path in the error log, it means that the 32-bit graphics card driver is missing

  • For example:
libGL error: MESA-LOADER: failed to open radeonsi: /usr/lib/pressure-vessel/overrides/lib/i386-linux-gnu/dri/radeonsi_dri.so: cannot open shared object file: No such file or directory (search paths /usr/lib/pressure-vessel/overrides/lib/x86_64-linux-gnu/dri:/usr/lib/pressure-vessel/overrides/lib/i386-linux-gnu/dri)
libGL error: failed to load driver: radeonsi

2.Install graphics driver

2.1 Install 64-bit graphics driver

2.1.1 NVIDIA graphics card

$ sudo apt install nvidia-driver-full

2.1.2 AMD card or Intel graphics card

$ sudo apt install mesa-vulkan-drivers libvulkan1 libglx-mesa0 libgl1-mesa-dri

2.1.3 Check Vulkan installation

$ sudo apt install vulkan-tools
$ vkcube
  • If the GUI interface can be displayed, it means the installation is successful
  • 32-bit and 64-bit vulkan-tools will overwrite each other, if you need to test the 32-bit driver, you need to follow the instructions to re-install it

2.2 Install 32-bit graphics driver

2.2.1 Enable 32-bit support

$ sudo dpkg --add-architecture i386
$ sudo apt update
$ sudo apt upgrade

2.2.2 NVIDIA graphics card

$ sudo apt install nvidia-driver-full nvidia-vulkan-icd:i386 libvulkan1:i386

2.2.3 AMD card or Intel graphics card

$ sudo apt install mesa-vulkan-drivers:i386 libvulkan1:i386 libglx-mesa0:i386 libgl1-mesa-dri:i386

2.2.4 Check Vulkan installation

$ sudo apt install vulkan-tools:i386
$ vkcube
  • If the GUI interface can be displayed, it means the installation is successful
  • 32-bit and 64-bit vulkan-tools will overwrite each other, if you need to test the 64-bit driver, you need to follow the instructions to re-install it

3.Determine the version of DXVK and vkd3d supported by your graphics card.

  • DXVK is an open-source translation layer that converts Direct3D 8/9/10/11 function calls to Vulkan
    vkd3d is a Direct3D 12 graphics library based on Vulkan.
    You can check the version of DXVK and vkd3d supported by your graphics card and install the newest possible version by following these steps
Component Name DXVK DXVK vkd3d vkd3d
Component Version 2.x 1.x ≥ 2.9 ≤ 2.8
Vulkan API ≥ 1.3 ≥ 1.1 ≥ 1.3 ≥ 1.1
Vulkan Extensions VK_EXT_robustness2
VK_EXT_transform_feedback
VK_EXT_robustness2
VK_KHR_push_descriptor
VK_EXT_descriptor_indexing
VK_KHR_timeline_semaphore
VK_KHR_sampler_mirror_clamp_to_edge
VK_EXT_robustness2
VK_KHR_separate_depth_stencil_layouts
VK_KHR_bind_memory2
VK_KHR_copy_commands2
VK_KHR_dynamic_rendering
VK_EXT_extended_dynamic_state
VK_EXT_extended_dynamic_state2
VK_KHR_buffer_device_address
VK_KHR_push_descriptor
Vulkan Extensions
Check Method
$ vulkaninfo | grep -E "VK_EXT_robustness2|
VK_EXT_transform_feedback"
$ vulkaninfo | grep -E "VK_EXT_robustness2|
VK_KHR_push_descriptor"
$ vulkaninfo | grep -E "VK_EXT_descriptor_indexing|
VK_KHR_timeline_semaphore|
VK_KHR_sampler_mirror_clamp_to_edge|
VK_EXT_robustness2|
VK_KHR_separate_depth_stencil_layouts|
VK_KHR_bind_memory2|
VK_KHR_copy_commands2|
VK_KHR_dynamic_rendering|
VK_EXT_extended_dynamic_state|
VK_EXT_extended_dynamic_state2|
VK_KHR_buffer_device_address|
VK_KHR_push_descriptor"
Vulkan Features samplerMirrorClampToEdge
shaderDrawParameters
VkPhysicalDeviceDescriptorIndexingFeatures
Vulkan Features
Check Method
$ vulkaninfo | grep -E "samplerMirrorClampToEdge|
shaderDrawParameters"
$ vulkaninfo | grep -A 22 "VkPhysicalDeviceDescriptorIndexingFeatures"

3.1 Check Vulkan API version

  • 3.1.1 Install Vulkan related tools

# 64位
$ sudo apt install vulkan-tools# 32位
$ sudo apt install vulkan-tools:i386
  • 3.1.2 Check Vulkan API version

$ vulkaninfo | grep "apiVersion"

3.2 DXVK

  • Try to choose the new dxvk version

3.2.1 DXVK 2.x version

  • Requires Vulkan API ≥ 1.3
  • Need VK_EXT_robustness2 expansion
  • Need VK_EXT_transform_feedback expansion
  • Check expansion

* If the extension does not appear, it means that the extension is not supported

$ vulkaninfo | grep -E "VK_EXT_robustness2|VK_EXT_transform_feedback"
VK_EXT_robustness2                            : extension revision 1
VK_EXT_transform_feedback                     : extension revision 1

3.2.2 DXVK 1.x version

  • Requires Vulkan API ≥ 1.1

3.3 vkd3d

  • Try to choose the new vkd3d version

3.3.1 VKD3D ≥ 2.9 version

  • Requires Vulkan API ≥ 1.3
  • Need samplerMirrorClampToEdge features
  • Need shaderDrawParameters features
  • Need VK_EXT_robustness2 expansion
  • Need VK_KHR_push_descriptor expansion
  • Check expansion

* If the extension does not appear, it means that the extension is not supported

$ vulkaninfo | grep -E "samplerMirrorClampToEdge|shaderDrawParameters|VK_EXT_robustness2|VK_KHR_push_descriptor"
VK_EXT_robustness2                            : extension revision 1
VK_KHR_push_descriptor                        : extension revision 2
  • Inspection characteristics

* If the feature appears false , it means that the supported feature is incomplete

$ vulkaninfo | grep -E "VK_EXT_robustness2|VK_KHR_push_descriptor"
VK_EXT_robustness2 : extension revision 1
VK_KHR_push_descriptor : extension revision 2

3.3.2 VKD3D ≤ 2.8 version

  • Requires Vulkan API ≥ 1.1
  • Need VK_EXT_descriptor_indexing expansion
  • Need to VkPhysicalDeviceDescriptorIndexingFeatures all features
  • Need VK_KHR_timeline_semaphore expansion
  • Need VK_KHR_sampler_mirror_clamp_to_edge expansion
  • Need VK_EXT_robustness2 expansion
  • Need VK_KHR_separate_depth_stencil_layouts expansion
  • Need VK_KHR_bind_memory2 expansion
  • Need VK_KHR_copy_commands2 expansion
  • Need VK_KHR_dynamic_rendering expansion
  • Need VK_EXT_extended_dynamic_state expansion
  • Need VK_EXT_extended_dynamic_state2 expansion
  • Need VK_KHR_buffer_device_address expansion
  • Need VK_KHR_push_descriptor expansion
  • Check expansion

* If the extension does not appear, it means that the extension is not supported

$ vulkaninfo | grep -E "VK_EXT_descriptor_indexing|VK_KHR_timeline_semaphore|VK_KHR_sampler_mirror_clamp_to_edge|VK_EXT_robustness2|VK_KHR_separate_depth_stencil_layouts|VK_KHR_bind_memory2|VK_KHR_copy_commands2|VK_KHR_dynamic_rendering|VK_EXT_extended_dynamic_state|VK_EXT_extended_dynamic_state2|VK_KHR_buffer_device_address|VK_KHR_push_descriptor"
VK_EXT_descriptor_indexing                    : extension revision 2
VK_EXT_extended_dynamic_state                 : extension revision 1
VK_EXT_extended_dynamic_state2                : extension revision 1
VK_EXT_extended_dynamic_state3                : extension revision 2
VK_EXT_robustness2                            : extension revision 1
VK_KHR_bind_memory2                           : extension revision 1
VK_KHR_buffer_device_address                  : extension revision 1
VK_KHR_copy_commands2                         : extension revision 1
VK_KHR_dynamic_rendering                      : extension revision 1
VK_KHR_dynamic_rendering_local_read           : extension revision 1
VK_KHR_push_descriptor                        : extension revision 2
VK_KHR_sampler_mirror_clamp_to_edge           : extension revision 3
VK_KHR_separate_depth_stencil_layouts         : extension revision 1
VK_KHR_timeline_semaphore                     : extension revision 2
  • Inspection characteristics

* If the feature appears false , it means that the supported feature is incomplete

$ vulkaninfo | grep -A 22 "VkPhysicalDeviceDescriptorIndexingFeatures"
VkPhysicalDeviceDescriptorIndexingFeatures:
-------------------------------------------
shaderInputAttachmentArrayDynamicIndexing          = true
shaderUniformTexelBufferArrayDynamicIndexing       = true
shaderStorageTexelBufferArrayDynamicIndexing       = true
shaderUniformBufferArrayNonUniformIndexing         = true
shaderSampledImageArrayNonUniformIndexing          = true
shaderStorageBufferArrayNonUniformIndexing         = true
shaderStorageImageArrayNonUniformIndexing          = true
shaderInputAttachmentArrayNonUniformIndexing       = true
shaderUniformTexelBufferArrayNonUniformIndexing    = true
shaderStorageTexelBufferArrayNonUniformIndexing    = true
descriptorBindingUniformBufferUpdateAfterBind      = true
descriptorBindingSampledImageUpdateAfterBind       = true
descriptorBindingStorageImageUpdateAfterBind       = true
descriptorBindingStorageBufferUpdateAfterBind      = true
descriptorBindingUniformTexelBufferUpdateAfterBind = true
descriptorBindingStorageTexelBufferUpdateAfterBind = true
descriptorBindingUpdateUnusedWhilePending          = true
descriptorBindingPartiallyBound                    = true
descriptorBindingVariableDescriptorCount           = true
runtimeDescriptorArray                             = true

4.Other issues

4.1 AMD Graphics: Southern Islands (SI) and Sea Islands (CIK)

  • This series of graphics cards supports both radeon and amdgpu drivers, need to switch to radeon driver
  • Use the following command to check the currently used graphics card driver
$ lspci -k | grep -A 3 -E "(VGA|3D)"
  1. If the following content is displayed, it means that the graphics card does not support the Vulkan API.
Kernel driver in use: radeon
Kernel modules: radeon
  1. If the following content is displayed, it means that the graphics card driver needs to be switched to amdgpu
Kernel driver in use: radeon
Kernel modules: radeon, amdgpu

4.1.1 Method 1

  • Edit kernel startup parameters
$ sudo vim /etc/default/grub
  • Add the following content within the double quotes after the GRUB_CMDLINE_LINUX_DEFAULT , separated from the existing content by a space
radeon.si_support=0 amdgpu.si_support=1 radeon.cik_support=0 amdgpu.cik_support=1
  • Update grub
$ sudo update-grub
  • Restart
$ reboot
  • Check the graphics card driver again. If the following content is displayed, it means the switch is successful
Kernel driver in use: amdgpu
Kernel modules: radeon, amdgpu

4.1.2 Method 2

  • Create /etc/modprobe.d/amdgpu.conf profile
$ sudo vim /etc/modprobe.d/amdgpu.conf
options amdgpu si_support=1
options amdgpu cik_support=1
  • Create /etc/modprobe.d/radeon.conf profile
$ sudo vim /etc/modprobe.d/radeon.conf
options radeon si_support=0
options radeon cik_support=0
  • Update initramfs
$ sudo update-initramfs -u
  • Restart
$ reboot
  • Check the graphics card driver again. If the following content is displayed, it means the switch is successful
Kernel driver in use: amdgpu
Kernel modules: radeon, amdgpu

 

5.Reference Documentation

Leave a Reply