Mesa-24.2.7

Introduction to Mesa

Mesa offers a wide variety of graphic software, offering the OpenGL library, OpenGL drivers, Vulkan drivers, and so forth.

[Note]

Note

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

Mesa Dependencies

Required

Xorg Libraries, libdrm-2.4.123, mako-1.3.6, and PyYAML-6.0.2

Recommended

  • Cbindgen-0.27.0, rust-bindgen-0.69.5, and rustc-1.82.0 (required for NVK and Vulkan swrast)

  • Glslang-15.0.0 (required for Vulkan support)

  • libclc-19.1.0 (required for Intel Iris Gallium)

  • libglvnd-1.7.0 (required for Steam-1.0.0.82)

  • libva-2.22.0 (to provide VA-API support for some gallium drivers, note that there is a circular dependency. You must build libva first without EGL and GLX support, install this package, and rebuild libva)

  • libvdpau-1.5 (to build VDPAU drivers)

  • LLVM-19.1.0 (required for the r300, r600, and radeonsi drivers, and the LLVMpipe software rasterizer; Clang in LLVM is required for Vulkan Swrast)

  • Meson Toolchain Files (required for multilib 32-bit Nouveau and Swrast Vulkan; if the recommended dependencies are met, setting auto or all for vulkan-drivers= will build them by default, which is set for the 32-bit build down below)

  • ply-3.11 (required for Intel Vulkan)

  • Vulkan-Loader-1.3.301 (required for the Zink Gallium3D driver)

  • wayland-protocols-1.38 (required for many desktop environments and recommended for GTK)

Optional

libgcrypt, libunwind-1.8.1, lm_sensors , Nettle-3.10, valgrind, mesa-demos (provides more than 300 demos to test Mesa), Bellagio OpenMAX Integration Layer (for mobile platforms), and libtizonia

[Note]

Note

An Internet connection is needed for building the Nouveau Vulkan driver.

Installation of Mesa

[Note]

Note

If you are using NVIDIA-560.35.03 and wish to use Steam-1.0.0.82, this package is still a requirement as Steam depends on Mesa's GBM, or else the webhelper will repeatedly launch and crash before showing an error screen. You will need to have at least one gallium driver for this package to compile. Set the option -D gallium-drivers=nouveau to get this package over and done with as then you can move on. The 32-bit version of this package is not necessary if you are doing this.

Install Mesa by running the following commands:

mkdir build &&
cd    build &&

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

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-24.2.7

32-bit Installation of Mesa

First clean the build directory:

rm -rf *

Install lib32-Mesa by running the following commands:

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

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

--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 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; needed for OSMesa which provides OpenGL bitmap support)

  • 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 osmesa=true: This switch enables building the libOSMesa library and provides Gallium3D support in it. It requires the softpipe gallium driver.

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

-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-560.35.03 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 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 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 libunwind=disabled: This parameter disables the usage of libunwind.

-D glvnd=enabled: This parameter disables this package from building its own OpenGL library and uses the libraries provided by libglvnd-1.7.0. Omit parameter if you do not want to use Steam-1.0.0.82. Otherwise, keep the parameter and install libglvnd-1.7.0 before compiling this package.

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.

-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.

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.

Contents

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

Short Descriptions

libEGL.so

provides a native platform graphics interface as defined by the EGL-1.4 specification

libgbm.so

is the Mesa Graphics Buffer Manager library

libGLESv1_CM.so

is the Mesa OpenGL ES 1.1 library

libGLES2.so

is the Mesa OpenGL ES 2.0 library

libGL.so

is the main Mesa OpenGL library