Mesa-25.1.1

Introduction to Mesa

Mesa offers a wide variety of graphic software, like the OpenGL libraries and drivers, Vulkan drivers, and other drivers.

[Important]

Important

Read About OpenGL to decide if you want to install OpenGL implementations from this provider. If you want to install libglvnd-1.7.0, install that FIRST before installing this package so that this package's OpenGL implementations do not get built.

[Note]

Note

Mesa is updated relatively often. You may want to use the latest available 25.1.x mesa version.

[Note]

Note

An Internet connection is needed for building the Nouveau Vulkan driver. The system certificate store may need to be set up with make-ca-1.16 before building this package.

[Note]

Note

This may take a while to build. Feel free to do something else while this is building.

Mesa Dependencies

Required

libdrm-2.4.124, mako-1.3.10, PyYAML-6.0.2, and Xorg Libraries

Recommended

Optional

GBM from Mesa-25.1.1, libgcrypt, libglvnd-1.7.0, libunwind-1.8.1, lm-sensors, Nettle-3.10.1, valgrind, Mesa-Demos (provides more than 300 demos to test Mesa), Bellagio OpenMAX Integration Layer (for mobile platforms), and libtizonia

Installation of Mesa

Install Mesa by running the following commands:

mkdir build &&
cd    build &&

meson setup                    \
      --prefix=/usr            \
      --buildtype=release      \
      -D platforms=x11,wayland \
      -D gallium-drivers=auto  \
      -D vulkan-drivers=auto   \
      -D gles1=disabled        \
      -D video-codecs=all      \
      -D valgrind=disabled     \
      -D libunwind=disabled    \
      .. &&

ninja

To test the results, issue: meson configure -D build-tests=true && ninja test.

Now, as the root user:

ninja install

If desired, install the optional documentation by running the following commands as the root user:

cp -rv ../docs -T /usr/share/doc/mesa-25.1.1

lib32 Installation of Mesa

Install lib32-Mesa by running the following commands:

rm -rf * &&
meson setup                    \
      --cross-file=lib32       \
      --prefix=/usr            \
      --libdir=/usr/lib32      \
      --buildtype=release      \
      -D platforms=x11,wayland \
      -D gallium-drivers=auto  \
      -D vulkan-drivers=auto   \
      -D gles1=disabled        \
      -D video-codecs=all      \
      -D valgrind=disabled     \
      -D libunwind=disabled    \
      .. &&
      sed -i 's/\/usr\/lib\//\/usr\/lib32\//g' ./build.ninja &&

BINDGEN_EXTRA_CLANG_ARGS="-m32" ninja

Now, as the root user:

