source: x/installing/mesa.xml@ 321978b6

12.0 12.1 gimp3 ken/TL2024 ken/tuningfonts lazarus plabs/newcss python3.11 rahul/power-profiles-daemon renodr/vulkan-addition trunk xry111/for-12.3 xry111/llvm18 xry111/spidermonkey128 xry111/xf86-video-removal
Last change on this file since 321978b6 was 117b4e9, checked in by Xi Ruoyao <xry111@…>, 14 months ago

mesa: Add kernel cfg section into the index

  • Property mode set to 100644
File size: 21.7 KB
Line 
1<?xml version="1.0" encoding="ISO-8859-1"?>
2<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
3 "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
4 <!ENTITY % general-entities SYSTEM "../../general.ent">
5 %general-entities;
6
7 <!ENTITY mesa-download-http "https://mesa.freedesktop.org/archive/mesa-&mesa-version;.tar.xz">
8 <!ENTITY mesa-download-ftp "ftp://ftp.freedesktop.org/pub/mesa/mesa-&mesa-version;.tar.xz">
9 <!ENTITY mesa-md5sum "0dce0342dbf08dc5afbaf51e729da1a1">
10 <!ENTITY mesa-size "18 MB">
11 <!ENTITY mesa-buildsize "458 MB (with docs, add 221 MB for tests)">
12 <!ENTITY mesa-time "2.2 SBU (With docs; add 2.3 SBU for tests; both with parallelism=4)">
13]>
14
15<sect1 id="mesa" xreflabel="Mesa-&mesa-version;">
16 <?dbhtml filename="mesa.html"?>
17
18
19 <title>Mesa-&mesa-version;</title>
20
21 <indexterm zone="mesa">
22 <primary sortas="a-Mesa">Mesa</primary>
23 </indexterm>
24
25 <sect2 role="package">
26 <title>Introduction to Mesa</title>
27
28 <para>
29 <application>Mesa</application> is an OpenGL compatible 3D graphics
30 library.
31 </para>
32
33 <note>
34 <para>
35 <application>Mesa</application> is updated relatively often. You may
36 want to use the latest available &mesa-major-minor;.x mesa version.
37 </para>
38 </note>
39
40 &lfs113_checked;
41
42 <bridgehead renderas="sect3">Package Information</bridgehead>
43 <itemizedlist spacing="compact">
44 <listitem>
45 <para>
46 Download (HTTP): <ulink url="&mesa-download-http;"/>
47 </para>
48 </listitem>
49 <listitem>
50 <para>
51 Download (FTP): <ulink url="&mesa-download-ftp;"/>
52 </para>
53 </listitem>
54 <listitem>
55 <para>
56 Download MD5 sum: &mesa-md5sum;
57 </para>
58 </listitem>
59 <listitem>
60 <para>
61 Download size: &mesa-size;
62 </para>
63 </listitem>
64 <listitem>
65 <para>
66 Estimated disk space required: &mesa-buildsize;
67 </para>
68 </listitem>
69 <listitem>
70 <para>
71 Estimated build time: &mesa-time;
72 </para>
73 </listitem>
74 </itemizedlist>
75
76 <bridgehead renderas="sect3">Additional Downloads</bridgehead>
77 <itemizedlist spacing="compact">
78 <!-- 9 Apr 23. Change to unversioned patch since it never changes. -->
79 <listitem>
80 <para>
81 Recommended patch:
82 <ulink url="&patch-root;/mesa-add_xdemos-2.patch"/>
83 (installs 2 demo programs for testing Mesa - not needed if you
84 install the <ulink url="https://archive.mesa3d.org/demos/">
85 mesa-demos</ulink> package)
86 </para>
87 </listitem>
88 </itemizedlist>
89
90 <bridgehead renderas="sect3">Mesa Dependencies</bridgehead>
91
92 <bridgehead renderas="sect4">Required</bridgehead>
93 <para role="required">
94 <xref linkend="xorg7-lib"/>,
95 <xref linkend="libdrm"/>, and
96 <xref linkend="Mako"/>
97 </para>
98
99 <bridgehead renderas="sect4">Recommended</bridgehead>
100 <para role="recommended">
101
102 <xref role="first" linkend="libva"/> (to provide VA-API support for some
103 gallium drivers, note that there is a circular dependency. You must
104 build <application>libva</application> first without EGL and GLX support,
105 install this package, and rebuild <application>libva</application>),
106
107 <xref linkend="libvdpau"/> (to build VDPAU drivers),
108
109 <xref linkend="llvm"/> (required for Gallium3D, nouveau, and radeonsi
110 drivers and for swrast, the software rasterizer which is sometimes referred
111 to as llvmpipe. See <ulink role="nodep"
112 url="https://docs.mesa3d.org/systems.html"/> for more information), and
113
114 <xref linkend="wayland-protocols"/> (required for
115 <xref role="nodep" linkend='plasma5-build'/>,
116 GNOME, and recommended for <xref role="nodep" linkend='gtk3'/>)
117 </para>
118
119 <bridgehead renderas="sect4">Optional</bridgehead>
120 <para role="optional">
121 <xref linkend="libgcrypt"/>,
122 <xref linkend="libunwind"/>,
123 <xref linkend="lm_sensors"/> <!-- for libsensors according to Meson -->,
124 <xref linkend="nettle"/>,
125 <xref linkend="valgrind"/>,
126 <ulink url="https://archive.mesa3d.org/demos/">mesa-demos</ulink>
127 (provides more than 300 extra demos to test
128 <application>Mesa</application>; this includes the same programs added by
129 the patch above),
130 <ulink url="https://omxil.sourceforge.net/">Bellagio OpenMAX Integration
131 Layer</ulink> (for mobile platforms),
132 <ulink url="https://github.com/KhronosGroup/glslang">glslang</ulink>
133 (for vulkan drivers),
134 <ulink url="https://github.com/tizonia/tizonia-openmax-il/wiki/Tizonia-OpenMAX-IL/">
135 libtizonia</ulink>, and
136 <ulink url="https://github.com/KhronosGroup/Vulkan-Loader">Vulkan-Loader</ulink>
137 </para>
138<!--
139 <note>
140 <para>
141 The instructions below assume that
142 <application>LLVM</application> with the r600/amdgpu and host backends
143 and run-time type information (RTTI - needed for nouveau) are installed.
144 You will need to modify the instructions if you
145 choose not to install all of these. For an explanation of Gallium3D see
146 <ulink url="https://en.wikipedia.org/wiki/Gallium3D"/>.
147 </para>
148 </note>
149-->
150 </sect2>
151
152 <sect2 role="kernel" id="mesa-kernel">
153 <title>Kernel Configuration</title>
154
155 <para>
156 Enable the following options in the kernel configuration and
157 recompile the kernel if necessary:
158 </para>
159
160<screen><literal>Device Drivers ---&gt;
161 Graphics support ---&gt;
162 &lt;*/M&gt; Direct Rendering Manager (XFree86 ... support) ---&gt; [CONFIG_DRM]
163 &lt; /M&gt; ATI Radeon [CONFIG_DRM_RADEON] # For r300 or r600
164 &lt; /M&gt; AMD GPU [CONFIG_DRM_AMDGPU] # For radeonsi
165 [*] Enable AMDGPU support for SI parts [CONFIG_DRM_AMDGPU_SI]
166 [*] Enable AMDGPU support for CIK parts [CONFIG_DRM_AMDGPU_CIK]
167 Display Engine Configuration
168 [*] AMD DC - Enable new display engine [CONFIG_DRM_AMD_DC]
169 &lt;*/M&gt; Nouveau (NVIDIA) cards [CONFIG_DRM_NOUVEAU] # For nouveau
170 &lt;*/M&gt; Intel 8xx/9xx/G3x/G4x/HD Graphics [CONFIG_DRM_I915] # For i915, crocus, or iris
171 &lt; /*/M&gt; DRM driver for VMware Virtual GPU [CONFIG_DRM_VMWGFX] # For svga
172 &lt; /*/M&gt; Virtual GEM provider [CONFIG_DRM_VGEM] # For swrast</literal></screen>
173
174 <note>
175 <para>
176 The corresponding Mesa Gallium3D driver name is provided as the
177 comment for the configuration entries. If you don't know the name
178 of the Mesa Gallium3D driver for your GPU, see <xref
179 linkend="mesa-gallium-drivers"/> below.
180 </para>
181
182 <para>
183 <option>CONFIG_DRM_RADEON</option>,
184 <option>CONFIG_DRM_AMDGPU</option>,
185 <option>CONFIG_DRM_NOUVEAU</option>, and
186 <option>CONFIG_DRM_I915</option> may require firmware.
187 See <xref linkend='postlfs-firmware'/> for details.
188 </para>
189
190 <para>
191 Selecting <option>CONFIG_DRM_RADEON</option> or
192 <option>CONFIG_DRM_AMDGPU</option> as
193 <quote><literal>y</literal></quote> is not recommended. If it is, any
194 required firmware must be built as a part of the kernel image or the
195 initramfs for the driver to function correctly.
196 </para>
197
198 <para>
199 The sub-entries under <option>CONFIG_DRM_AMDGPU</option> are used
200 to ensure the AMDGPU kernel driver supports all GPUs using the
201 <literal>radeonsi</literal> driver. They are not needed if you
202 won't need <option>CONFIG_DRM_AMDGPU</option> itself. They
203 may be unneeded for some GPU models.
204 </para>
205
206 <para>
207 For <literal>swrast</literal>, <option>CONFIG_DRM_VGEM</option>
208 is not strictly needed but recommended as an optimization.
209 You will also need to select at least a working DRM or framebuffer
210 driver. For a system booted with EFI, the configuration
211 in <xref linkend="uefi-kernel"/> is sufficient. For a system booted
212 with BIOS, <quote>VESA VGA graphics support</quote>
213 <!-- TODO: it should be replaced with CONFIG_DRM_SIMPLEDRM as well,
214 but the LFS grub configuration does not initialize the FB so it
215 won't work with BIOS boot. -->
216 (<option>CONFIG_FB_VESA</option>, under
217 <quote>Frame buffer Devices => Support for frame buffer
218 devices</quote>) is sufficient. However a dedicated DRM or framebuffer
219 driver may provide additional functionalities.
220 </para>
221 </note>
222 <indexterm zone="mesa mesa-kernel">
223 <primary sortas="d-mesa">mesa</primary>
224 </indexterm>
225 </sect2>
226
227 <sect2 role="installation">
228 <title>Installation of Mesa</title>
229
230 <para>
231 If you have downloaded the xdemos patch (needed if testing the Xorg
232 installation per BLFS instructions), apply it by running the following
233 command:
234 </para>
235
236<!--<screen><userinput>patch -Np1 -i ../mesa-&mesa-version;-add_xdemos-1.patch</userinput></screen>-->
237<screen><userinput>patch -Np1 -i ../mesa-add_xdemos-2.patch</userinput></screen>
238
239 <!-- Note that freedreno, vc4, and virgl all need special support from
240 libdrm - renodr
241 For me, libdrm does not mention virgl, but mesa accepts it. AFAICS
242 freedreno is for qualcom hardware, libdrm will build for it on suitable
243 systems. VC4 is for the Broadcom VC4 used in the raspberry pi - ken -->
244<!--
245 <note>
246 <para>
247 The measurements above, and the Contents below, are for a full build.
248 Many people will not wish to install drivers they cannot use, so the
249 following paragraphs explain how to limit the drivers, and give an
250 example which can be be reduced or amended as necessary.
251 </para>
252 </note>
253
254-->
255<!--
256 <para>
257 The (non-gallium) DRI drivers available in X86 are auto, <emphasis>or
258 alternatively a choice from</emphasis> i915, i965, nouveau, r100, r200,
259 and swrast. Use 'auto' to build all available DRI drivers, or use an
260 empty string (DRI_DRIVERS="") if you wish to only build gallium drivers.
261 </para>
262
263 <para>
264 The platforms ("window systems") available for X86 linux are x11, wayland,
265 drm, and surfaceless. By not specifying anything, the meson
266 build-system will build for all these platforms if you have the
267 dependencies, identical to if you had specified '-Dplatforms=auto'.
268 </para>
269
270 <para>
271 Modify the commands below for your desired drivers. The drivers listed
272 below will cover most modern video cards and virtual machines. For help in
273 selecting drivers see <ulink url="https://docs.mesa3d.org/systems.html"/>.
274-->
275 <!-- these two don't seem to be mentioned in that mesa link -->
276<!--
277 For intel drivers, specify crocus for i965 gen 4 through to haswell, iris
278 for broadwell and later.
279 </para>
280
281 <note>
282 <para>
283 Although the nouveau drivers can be built for both gallium and dri, the
284 i915 driver can only be built for one or the other.
285 </para>
286 </note>
287
288<screen><userinput>GALLIUM_DRV="crocus,i915,iris,nouveau,r600,radeonsi,svga,swrast,virgl"
289DRI_DRIVERS="i965,nouveau"</userinput></screen>
290-->
291
292 <para>
293 Install <application>Mesa</application> by running the following
294 commands:
295 </para>
296
297<screen><userinput>mkdir build &amp;&amp;
298cd build &amp;&amp;
299
300meson setup \
301 --prefix=$XORG_PREFIX \
302 --buildtype=release \
303 -Dplatforms=x11,wayland \
304 -Dgallium-drivers=auto \
305 -Dvulkan-drivers="" \
306 -Dvalgrind=disabled \
307 -Dlibunwind=disabled \
308 .. &amp;&amp;
309
310ninja</userinput></screen>
311
312 <para>
313 To test the results, issue:
314 <command>meson configure -Dbuild-tests=true &amp;&amp; ninja test</command>.
315 </para>
316<!-- All 88 tests passed for me for 22.3.3 [pierre]
317 All 90 tests passed for me for 23.1.0 [bdubbs]
318-->
319
320 <para>
321 Now, as the <systemitem class="username">root</systemitem> user:
322 </para>
323
324<screen role="root"><userinput>ninja install</userinput></screen>
325
326 <para>
327 If desired, install the optional documentation by running
328 the following commands as the
329 <systemitem class="username">root</systemitem> user:
330 </para>
331
332<screen role="root"
333 remap="doc"><userinput>install -v -dm755 /usr/share/doc/mesa-&mesa-version; &amp;&amp;
334cp -rfv ../docs/* /usr/share/doc/mesa-&mesa-version;</userinput></screen>
335
336 </sect2>
337
338 <sect2 role="commands">
339 <title>Command Explanations</title>
340
341 <para>
342 <parameter>--buildtype=release</parameter>: This switch ensures a
343 fully-optimized build, and disables debug assertions which will
344 severely slow down the libraries in certain use-cases. Without this
345 switch, build sizes can span into the 2GB range.
346 </para>
347
348 <para>
349 <anchor id='mesa-gallium-drivers' xreflabel='Mesa Gallium3D Drivers'/>
350 <parameter>-Dgallium-drivers=auto</parameter>: This parameter
351 controls which Gallium3D drivers should be built.
352 <literal>auto</literal> selects all Gallium3D drivers available
353 for x86: <literal>r300</literal> (for ATI Radeon 9000 or Radeon X
354 series), <literal>r600</literal> (for AMD/ATI Radeon HD 2000-6000
355 series), <literal>radeonsi</literal> (for AMD Radeon HD 7000 or newer
356 AMD GPU models), <literal>nouveau</literal>
357 (for Supported NVIDIA GPUs, they are listed as all
358 <quote>3D features</quote> either <quote>DONE</quote> or
359 <quote>N/A</quote> in <ulink
360 url='https://nouveau.freedesktop.org/FeatureMatrix.html'>the Nouveau
361 status page</ulink>), <literal>virgl</literal> (for QEMU virtual GPU
362 with <application>virglrender</application> support; note that BLFS
363 <xref linkend='qemu'/> is not built with
364 <application>virglrender</application>), <literal>svga</literal>
365 (for VMWare virtual GPU), <literal>swrast</literal> (using CPU for 3D
366 rasterisation; note that it's much slower than using a modern
367 3D-capable GPU, so it should be only used if the GPU is not supported
368 by other drivers), <literal>iris</literal> (for Intel GPUs shipped
369 with Broadwell or newer CPUs), <literal>crocus</literal> (for Intel
370 GMA 3000, X3000 series, 4000 series, or X4000 series GPUs shipped with
371 chipsets, or Intel HD GPUs shipped with pre-Broadwell CPUs),
372 <literal>i915</literal> (for Intel GMA 900, 950, 3100, or 3150 GPUs
373 shipped with chipsets or Atom D/N 4xx/5xx CPUs). You may replace
374 <literal>auto</literal> with a comma-separated list to build only
375 a subset of these drivers if you precisely know which drivers you
376 need, for example
377 <option>-Dgallium-drivers=radeonsi,iris,swrast</option>.
378 </para>
379<!--
380 <para>
381 <parameter>-Dosmesa=true</parameter>: This switch enables building
382 the <filename class="libraryfile">libOSMesa</filename> library and
383 provides Gallium3D support in it. It requires the swrast gallium driver.
384 </para>
385-->
386
387 <para>
388 <parameter>-Dplatforms="..."</parameter>: This parameter
389 controls which windowing systems will be supported. Available
390 linux platforms are x11 and wayland.
391 </para>
392
393 <para>
394 <parameter>-Dvulkan-drivers=""</parameter>: This switch allows choosing
395 which Vulkan drivers are built. The default is auto, but this requires
396 the optional dependencies <application>glslang</application> and
397 <application>Vulkan-Loader</application>. Vulkan is a newer API
398 designed for utilizing the GPUs with a performance better than OpenGL,
399 but nothing in BLFS benefits from it for now. So we pass an empty
400 list in order to remove the need for these dependencies.
401 </para>
402
403 <para>
404 <parameter>-Dvalgrind=disabled</parameter>: This parameter disables
405 the usage of Valgrind during the build process. Remove this parameter
406 if you have Valgrind installed, and wish to check for memory leaks.
407 </para>
408
409 <para>
410 <parameter>-Dlibunwind=disabled</parameter>: This parameter disables
411 the usage of libunwind.
412 </para>
413
414 <para>
415 <command>meson configure -Dbuild-tests=true</command>: This command will
416 reconfigure the build to set <option>-Dbuild-tests=true</option>, but
417 keep the other options specified in the <command>meson setup</command>
418 command unchanged. It allows <command>ninja test</command> to build and
419 run unit tests.
420 </para>
421
422 <para>
423 <option>-Degl-native-platform="..."</option>: This parameter
424 controls which Embedded Graphics Library support will be built. Available
425 linux options are auto (default), x11, wayland, surfaceless, and drm.
426 </para>
427
428 </sect2>
429
430 <sect2 role="content">
431 <title>Contents</title>
432
433 <segmentedlist>
434 <segtitle>Installed Programs</segtitle>
435 <segtitle>Installed Libraries</segtitle><!-- in /usr/lib -->
436 <segtitle>Installed Drivers</segtitle><!-- in /usr/lib/<subdir> -->
437 <segtitle>Installed Directories</segtitle>
438
439 <seglistitem>
440 <seg>
441 glxgears and glxinfo
442 </seg>
443 <seg>
444 libEGL.so,
445 libGL.so,
446 libGLESv1_CM.so,
447 libGLESv2.so,
448 libgbm.so,
449 libglapi.so, and
450 libxatracker.so
451 </seg>
452 <seg>
453 <!-- d3dadapter9.so (optional)
454 I guess this is useless today, Wine applications use Vulkan
455 through libvkd3d, and new games with native Linux support
456 likely uses Vulkan directly. -->
457 <!-- Begin gallium DRI drivers (*_dri.so) and VA-API drivers
458 (*_drv_video.so): this is the full set -->
459 crocus_dri.so,
460 i915_dri.so,
461 iris_dri.so,
462 kms_swrast_dri.so,
463 nouveau_dri.so,
464 nouveau_drv_video.so,
465 r300_dri.so,
466 r600_dri.so,
467 r600_drv_video.so,
468 radeonsi_dri.so,
469 radeonsi_drv_video.so,
470 swrast_dri.so,
471 virtio_gpu_dri.so,
472 virtio_gpu_drv_video.so,
473 vmwgfx_dri.so,
474 <!-- End DRI Drivers -->
475 <!-- Begin VDPAU drivers -->
476 libvdpau_nouveau.so,
477 libvdpau_r300.so
478 libvdpau_r600.so, and
479 libvdpau_radeonsi.so
480 libvdpau_virtio_gpu.so
481 <!-- End VDPAU drivers -->
482 (Many of these drivers are hard-linked).
483 </seg>
484 <seg>
485 <!-- $XORG_PREFIX/include/GL is installed by xorg-protos -->
486 $XORG_PREFIX/{include/{EGL,GLES,GLES2,GLES3,KHR},
487 $XORG_PREFIX/lib/{dri,vdpau}},
488 $XORG_PREFIX/share/drirc.d (contains workarounds for various applications,
489 particularly browsers and games),
490 and /usr/share/doc/mesa-&mesa-version;
491 </seg>
492 </seglistitem>
493 </segmentedlist>
494
495 <variablelist>
496 <bridgehead renderas="sect3">Short Descriptions</bridgehead>
497 <?dbfo list-presentation="list"?>
498 <?dbhtml list-presentation="table"?>
499
500 <varlistentry id="glxgears">
501 <term><command>glxgears</command></term>
502 <listitem>
503 <para>
504 is a GL demo useful for troubleshooting graphics
505 problems
506 </para>
507 <indexterm zone="mesa glxgears">
508 <primary sortas="b-glxgears">glxgears</primary>
509 </indexterm>
510 </listitem>
511 </varlistentry>
512
513 <varlistentry id="glxinfo">
514 <term><command>glxinfo</command></term>
515 <listitem>
516 <para>
517 is a diagnostic program that displays information about the
518 graphics hardware and installed GL libraries
519 </para>
520 <indexterm zone="mesa glxinfo">
521 <primary sortas="b-glxinfo">glxinfo</primary>
522 </indexterm>
523 </listitem>
524 </varlistentry>
525
526 <varlistentry id="libEGL">
527 <term><filename class="libraryfile">libEGL.so</filename></term>
528 <listitem>
529 <para>
530 provides a native platform graphics interface as
531 defined by the EGL-1.4 specification
532 </para>
533 <indexterm zone="mesa libEGL">
534 <primary sortas="c-libGL">libEGL.so</primary>
535 </indexterm>
536 </listitem>
537 </varlistentry>
538
539 <varlistentry id="libgbm">
540 <term><filename class="libraryfile">libgbm.so</filename></term>
541 <listitem>
542 <para>
543 is the <application>Mesa</application> Graphics Buffer
544 Manager library
545 </para>
546 <indexterm zone="mesa libgbm">
547 <primary sortas="c-libgbm">libgbm.so</primary>
548 </indexterm>
549 </listitem>
550 </varlistentry>
551
552 <varlistentry id="libGLESv1_CM">
553 <term><filename class="libraryfile">libGLESv1_CM.so</filename></term>
554 <listitem>
555 <para>
556 is the <application>Mesa</application> OpenGL ES 1.1 library
557 </para>
558 <indexterm zone="mesa libGLESv1_CM">
559 <primary sortas="c-libGLESv1_CM">libGLESv1_CM.so</primary>
560 </indexterm>
561 </listitem>
562 </varlistentry>
563
564 <varlistentry id="libGLES2">
565 <term><filename class="libraryfile">libGLES2.so</filename></term>
566 <listitem>
567 <para>
568 is the <application>Mesa</application> OpenGL ES 2.0 library
569 </para>
570 <indexterm zone="mesa libGLES2">
571 <primary sortas="c-libGLES2">libGLES2.so</primary>
572 </indexterm>
573 </listitem>
574 </varlistentry>
575
576 <varlistentry id="libGL">
577 <term><filename class="libraryfile">libGL.so</filename></term>
578 <listitem>
579 <para>
580 is the main <application>Mesa</application> OpenGL library
581 </para>
582 <indexterm zone="mesa libGL">
583 <primary sortas="c-libGL">libGL.so</primary>
584 </indexterm>
585 </listitem>
586 </varlistentry>
587
588 </variablelist>
589
590 </sect2>
591
592</sect1>
Note: See TracBrowser for help on using the repository browser.