Graphic drivers on Linux

From Linux Gaming
Jump to navigation Jump to search


This page needs work, for the following reason(s): This page is heavily outdated.


Graphic Drivers

To play games on Linux, you'll need to use the correct graphics card drivers. Ordinarily, Linux should "just work" and detect the correct drivers for your hardware. However, there are notable exceptions, and graphics cards are one of them. Below is an overview of each major hardware vendors stance on Linux support, as well as where to find the appropriate drivers. For example, if you want to play the very latest, graphically intensive games Nvidia users will probably need the proprietary drivers while AMD users are recommended to use the open source drivers. Generally speaking, most distributions should correctly detect and use the appropriate open source driver for your hardware by default.

Intel

On-board Intel graphics have already been officially supported by Intel and Linux for a number of years, with the i965 driver (part of the Mesa project) covering most Intel hardware for the past 10 years. Your distribution will almost certainly carry and use these drivers by default. Some distributions may offer a means to install more recent versions of the driver, which may have improved performance or better OpenGL support. Check your distribution specific documentation. These drivers currently support OpenGL 3.3 for all capable hardware with some hardware supporting up to OpenGL 4.6.

Vulkan is also officially supported with the driver called ANV that is part of the Mesa project, Intel (U)HD Graphics shipped with Broadwell CPUs and later are targeted, with experimental support for Ivy Bridge integrated graphics.

The notable exception is Intel hardware based on the PowerVR chips produced by Imagination Technologies, particularly the GMA 500, GMA 600, GMA 3600 and GMA 3650, which serve as the integrated graphics for some Intel Atom Z5XX and Z6XX processors. There are no drivers for 3D accelaration and drivers for 2D acceleration have been unmaintained for several years. Avoid these whenever possible. More information on this topic can be found at these links:

AMD

AMD on Linux officially supports both open source drivers and closed source drivers. The open source drivers as a whole currently support OpenGL 4.6 and Vulkan (with some complications, see below) on almost all capable hardware, with older hardware still supporting up to OpenGL 3.3 core profile. Most distributions should support and use the open source drivers by default, without any further configuration needed.

What follows is a more thorough description of the various drivers for AMD hardware.

AMD HD 7xxx and Newer

AMD cards produced since 2012 are supported by the RadeonSI driver that is part of the Mesa project. This driver provides support for OpenGL 4.6 for all hardware capable of it. This driver is likely to be installed and used by default for all current distributions. No further configuration is usually needed unless your distribution does not provide a means to install newer versions of Mesa for bugfixes or new features.

Vulkan support is also available. Most distributions will install and use the radv driver (also part of Mesa) by default, which is capable of Vulkan 1.2 support on most hardware.

An important caveat is that for older hardware, Vulkan support depends on using the AMDGPU kernel driver. Older hardware, known collectively by the codename "Southern Islands", uses the kernel driver called Radeon by default. To switch to AMDGPU on these cards and get Vulkan support, you need to add "amdgpu.si_support=1" and "radeon.si_support=0" to your boot options. Check your distribution specific documentation for how to do this. The Arch Linux wiki contains a more in-depth explanation on how to do this.

There is an alternative Vulkan driver provided by AMD, called AMDVLK. There is generally not much advantage for using this driver for most users. This driver can also be used with the AMDGPU-PRO kernel driver, but this is not required outside of professional use cases (such as applications requiring OpenCL) and does not provide significant advantages for most users.

AMDVLK can be downloaded here:

https://github.com/GPUOpen-Drivers/AMDVLK/releases

And AMDGPU-PRO packaged with AMDVLK can be downloaded here:

https://www.amd.com/en/support/kb/release-notes/rn-rad-lin-19-50-unified

AMD HD6xxx and Older

Older cards are supported by the r600g driver from the Mesa project. The r600g driver supports hardware codenamed r600 up to "Northern Islands", providing OpenGL 4.1 core profile support for hardware that is capable of it. Hardware that is supported by r600g should work great for general desktop usage and provide at least acceptable performance for gaming. Most Linux distributions should use these open source drivers by default with no further configuration required.

