#### Beyond Linux® From Scratch (System V Edition) - Version 12.1

### Chapter 24. Graphical Environments

- Prev

  xcb-util-cursor-0.1.4

- Next

  xbitmaps-1.1.3

- Up
- Home

# Mesa-24.0.1

## Introduction to Mesa

Mesa is an OpenGL compatible 3D graphics library.

### Note

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

This package is known to build and work properly using an LFS 12.1 platform.

### Package Information

- Download (HTTP): https://mesa.freedesktop.org/archive/mesa-24.0.1.tar.xz

- Download MD5 sum: 9e7fa53b68fa6b60dba0bbfa8da7d0a9

- Download size: 20 MB

- Estimated disk space required: 618 MB (with docs, add 220 MB for tests)

- Estimated build time: 3.1 SBU (with docs; add 0.6 SBU for tests; both with parallelism=4)

### Additional Downloads

- Recommended patch: https://www.linuxfromscratch.org/patches/blfs/12.1/mesa-add_xdemos-2.patch (installs 2 demo programs for testing Mesa - not needed if you install the mesa-demos package)

### Mesa Dependencies

#### Required

Xorg Libraries, libdrm-2.4.120, and Mako-1.3.2

#### Recommended

Glslang-14.0.0 (required for Vulkan support), libva-2.20.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-17.0.6 (required for Gallium3D, nouveau, and radeonsi drivers and for swrast, the software rasterizer which is sometimes referred to as llvmpipe. See https://docs.mesa3d.org/systems.html for more information), wayland-protocols-1.33 (required for Plasma-5.27.10, GNOME, and recommended for GTK+-3.24.41), and Vulkan-Loader-1.3.277 (required for Vulkan support)

#### Optional

libgcrypt-1.10.3, libunwind-1.6.2, lm-sensors-3-6-0 , Nettle-3.9.1, Valgrind-3.22.0, mesa-demos (provides more than 300 extra demos to test Mesa; this includes the same programs added by the patch above), Bellagio OpenMAX Integration Layer (for mobile platforms), and libtizonia,

## Kernel Configuration

Enable the following options in the kernel configuration and recompile the kernel if necessary:

    Device Drivers --->
      Graphics support --->
        <*/M>   Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) --->
                                                                          ...  [DRM]
        # For r300 or r600:
        < /*/M> ATI Radeon                                              [DRM_RADEON]
        # For radeonsi:
        < /*/M> AMD GPU                                                 [DRM_AMDGPU]
        [*]       Enable amdgpu support for SI parts                 [DRM_AMDGPU_SI]
        [*]       Enable amdgpu support for CIK parts               [DRM_AMDGPU_CIK]
          Display Engine Configuration --->
          [*]   AMD DC - Enable new display engine                      [DRM_AMD_DC]
        # For nouveau:
        < /*/M> Nouveau (NVIDIA) cards                                 [DRM_NOUVEAU]
        # For i915, crocus, or iris:
        < /*/M> Intel 8xx/9xx/G3x/G4x/HD Graphics                         [DRM_I915]
        # For swrast:
        < /*/M> Virtual GEM provider                                      [DRM_VGEM]
        # For svga:
        < /*/M> DRM driver for VMware Virtual GPU                       [DRM_VMWGFX]

### Note

The corresponding Mesa Gallium3D driver name is provided as the comment for the configuration entries. If you don't know the name of the Mesa Gallium3D driver for your GPU, see Mesa Gallium3D Drivers below.

`CONFIG_DRM_RADEON`, `CONFIG_DRM_AMDGPU`, `CONFIG_DRM_NOUVEAU`, and `CONFIG_DRM_I915` may require firmware. See About Firmware for details.

Selecting `CONFIG_DRM_RADEON` or `CONFIG_DRM_AMDGPU` as “`y`” is not recommended. If it is, any required firmware must be built as a part of the kernel image or the initramfs for the driver to function correctly.

The sub-entries under `CONFIG_DRM_AMDGPU` are used to ensure the AMDGPU kernel driver supports all GPUs using the `radeonsi` driver. They are not needed if you won't need `CONFIG_DRM_AMDGPU` itself. They may be unneeded for some GPU models.

For `swrast`, `CONFIG_DRM_VGEM` is not strictly needed but recommended as an optimization.

## Installation of Mesa

If you have downloaded the xdemos patch (needed if testing the Xorg installation per BLFS instructions), apply it by running the following command:

    patch -Np1 -i ../mesa-add_xdemos-2.patch

Install Mesa by running the following commands:

    mkdir build &&
    cd    build &&

    meson setup                   \
          --prefix=$XORG_PREFIX   \
          --buildtype=release     \
          -Dplatforms=x11,wayland \
          -Dgallium-drivers=auto  \
          -Dvulkan-drivers=auto   \
          -Dvalgrind=disabled     \
          -Dlibunwind=disabled    \
          ..                      &&

    ninja

To test the results, issue: meson configure -Dbuild-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.0.1

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

`-Dgallium-drivers=auto`: This parameter controls which Gallium3D drivers should be built. `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; note that BLFS qemu-8.2.1 is not built with virglrender), `svga` (for VMWare virtual GPU), `swrast` (using CPU for 3D rasterisation; note that it's much slower than using a modern 3D-capable GPU, so it should be only used if the GPU is not supported by other drivers), `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 `-Dgallium-drivers=radeonsi,iris,swrast`.

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

`-Dvulkan-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', 'intel', 'intel_hasvk', and 'swrast'. If you do not want Vulkan support, change 'auto' to "".

`-Dvalgrind=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.

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

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

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

## Contents

Installed Programs: glxgears and glxinfo
Installed Libraries: libEGL.so, libGL.so, libGLESv1_CM.so, libGLESv2.so, libgbm.so, libglapi.so, and libxatracker.so
Installed DRI Drivers: crocus_dri.so, i915_dri.so, iris_dri.so, kms_swrast_dri.so, nouveau_dri.so, nouveau_drv_video.so, r300_dri.so, r600_dri.so, r600_drv_video.so, radeonsi_dri.so, radeonsi_drv_video.so, swrast_dri.so, virtio_gpu_dri.so, virtio_gpu_drv_video.so, and vmwgfx_dri.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_radeon.so
Installed Directories: $XORG_PREFIX/{include/{EGL,GLES,GLES2,GLES3,KHR}, $XORG_PREFIX/lib/{dri,vdpau}}, $XORG_PREFIX/share/drirc.d (contains workarounds for various applications, particularly browsers and games), $XORG_PREFIX/share/vulkan, and /usr/share/doc/mesa-24.0.1

### Short Descriptions

glxgears | is a GL demo useful for troubleshooting graphics problems
glxinfo | is a diagnostic program that displays information about the graphics hardware and installed GL libraries
`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

- Prev

  xcb-util-cursor-0.1.4

- Next

  xbitmaps-1.1.3

- Up
- Home