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