Skip to main content

Graphics Cards

Most graphical user interfaces these days are hardware accelerated, so the appropriate graphics driver will be needed for optimal performance and a smooth desktop experience. Additionally, these drivers provide 3D acceleration and hardware video decoding/encoding capabilities.

The Linux graphics stack consists of several components, but the main component is the mesa package.

Manufacturer OpenGL Vulkan Video acceleration
Intel mesa vulkan-intel intel-media-driver, libva-intel-driver
AMD mesa vulkan-radeon libva-mesa-driver
NVIDIA mesa, nvidia nvidia-utils libva-mesa-driver, nvidia-utils

Intel

For Intel integrated graphics and Intel Arc, install the following packages:

pacman -S mesa vulkan-intel intel-media-driver libva-intel-driver

AMDGPU

For AMD integrated and dedicated graphics, install the following packages:

pacman -S mesa libva-mesa-driver vulkan-radeon

NVIDIA

In the case of NVIDIA, there's the option to either use the open source Nouveau drivers, or the Linux kernel modules provided by NVIDIA themselves.

If you have a relatively recent NVIDIA card, it is generally recommended to go with the official NVIDIA drivers. For older cards (GeForce 8xx or 9xx series or older) you should choose the Nouveau driver.

Nouveau open source driver

The Nouveau driver is included with mesa:

pacman -S mesa libva-mesa-driver

Additionally, NVIDIA cards after the "Tesla" line of GPUs (GeForce 8xxx, 9xxx) will need additional firmware files installed. Without these firmware files, the GPU will be stuck at the lowest performance level, because dynamic reclocking and power management of the graphics processor will not be available.

yay -S nouveau-fw

Proprietary driver

When using any NVIDIA graphics card after the "Maxwell" line of GPUs (GeForce GTX 9xx), the proprietary NVIDIA kernel module will provide the best performance for intensive graphic and video processing workloads.

NVIDIA provides two options for their GPU drivers: a closed and open kernel module.

For anything more recent than RTX 2xxx cards, recommends the nvidia-open kernel module, as they plan to support that one more long-term.

pacman -S nvidia-open nvidia-utils

For earlier GPUs (GTX 9xx, GTX 10xx) the closed nvidia driver remains available.

pacman -S nvidia nvidia-utils

Early KMS

In order to enable early KMS (Kernel mode switching) with the prorprietary NVIDIA driver, you will need to take additional steps.

The kernel modules of the proprietary driver need to be included explicitly in the MODULES array of your /ets/mkinitcpio.conf file (or a drop-in config file, e.g. /etc/mkinitcpio.conf.d/modules.conf):

MODULES=(nvidia nvidia_modeset nvidia_uvm nvidia_drm)

Additionally, remove the kms hook from the HOOKS array. This is to prevent the unintentional loading of the nouveau kernel module, which will conflict with the proprietary driver.

Enable Kernel Mode Setting

Since nvidia-ultis version 560.35.03-5, Kernel Mode Setting (KMS) is enabled by default with NVIDIA proprietary drivers. However, when using an older version or a very old card with proprietary drivers, KMS must be explicitly enabled through a kernel command line argument at boot time, otherwise Wayland compositors may not function properly.

nvidia_drm.modeset=1

NOTE: Refer to Boot Loader for how to add the parameter to your boot configuration.

To verify that kernel mode setting is enabled (in the installed system) query the sysfs info with the following command:

cat /sys/module/nvidia_drm/parameters/modeset

Y means Kernel Mode Setting was enabled on boot.
N means Kernel Mode Setting was not enabled on boot.