DESTDIR=$PWD/DESTDIR ninja install                     &&
cp -vr DESTDIR/usr/lib32/* /usr/lib32                  &&
if [ -d DESTDIR/usr/share/vulkan ]; then
    cp -vR DESTDIR/usr/share/vulkan /usr/share
fi                                                     &&
rm -rf DESTDIR                                         &&
ldconfig

Command Explanations

[Note]

Note

Inspect meson_options.txt or meson.options for a full list of options.

--buildtype=release: This switch ensures a fully-optimized build, and disables debug assertions which will severely slow down the libraries in certain use-cases. Without this switch, build sizes can span into the 2GB range.

-D platforms=...: This parameter controls which windowing systems will be supported. Available linux platforms are x11 and wayland.

-D gallium-drivers=auto: This parameter controls which Gallium3D drivers should be built. Gallium drivers are essentially OpenGL drivers. If you wish to build specific drivers, valid options include:

  • auto selects all Gallium3D drivers available for x86

  • r300 (for ATI Radeon 9000 or Radeon X series)

  • r600 (for AMD/ATI Radeon HD 2000-6000 series)

  • radeonsi (for AMD Radeon HD 7000 or newer AMD GPU models)

  • nouveau (for Supported NVIDIA GPUs, they are listed as all 3D features either DONE or N/A in the Nouveau status page)

  • virgl (for QEMU virtual GPU with virglrender support)

  • svga (for VMWare virtual GPU)

  • softpipe (using CPU for 3D rasterization)

  • llvmpipe (softpipe but uses LLVM to increase performance)

  • zink (a driver converting OpenGL calls to Vulkan; if the Vulkan driver is performant, this driver can also be performant; can be used as a replacement for Gallium3D drivers like nouveau as detailed in What Now?)

  • iris (for Intel GPUs shipped with Broadwell or newer CPUs)

  • crocus (for Intel GMA 3000, X3000 series, 4000 series, or X4000 series GPUs shipped with chipsets, or Intel HD GPUs shipped with pre-Broadwell CPUs)

  • i915 (for Intel GMA 900, 950, 3100, or 3150 GPUs shipped with chipsets or Atom D/N 4xx/5xx CPUs)

You may replace auto with a comma-separated list to build only a subset of these drivers if you precisely know which drivers you need, for example: -D gallium-drivers=radeonsi,iris,swrast.

-D vulkan-drivers=auto: This switch enables support for the Vulkan graphics API. It automatically builds all graphics drivers that are available for Vulkan. If you wish to build specific drivers, valid options include:

  • amd (for AMD Radeon HD 7730 or newer AMD GPUs)

  • intel (for Intel GPUs shipped with Skylake or newer CPUs, or as a dedicated PCIe card)

  • intel_hasvk (for Intel GPUs shipped with Ivy Bridge, Haswell, or Broadwell CPUs)

  • nouveau (for GTX 16XX, RTX 20XX, or newer NVIDIA GPUs; this driver is maturing and is already quite performant, although less so than the NVIDIA driver; however, it is a good replacement, especially when used with Gallium3D zink)

  • swrast (using CPU for 3D rasterization. Note that it's much slower than using a modern 3D-capable GPU)

You may replace auto with a comma-separated list to build only a subset of these drivers if you precisely know which drivers you need, for example: -D vulkan-drivers=amd,nouveau,swrast.

-D gles1=disabled: This flag disables building a deprecated spec of OpenGL ES.

-D video-codecs=all: This parameter enables building all the video codecs as they are disabled by default to avoid legal issues. It would be prudent to not distribute your build if you set this option. The matter is still unclear, however. See this Debian bug report for more info.

-D valgrind=disabled: This parameter disables the usage of Valgrind during the build process. Remove this parameter if you have Valgrind installed, and wish to check for memory leaks.

-D libunwind=disabled: This parameter disables the usage of libunwind.

-D egl-native-platform="...": This parameter controls which Embedded Graphics Library support will be built. Available linux options are auto (default), x11, wayland, surfaceless, and drm.

-D gles2=disabled: If you don't need OpenGL ES, use this option. Be sure to read the section called “About GLES (OpenGL ES)”.

-D legacy-x11="..." This parameter controls which legacy X11 features get built-in support. Available linux options are none (default) and dri2. These features are rarely needed anymore.

-D libgbm-external=true: This links against the system-installed libgbm and disables building the GBM if GBM from Mesa-25.1.1 is installed. Whenever updating this package, it is recommended to also update the GBM.

BINDGEN_EXTRA_CLANG_ARGS="-m32": This variable ensures that rust-bindgen-0.71.1 generates bindings that don't go out of bounds when compiling lib32 Nouveau Vulkan.

sed -i 's/\/usr\/lib\//\/usr\/lib32\//g' ./build.ninja: This package is stubborn and likes to link against LLVM libraries in /lib, even on a multilib installation, so this command tells this package to link against libraries in the proper directory.

meson configure -D build-tests=true: This command will reconfigure the build to set -D build-tests=true, but keep the other options specified in the meson setup command unchanged. It allows ninja test to build and run unit tests.

Contents

Installed Programs: None
Installed Libraries: libEGL (or libEGL_mesa if libglvnd-1.7.0 is installed), libGL (if libglvnd-1.7.0 is not installed), libGLESv2 (if libglvnd-1.7.0 is not installed), libgallium-25.1.1, libgbm, libglapi (if libglvnd-1.7.0 is not installed), libGLX_mesa (if libglvnd-1.7.0 is installed), and libxatracker
Installed DRI Driver Stubs: libdril_dri and symlinks to it: crocus_dri, i915_dri, iris_dri, kms_swrast_dri, nouveau_dri, r300_dri, r600_dri, r600_drv_video, radeonsi_dri, swrast_dri, virtio_gpu_dri, vmwgfx_dri, and zink_dri
Installed VA-API Drivers: nouveau_drv_video, radeonsi_drv_video, and virtio_gpu_drv_video
Installed GBM Drivers: dri_gbm
Installed VDPAU Drivers: libvdpau_nouveau, libvdpau_r300, libvdpau_r600, libvdpau_radeonsi, and libvdpau_virtio_gpu (many of these drivers are hard-linked)
Installed Vulkan Drivers: libvulkan_intel_hasvk, libvulkan_intel, libvulkan_lvp, libvulkan_nouveau, and libvulkan_radeon
Installed Directories: /usr/{include/{EGL,GLES2,GLES3,KHR}, /usr/lib/{dri,gbm,vdpau}}, /usr/share/drirc.d (contains workarounds for various applications, particularly browsers and games), /usr/share/vulkan, and /usr/share/doc/mesa-25.1.1

Short Descriptions

dri_gbm

implements Graphics Buffer Management functions needed by libgbm on top of libdrm

libdril_dri

is a stub allowing Xorg server to co-operate with the Gallium3D drivers

libEGL

provides an interface between graphics APIs and the window system; provided if libglvnd-1.7.0 is not installed

libgallium-25.1.1

contains all the Gallium3D drivers

libgbm

is the Mesa Graphics Buffer Manager library

libglapi

is Mesa's implementation of the OpenGL API; provided if libglvnd-1.7.0 is not installed

libGLES2

contains OpenGL ES 2.x and 3.x calls; provided if libglvnd-1.7.0 is not installed

libGL

is the main OpenGL library; provided if libglvnd-1.7.0 is not installed; libOpenGL is not provided by this package

libxatracker

is the XA state tracker for the VMWare vmwgfx driver