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 convertsDirect3D 8/9/10/11
function calls toVulkan
vkd3d
is aDirect3D 12
graphics library based onVulkan
.
You can check the version ofDXVK
andvkd3d
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)" |
- 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 |
- 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
- DXVK: Driver support https://github.com/doitsujin/dxvk/wiki/Driver-support
- vkd3d: Drivers https://github.com/HansKristian-Work/vkd3d-proton/?tab=readme-ov-file#drivers
- vkd3d v2.8: Drivers https://github.com/HansKristian-Work/vkd3d-proton/tree/v2.8?tab=readme-ov-file#drivers
- AMDGPU: Enable Southern Islands (SI) and Sea Islands (CIK) support https://wiki.archlinuxcn.org/wiki/AMDGPU