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 17.3.x mesa
version.
This package is known to build and work properly using an LFS-8.2
platform.
Package Information
Additional Downloads
Mesa Dependencies
Required
Xorg
Libraries, libdrm-2.4.89, Mako-1.0.4, and Python-2.7.14
Recommended
libva-2.1.0 (to build drivers for supported
hardware, 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.1.1
(to build VDPAU drivers), LLVM-5.0.1 (required
for Gallium3D, r300, and radeonsi drivers and for the llvmpipe
software rasterizer. See http://www.mesa3d.org/systems.html
for more information), and wayland-protocols-1.13 (required for
Plasma-5.12.1, LXQt,
GNOME, and recommended for GTK+-3.22.28)
Optional
libgcrypt-1.8.2, Nettle-3.4,
mesa-demos
(provides more than 300 extra demos to test Mesa; this includes the same programs added by
the patch above), and Bellagio OpenMAX Integration
Layer (for mobile platforms)
Note
The instructions below assume that LLVM with the r600/amdgpu and host backends
are installed. You will need to modify the instructions if you
choose not to install it. For an explanation of Gallium3D see
https://en.wikipedia.org/wiki/Gallium3D.
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/mesa
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-17.3.4-add_xdemos-1.patch
Now, select the drivers you wish to install. The available drivers
are i915, nouveau, r300, r600, radeonsi, freedreno, svga, swrast,
vc4, and virgl. If the Gallium drivers are not specified, the
default is 'r300,r600,svga,swrast'. Modify the command below for
any desired drivers. The listed drivers below will cover most
modern video cards. For help in selecting drivers see http://www.mesa3d.org/systems.html.
GLL_DRV="i915,r600,nouveau,radeonsi,svga,swrast"
Install Mesa by running the
following commands:
./configure CFLAGS='-O2' CXXFLAGS='-O2' LDFLAGS=-lLLVM \
--prefix=$XORG_PREFIX \
--sysconfdir=/etc \
--enable-texture-float \
--enable-osmesa \
--enable-xa \
--enable-glx-tls \
--with-platforms="drm,x11,wayland" \
--with-gallium-drivers=$GLL_DRV &&
unset GLL_DRV &&
make
If you have applied the xdemos patch, build the demo programs by
running the following command:
make -C xdemos DEMOS_PREFIX=$XORG_PREFIX
To test the results, issue: make
check.
Now, as the root
user:
make install
If you have built the demo programs, install them by running the
following command as the root
user:
make -C xdemos DEMOS_PREFIX=$XORG_PREFIX install
If desired, install the optional documentation by running the
following commands as the root
user:
install -v -dm755 /usr/share/doc/mesa-17.3.4 &&
cp -rfv docs/* /usr/share/doc/mesa-17.3.4
Command Explanations
CFLAGS="-O2"
CXXFLAGS="-O2"
: By default, Autoconf sets CFLAGS and CXXFLAGS to "-g -O2".
That results in binaries and libraries being built with debugging
symbols which make them bigger. Override the default flags to omit
the -g compiler flag so the final libraries are smaller.
LDFLAGS=-lLLVM
: This
environment variable specifies the LLVM libraries that are not
automatically included for some of the package components.
--enable-texture-float
:
This switch enables floating-point textures and render buffers.
Please consult docs/patents.txt
to
see if there are any legal issues if you use this feature.
--enable-osmesa
: This
switch enables building the libOSMesa
library.
--enable-xa
: This switch
enables building the XA X Acceleration API (Required for VMware 3D
Driver).
--enable-gbm
: This switch
enables building the Mesa Graphics
Buffer Manager library.
--enable-glx-tls
: This
switch enables TLS (Thread Local Storage) support in GLX.
--with-platforms="..."
:
This parameter controls which platforms EGL will be built for.
Available platforms are drm, x11 and wayland.
--with-gallium-drivers="..."
: This
parameter controls which Gallium3D drivers should be built.