Mesa-23.1.8
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 23.1.x mesa version.
Note
Development versions of BLFS may not build or run
some packages properly if LFS or dependencies have been updated
since the most recent stable versions of the books.
Package Information
Download (HTTP): https://mesa.freedesktop.org/archive/mesa-23.1.8.tar.xz
Download MD5 sum: 6c89b2d1335993d708e1810eacfba9e4
Download size: 18 MB
Estimated disk space required: 465 MB (with docs, add 216 MB for tests)
Estimated build time: 2.6 SBU (with docs; add 0.5 SBU for tests; both with parallelism=4)
Additional Downloads
Mesa Dependencies
Required
Xorg Libraries,
libdrm-2.4.118, and
Mako-1.3.0
Recommended
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.1 (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), and
wayland-protocols-1.32 (required for
Plasma-5.27.7,
GNOME, and recommended for GTK+-3.24.38)
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),
glslang
(for vulkan drivers),
libtizonia, and
Vulkan-Loader
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
Remove two unneeded references to LLVM headers to avoid a build
failure with LLVM 17 or later:
sed '/Scalar.h/d;/Utils.h/d' \
-i src/gallium/auxiliary/gallivm/lp_bld_init.c
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="" \
-Dvalgrind=disabled \
-Dlibunwind=disabled \
.. &&
ninja
To test the results, issue:
meson configure -Dbuild-tests=true && ninja test.
One test relating to mesa:util is known to timeout
Now, as the root
user:
ninja install
If desired, install the optional documentation by running
the following commands as the
root
user:
install -v -dm755 /usr/share/doc/mesa-23.1.8 &&
cp -rfv ../docs/* /usr/share/doc/mesa-23.1.8
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.1.2 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=""
: This switch allows choosing
which Vulkan drivers are built. The default is auto, but this requires
the optional dependencies glslang and
Vulkan-Loader. Vulkan is a newer API
designed for utilizing the GPUs with a performance better than OpenGL,
but nothing in BLFS benefits from it for now. So we pass an empty
list in order to remove the need for these dependencies.
-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 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,
vmwgfx_dri.so,
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 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),
and /usr/share/doc/mesa-23.1.8
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
|