Installation of Mesa
Install Mesa by running the following commands:
mkdir build &&
cd build &&
meson setup --prefix=/usr \
--buildtype=release \
-D glvnd=enabled \
-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
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.2.2
Command Explanations
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 glvnd=enabled
: This
forces the build system to fail the configuration step if libglvnd-1.7.0 was not found. If you want to
accept the risks of using this package's core OpenGL libraries and
have not installed libglvnd, remove this parameter. Read About OpenGL
for more information. Switching is not recommended.
-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
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 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 gles1=disabled
: This flag disables
building a deprecated spec of OpenGL ES if -D glvnd=enabled
was not passed.
-D gles2=disabled
: If you didn't pass
-D glvnd=enabled
and don't
need OpenGL ES, use this option. Be sure to read the
section called “About GLES (OpenGL ES)”.
-D libgbm-external=true
: This links
against the system-installed libgbm
and disables building the GBM if it's installed. Whenever updating
this package, it is recommended to also update the GBM so this
option is not used.
BINDGEN_EXTRA_CLANG_ARGS="-m32"
: This
variable ensures that rust-bindgen-0.72.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 can be 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.