Introduction to Mesa
Mesa is an OpenGL compatible 3D
graphics library.
This package is known to build and work properly using an LFS-8.1
platform.
Package Information
Additional Downloads
Mesa Dependencies
Required
Xorg
Libraries, libdrm-2.4.82, Mako-1.0.4, and Python-2.7.13
Recommended
elfutils-0.170 (required for the radeonsi
driver), libvdpau-1.1.1 (to build VDPAU drivers),
LLVM-4.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)
Optional
libgcrypt-1.8.0, Nettle-3.3,
Wayland-1.14.0 (required for Plasma-5.10.5 and LXQt), 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 elfutils and LLVM with the r600/amdgpu and host backends
are installed. You will need to modify the instructions if you
choose not to install them. 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.1.6-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:
Note
Add wayland to the --with-egl-platforms
switch below
if you plan on building Plasma-5.10.5 or LXQt.
sed -i "/pthread_stubs_possible=/s/yes/no/" configure.ac &&
./autogen.sh CFLAGS='-O2' CXXFLAGS='-O2' \
--prefix=$XORG_PREFIX \
--sysconfdir=/etc \
--enable-texture-float \
--enable-osmesa \
--enable-xa \
--enable-glx-tls \
--with-platforms="drm,x11" \
--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.1.6 &&
cp -rfv docs/* /usr/share/doc/mesa-17.1.6
Command Explanations
sed -i ...
configure.ac: This sed removes a dependency on the
libpthread-stubs package which is
useless on Linux.
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.
--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.
--enable-sysfs
: Use this switch to
enable simple PCI identification method, required for building DRI
on systems without udev.