For information on what hardware features are supported by the latest open source drivers, as well as which specific driver supports your card. see the official feature matrix at the following links:

NVIDIA

NVIDIA has 2 officially supported drivers, both proprietary, one of which is for "legacy" hardware and one for more recent hardware. There is a project for open source drivers named "nouveau", but these are mostly unofficial - the vast majority of development is carried out via reverse engineering. The only cases where NVIDIA has contributed to Nouveau has been for ARM related graphics support (e.g. for GPU's aimed at phones, tablets etc.) and some infrastructural work e.g. to provide support for GPU switching/offloading between integrated graphics and dedicated graphics chips often seen in laptops. The proprietary drivers have better 3D performance, video acceleration support, better power management and better OpenGL support, but doesn't integrate with the rest of the graphics stack as well.

As of the release of "Maxwell" hardware (GTX 900 series) in April 2015, NVIDIA now require signed firmware to use their hardware[1]. In practice, this has meant long delays of up to 2 years for new hardware support[2] in Nouveau as NVIDIA has to provide the firmware to the Nouveau project themselves for the open source drivers to be able to work. With older hardware, Nouveau could automatically generate and extract the firmware.

For more information on feature and hardware support in the nouveau drivers, see the official feature matrix (might be slightly out of date). Make sure to cross reference the code names listed with this index of code names and marketing names.

If you wish to contribute to the nouveau project, you can find information on how to do so here. If you want to help but do not have any development expertise, you can donate hardware to the project to help with their reverse engineering efforts.

For the proprietary drivers, you can get the latest version of NVIDIA's driver here.

Once again, it's recommended to use the version that is provided by your distro (if it provides them).

Via

Via onboard graphics hardware has no official support. There have been various announcements of serious efforts to officially support Linux with an open source driver, but none of these have ever come to fruition. Stay clear of motherboards with Via onboard graphics for almost anything Linux related. Only if you don't care about even displaying a desktop, and even then you may run into issues.

There is a reverse engineered driver, OpenChrome, but these lack almost any 3D support for Via chips from the last 6 years or so, and even 2D support and video acceleration is limited. For more information, see this page. If you know of anyone who would be interested in contributing to OpenChrome, tell them to visit this link to get in contact with the OpenChrome devs: http://www.freedesktop.org/wiki/Openchrome/Contact/

S3TC Texture Support

S3TC is a texture compression algorithm commonly used in games. However, until October 2017 S3TC was patented and for that reason support was often not included by default in a number of distributions nor within Mesa (which provides the OpenGL implementation for most open source drivers). A common visual artefact of missing S3TC support is black textures, assuming the game starts at all. If you see this problem, it's a good idea to check if you're using a Mesa version earlier than 17.3 and if so, check that you have the S3TC support library installed - it's called libtxc-dxtn or libtxc-dxtn-s2tc in most distributions. You should be able to install it with your package manager.

All the required code for S3TC texture compression is included in Mesa 17.3, thus making the library mentioned above no longer needed. Any distribution released in 2018 and later should include a version of Mesa with built-in support for S3TC.

Further Reading

If you want to know more about the drivers and Linux graphics stack in general, see the following links for more information:

  • Mesa Project - Official site of the Mesa project, the overarching project for open source OpenGL drivers (including Intel, AMD and unofficially NVIDIA) on Linux.
  • X.org Wiki - Wiki for the X.org project - X server, drivers and various parts of the graphics stack
  • Freedesktop.org Wiki - Also has various information on graphics and drivers in Linux, as well as various desktop standards.
  • What is: X.Org? X11? Gallium3D? Mesa? Etc... - A simple overview of how the various pieces that put pretty images on your screen fit together. Note that this is a few years old and is a little out of date by now.
  • Wayland Wiki - Information on Wayland, the successor to the X server. What it does, how it does it and why it's better than X.