Linux GPU compatibility matrix | |||||||||||||||
GPU best choice: which graphic card to buy for use with GNU/Linux? | |||||||||||||||
Updated by Thomas “illwieckz” Debesse. | |||||||||||||||
Updated on 2018-06-11 00:23:29 CEST. | |||||||||||||||
TL;DR; | |||||||||||||||
- You only have to buy an Nvidia GPU if you need to do some non-standard CUDA computation; - You make a better choice buying an AMD GPU in all other cases; - You only have to use the amdgpu closed source graphic driver if you need to use some broken app using non-standard OpenGL compatibility profiles; - You can buy an Intel CPU with an integrated Intel GPU if you don't need so much power and you don't require native Direct3D9 support and don't require a working free OpenCL compute stack. | |||||||||||||||
The compatibility matrix | |||||||||||||||
Note on the colouring: when something is only available in proprietary stack, it's marked as “required” with a dark red background color, because being forced to use proprietary software is worst than not using any software, it's a kind or racket (a service that is fraudulently offered to solve a problem). | |||||||||||||||
Hardware compatibility | Intel | AMD | Nvidia | ||||||||||||
CPU Vendor and family | Intel free | Intel non-free | AMD free | AMD non-free | Nvidia free | Nvidia non-free | |||||||||
i965 | SDK (compute) | amdgpu | amdgpu-pro | nouveau | nvidia | ||||||||||
Intel EMT64 | yes | yes | yes | yes | yes | yes | |||||||||
AMD AMD64 | unavailable | unavailable | yes | yes | yes | yes | |||||||||
IBM PPC64 | unavailable | unavailable | yes | no | yes | yes | |||||||||
ARM | unavailable | unavailable | yes | no | yes | yes | |||||||||
Hardware design | Intel | AMD | Nvidia | ||||||||||||
Integrated | yes | yes | yes | yes | yes | yes | |||||||||
Replaceable | unavailable | unavailable | yes | yes | yes | yes | |||||||||
Usage | Intel | AMD | Nvidia | ||||||||||||
Low-end | yes | yes | yes | yes | yes | yes | |||||||||
High-end | unavailable | unavailable | yes | yes | yes | yes | |||||||||
KMD¹ Status | Intel | AMD | Nvidia | ||||||||||||
Driver support | Intel free | AMD free | AMD non-free | Nvidia free | Nvidia non-free | ||||||||||
i965 | amdgpu | nouveau | nvidia | ||||||||||||
Community review | yes | yes | no | yes | no | ||||||||||
Community support | yes | yes | no | yes | no | ||||||||||
Vendor support | yes | yes | no | no | required | ||||||||||
Driver status | Intel free | AMD free | AMD non-free | Nvidia free | Nvidia non-free | ||||||||||
i965 | amdgpu | nouveau | nvidia | ||||||||||||
Welcome | yes | yes | no | yes | no | ||||||||||
Shipped within distributions | yes | yes | no | yes | no | ||||||||||
Recommended | yes | yes | no | yes | no | ||||||||||
Maintainable | yes | yes | no | yes | no | ||||||||||
Readable | yes | yes | no | yes | no | ||||||||||
Free/Libre | yes | yes | no | yes | no | ||||||||||
Shared code in Linux source repository | yes | yes | no | yes | no | ||||||||||
UMD¹ Status | Intel | AMD | Nvidia | ||||||||||||
Driver support | Intel free | Intel non-free | AMD free | AMD non-free | Nvidia free | Nvidia non-free | |||||||||
i965 | SDK (compute) | mesa | amdvlk | rocm | amdgpu-pro | mesa | nvidia | ||||||||
Community review | yes | no | yes | yes | yes | no | yes | no | |||||||
Community support | yes | no | yes | yes | yes | no | yes | no | |||||||
Vendor support | yes | yes | no | yes | yes | yes | no | required | |||||||
Driver status | Intel free | Intel non-free | AMD free | AMD non-free | Nvidia free | Nvidia non-free | |||||||||
mesa | SDK (compute) | mesa | amdvlk | rocm | amdgpu-pro | mesa | nvidia | ||||||||
Welcome | yes | no | yes | yes | yes | no | yes | no | |||||||
Shipped within distributions | yes | no | yes | not yet | not yet | no | yes | no | |||||||
Can be installed along other solutions | yes | yes | yes | yes | yes | yes | no | ||||||||
Recommended | yes | no | yes | yes | yes | no | yes | no | |||||||
Maintainable | yes | no | yes | yes | yes | no | yes | no | |||||||
Readable | yes | no | yes | yes | yes | no | yes | no | |||||||
Free/Libre | yes | no | yes | yes | yes | no | yes | no | |||||||
Code sharing | Intel | AMD | Nvidia | ||||||||||||
Source tree | Intel free | AMD free | AMD non-free | Nvidia free | Nvidia non-free | ||||||||||
i965 | amdgpu | amdvlk | rocm | amdgpu-pro | mesa | nvidia | |||||||||
Linux shared code | yes | yes | yes | yes | yes | yes | no | ||||||||
Mesa shared code | yes | yes | no | yes | no | ||||||||||
Gallium3D shared code | no | yes | no | yes | no | ||||||||||
Graphical API compatibility | Intel | AMD | Nvidia | ||||||||||||
Standard graphical rendering | Intel free | AMD free | AMD non-free | Nvidia free | Nvidia non-free | ||||||||||
mesa/anv | mesa/radv | amdvlk | amdgpu-pro | mesa | nvidia | ||||||||||
Vulkan support | yes | yes | yes | yes | no | required | |||||||||
Vulkan features | yes | yes | yes | yes | no | required | |||||||||
Vulkan quality | unknown | yes | yes | yes | no | required | |||||||||
Vulkan performance | unknown | yes | yes | yes | no | required | |||||||||
mesa | mesa/radeonsi | amdgpu-pro | mesa | nvidia | |||||||||||
OpenGL support | yes | yes | yes | yes | yes | ||||||||||
OpenGL features | yes | yes | yes | yes | yes | ||||||||||
OpenGL quality | yes | yes | yes | yes | yes | ||||||||||
OpenGL performance | yes | yes | yes | no | required | ||||||||||
mesa | mesa/radeonsi | amdgpu-pro | mesa | nvidia | |||||||||||
OpenGL ES support | yes | yes | yes | yes | yes | ||||||||||
OpenGL ES features | yes | progressing | yes | progressing | yes | ||||||||||
OpenGL ES quality | yes | yes | yes | yes | yes | ||||||||||
OpenGL ES performance | yes | yes | yes | no | required | ||||||||||
Non-standard graphical rendering | Intel free | AMD free | AMD non-free | Nvidia free | Nvidia non-free | ||||||||||
mesa | mesa/radeonsi | amdgpu-pro | mesa | nvidia | |||||||||||
OpenGL 4.0+ non-standard core profile | no | progressing | required | no | required | ||||||||||
Foreign graphical rendering | Intel free | AMD free | AMD non-free | Nvidia free | Nvidia non-free | ||||||||||
mesa | mesa/radeonsi | amdgpu-pro | mesa | nvidia | |||||||||||
Direct3D9 support | no | yes | no | yes | no | ||||||||||
Direct3D9 features | no | yes | no | yes | no | ||||||||||
Direct3D9 quality | no | yes | no | yes | no | ||||||||||
Direct3D9 performance | no | yes | no | no | no | ||||||||||
Metal support | not wanted | not wanted | not wanted | not wanted | not wanted | ||||||||||
Foreign graphical rendering to Vulkan | Intel free | AMD free | AMD non-free | Nvidia free | Nvidia non-free | ||||||||||
mesa/anv | mesa/radv | amdvlk | amdgpu-pro | mesa | nvidia | ||||||||||
d3d8to9 | d3d8to9 | d3d8to9 | d3d8to9 | d3d8to9 | d3d8to9 | ||||||||||
Direct3D8 to Vulkan support | requires vk9 | requires vk9 | requires vk9 | requires vk9 | no | requires vk9 | |||||||||
vk9 | vk9 | vk9 | vk9 | vk9 | vk9 | ||||||||||
Direct3D9 to Vulkan support | progressing | progressing | progressing | progressing | no | progressing | |||||||||
Direct3D9 to Vulkan features | not yet | not yet | not yet | not yet | no | not yet | |||||||||
Direct3D9 to Vulkan quality | too early to know | too early to know | too early to know | too early to know | no | too early to know | |||||||||
Direct3D9 to Vulkan performance | too early to know | too early to know | too early to know | too early to know | no | too early to know | |||||||||
dxup | dxup | dxup | dxup | dxup | dxup | ||||||||||
Direct3D10 to Vulkan support | requires dxvk | requires dxvk | requires dxvk | requires dxvk | no | requires dxvk | |||||||||
dxvk | dxvk | dxvk | dxvk | dxvk | dxvk | ||||||||||
Direct3D11 to Vulkan support | yes | yes | yes | yes | no | yes | |||||||||
Direct3D11 to Vulkan features | progressing | progressing | progressing | progressing | no | progressing | |||||||||
Direct3D11 to Vulkan quality | progressing | progressing | progressing | progressing | no | progressing | |||||||||
Direct3D11 to Vulkan performance | progressing | progressing | progressing | progressing | no | progressing | |||||||||
vkd3d | vkd3d | vkd3d | vkd3d | dxvk | vkd3d | ||||||||||
Direct3D12 to Vulkan support | progressing | progressing | progressing | progressing | no | progressing | |||||||||
Direct3D12 to Vulkan features | not yet | not yet | not yet | not yet | no | not yet | |||||||||
Direct3D12 to Vulkan quality | too early to know | too early to know | too early to know | too early to know | no | too early to know | |||||||||
Direct3D12 to Vulkan performance | too early to know | too early to know | too early to know | too early to know | no | too early to know | |||||||||
Compute API compatibility | Intel | AMD | Nvidia | ||||||||||||
Standard computing³ | Intel free | Intel non-free | AMD free | AMD non-free | Nvidia free | Nvidia non-free | |||||||||
beignet | SDK (compute) | mesa/clover | rocm | amdgpu-pro | mesa | nvidia | |||||||||
OpenCL support | yes | yes | progressing | yes | yes | no | required | ||||||||
OpenCL features | yes | yes | progressing | yes | yes | no | required | ||||||||
OpenCL quality | progressing | preferable | progressing | yes | yes | no | required | ||||||||
OpenCL performance | progressing | preferable | progressing | yes | yes | no | required | ||||||||
Non-standard computing | Intel free | Intel non-free | AMD free | AMD non-free | Nvidia free | Nvidia non-free | |||||||||
beignet | SDK (compute) | mesa/clover | rocm | amdgpu-pro | mesa | nvidia | |||||||||
CUDA support | not wanted | not wanted | not wanted | not wanted | not wanted | not wanted | required | ||||||||
Metal Performance support | not wanted | not wanted | not wanted | not wanted | not wanted | not wanted | not wanted | ||||||||
Desktop environment⁴ compatibility | Intel | AMD | Nvidia | ||||||||||||
Desktop environment | Intel free | AMD free | AMD non-free | Nvidia free | Nvidia non-free | ||||||||||
mesa | mesa | amdgpu-pro | mesa | nvidia | |||||||||||
GNOME on X.org | yes | yes | yes | yes | yes | ||||||||||
GNOME on Wayland⁵ | yes | yes | yes | yes | require hack | ||||||||||
KDE on X.org | yes | yes | yes | yes | yes | ||||||||||
KDE on Wayland | yes | yes | yes | yes | no | ||||||||||
___________________ ¹ Kernel Mode Driver. ² User Mode Driver. ³ The AMDGPU proprietary OpenCL fallback stack can be used alongside the AMDGPU all-open graphical stack. ⁴ Other desktop environments are not shown if their status does not differ from GNOME or KDE compatibility (XFCE, LXDE, Unity, Mate, etc.). ⁵ Gnome on Wayland over NVidia proprietary stack relies on Nvidia proprietary driver specificness (EGLStreams), standard GBM not available. |