source: x/installing/mesa.xml@ 293e4018

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
Last change on this file since 293e4018 was 797182d, checked in by Xi Ruoyao <xry111@…>, 14 months ago

xorg-server: Add kernel configuration section

  • Property mode set to 100644
File size: 21.0 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 xreflabel='Mesa Kernel Configuration'>
154 <title>Kernel Configuration</title>
155
156 <para>
157 Enable the following options in the kernel configuration and
158 recompile the kernel if necessary:
159 </para>
160
161<screen><literal>Device Drivers ---&gt;
162 Graphics support ---&gt;
163 &lt;*/M&gt; Direct Rendering Manager (XFree86 ... support) ---&gt; [CONFIG_DRM]
164 &lt; /M&gt; ATI Radeon [CONFIG_DRM_RADEON] # For r300 or r600
165 &lt; /M&gt; AMD GPU [CONFIG_DRM_AMDGPU] # For radeonsi
166 [*] Enable AMDGPU support for SI parts [CONFIG_DRM_AMDGPU_SI]
167 [*] Enable AMDGPU support for CIK parts [CONFIG_DRM_AMDGPU_CIK]
168 Display Engine Configuration
169 [*] AMD DC - Enable new display engine [CONFIG_DRM_AMD_DC]
170 &lt; /*/M&gt; Nouveau (NVIDIA) cards [CONFIG_DRM_NOUVEAU] # For nouveau
171 &lt; /*/M&gt; Intel 8xx/9xx/G3x/G4x/HD Graphics [CONFIG_DRM_I915] # For i915, crocus, or iris
172 &lt; /*/M&gt; DRM driver for VMware Virtual GPU [CONFIG_DRM_VMWGFX] # For svga
173 &lt; /*/M&gt; Virtual GEM provider [CONFIG_DRM_VGEM] # For swrast</literal></screen>
174
175 <note>
176 <para>
177 The corresponding Mesa Gallium3D driver name is provided as the
178 comment for the configuration entries. If you don't know the name
179 of the Mesa Gallium3D driver for your GPU, see <xref
180 linkend="mesa-gallium-drivers"/> below.
181 </para>
182
183 <para>
184 <option>CONFIG_DRM_RADEON</option>,
185 <option>CONFIG_DRM_AMDGPU</option>,
186 <option>CONFIG_DRM_NOUVEAU</option>, and
187 <option>CONFIG_DRM_I915</option> may require firmware.
188 See <xref linkend='postlfs-firmware'/> for details.
189 </para>
190
191 <para>
192 Selecting <option>CONFIG_DRM_RADEON</option> or
193 <option>CONFIG_DRM_AMDGPU</option> as
194 <quote><literal>y</literal></quote> is not recommended. If it is, any
195 required firmware must be built as a part of the kernel image or the
196 initramfs for the driver to function correctly.
197 </para>
198
199 <para>
200 The sub-entries under <option>CONFIG_DRM_AMDGPU</option> are used
201 to ensure the AMDGPU kernel driver supports all GPUs using the
202 <literal>radeonsi</literal> driver. They are not needed if you
203 won't need <option>CONFIG_DRM_AMDGPU</option> itself. They
204 may be unneeded for some GPU models.
205 </para>
206
207 <para>
208 For <literal>swrast</literal>, <option>CONFIG_DRM_VGEM</option>
209 is not strictly needed but recommended as an optimization.
210 </para>
211 </note>
212 <indexterm zone="mesa mesa-kernel">
213 <primary sortas="d-mesa">mesa</primary>
214 </indexterm>
215 </sect2>
216
217 <sect2 role="installation">
218 <title>Installation of Mesa</title>
219
220 <para>
221 If you have downloaded the xdemos patch (needed if testing the Xorg
222 installation per BLFS instructions), apply it by running the following
223 command:
224 </para>
225
226<!--<screen><userinput>patch -Np1 -i ../mesa-&mesa-version;-add_xdemos-1.patch</userinput></screen>-->
227<screen><userinput>patch -Np1 -i ../mesa-add_xdemos-2.patch</userinput></screen>
228
229 <!-- Note that freedreno, vc4, and virgl all need special support from
230 libdrm - renodr
231 For me, libdrm does not mention virgl, but mesa accepts it. AFAICS
232 freedreno is for qualcom hardware, libdrm will build for it on suitable
233 systems. VC4 is for the Broadcom VC4 used in the raspberry pi - ken -->
234<!--
235 <note>
236 <para>
237 The measurements above, and the Contents below, are for a full build.
238 Many people will not wish to install drivers they cannot use, so the
239 following paragraphs explain how to limit the drivers, and give an
240 example which can be be reduced or amended as necessary.
241 </para>
242 </note>
243
244-->
245<!--
246 <para>
247 The (non-gallium) DRI drivers available in X86 are auto, <emphasis>or
248 alternatively a choice from</emphasis> i915, i965, nouveau, r100, r200,
249 and swrast. Use 'auto' to build all available DRI drivers, or use an
250 empty string (DRI_DRIVERS="") if you wish to only build gallium drivers.
251 </para>
252
253 <para>
254 The platforms ("window systems") available for X86 linux are x11, wayland,
255 drm, and surfaceless. By not specifying anything, the meson
256 build-system will build for all these platforms if you have the
257 dependencies, identical to if you had specified '-Dplatforms=auto'.
258 </para>
259
260 <para>
261 Modify the commands below for your desired drivers. The drivers listed
262 below will cover most modern video cards and virtual machines. For help in
263 selecting drivers see <ulink url="https://docs.mesa3d.org/systems.html"/>.
264-->
265 <!-- these two don't seem to be mentioned in that mesa link -->
266<!--
267 For intel drivers, specify crocus for i965 gen 4 through to haswell, iris
268 for broadwell and later.
269 </para>
270
271 <note>
272 <para>
273 Although the nouveau drivers can be built for both gallium and dri, the
274 i915 driver can only be built for one or the other.
275 </para>
276 </note>
277
278<screen><userinput>GALLIUM_DRV="crocus,i915,iris,nouveau,r600,radeonsi,svga,swrast,virgl"
279DRI_DRIVERS="i965,nouveau"</userinput></screen>
280-->
281
282 <para>
283 Install <application>Mesa</application> by running the following
284 commands:
285 </para>
286
287<screen><userinput>mkdir build &amp;&amp;
288cd build &amp;&amp;
289
290meson setup \
291 --prefix=$XORG_PREFIX \
292 --buildtype=release \
293 -Dplatforms=x11,wayland \
294 -Dgallium-drivers=auto \
295 -Dvulkan-drivers="" \
296 -Dvalgrind=disabled \
297 -Dlibunwind=disabled \
298 .. &amp;&amp;
299
300ninja</userinput></screen>
301
302 <para>
303 To test the results, issue:
304 <command>meson configure -Dbuild-tests=true &amp;&amp; ninja test</command>.
305 </para>
306<!-- All 88 tests passed for me for 22.3.3 [pierre]
307 All 90 tests passed for me for 23.1.0 [bdubbs]
308-->
309
310 <para>
311 Now, as the <systemitem class="username">root</systemitem> user:
312 </para>
313
314<screen role="root"><userinput>ninja install</userinput></screen>
315
316 <para>
317 If desired, install the optional documentation by running
318 the following commands as the
319 <systemitem class="username">root</systemitem> user:
320 </para>
321
322<screen role="root"
323 remap="doc"><userinput>install -v -dm755 /usr/share/doc/mesa-&mesa-version; &amp;&amp;
324cp -rfv ../docs/* /usr/share/doc/mesa-&mesa-version;</userinput></screen>
325
326 </sect2>
327
328 <sect2 role="commands">
329 <title>Command Explanations</title>
330
331 <para>
332 <parameter>--buildtype=release</parameter>: This switch ensures a
333 fully-optimized build, and disables debug assertions which will
334 severely slow down the libraries in certain use-cases. Without this
335 switch, build sizes can span into the 2GB range.
336 </para>
337
338 <para>
339 <anchor id='mesa-gallium-drivers' xreflabel='Mesa Gallium3D Drivers'/>
340 <parameter>-Dgallium-drivers=auto</parameter>: This parameter
341 controls which Gallium3D drivers should be built.
342 <literal>auto</literal> selects all Gallium3D drivers available
343 for x86: <literal>r300</literal> (for ATI Radeon 9000 or Radeon X
344 series), <literal>r600</literal> (for AMD/ATI Radeon HD 2000-6000
345 series), <literal>radeonsi</literal> (for AMD Radeon HD 7000 or newer
346 AMD GPU models), <literal>nouveau</literal>
347 (for Supported NVIDIA GPUs, they are listed as all
348 <quote>3D features</quote> either <quote>DONE</quote> or
349 <quote>N/A</quote> in <ulink
350 url='https://nouveau.freedesktop.org/FeatureMatrix.html'>the Nouveau
351 status page</ulink>), <literal>virgl</literal> (for QEMU virtual GPU
352 with <application>virglrender</application> support; note that BLFS
353 <xref linkend='qemu'/> is not built with
354 <application>virglrender</application>), <literal>svga</literal>
355 (for VMWare virtual GPU), <literal>swrast</literal> (using CPU for 3D
356 rasterisation; note that it's much slower than using a modern
357 3D-capable GPU, so it should be only used if the GPU is not supported
358 by other drivers), <literal>iris</literal> (for Intel GPUs shipped
359 with Broadwell or newer CPUs), <literal>crocus</literal> (for Intel
360 GMA 3000, X3000 series, 4000 series, or X4000 series GPUs shipped with
361 chipsets, or Intel HD GPUs shipped with pre-Broadwell CPUs),
362 <literal>i915</literal> (for Intel GMA 900, 950, 3100, or 3150 GPUs
363 shipped with chipsets or Atom D/N 4xx/5xx CPUs). You may replace
364 <literal>auto</literal> with a comma-separated list to build only
365 a subset of these drivers if you precisely know which drivers you
366 need, for example
367 <option>-Dgallium-drivers=radeonsi,iris,swrast</option>.
368 </para>
369<!--
370 <para>
371 <parameter>-Dosmesa=true</parameter>: This switch enables building
372 the <filename class="libraryfile">libOSMesa</filename> library and
373 provides Gallium3D support in it. It requires the swrast gallium driver.
374 </para>
375-->
376
377 <para>
378 <parameter>-Dplatforms="..."</parameter>: This parameter
379 controls which windowing systems will be supported. Available
380 linux platforms are x11 and wayland.
381 </para>
382
383 <para>
384 <parameter>-Dvulkan-drivers=""</parameter>: This switch allows choosing
385 which Vulkan drivers are built. The default is auto, but this requires
386 the optional dependencies <application>glslang</application> and
387 <application>Vulkan-Loader</application>. Vulkan is a newer API
388 designed for utilizing the GPUs with a performance better than OpenGL,
389 but nothing in BLFS benefits from it for now. So we pass an empty
390 list in order to remove the need for these dependencies.
391 </para>
392
393 <para>
394 <parameter>-Dvalgrind=disabled</parameter>: This parameter disables
395 the usage of Valgrind during the build process. Remove this parameter
396 if you have Valgrind installed, and wish to check for memory leaks.
397 </para>
398
399 <para>
400 <parameter>-Dlibunwind=disabled</parameter>: This parameter disables
401 the usage of libunwind.
402 </para>
403
404 <para>
405 <command>meson configure -Dbuild-tests=true</command>: This command will
406 reconfigure the build to set <option>-Dbuild-tests=true</option>, but
407 keep the other options specified in the <command>meson setup</command>
408 command unchanged. It allows <command>ninja test</command> to build and
409 run unit tests.
410 </para>
411
412 <para>
413 <option>-Degl-native-platform="..."</option>: This parameter
414 controls which Embedded Graphics Library support will be built. Available
415 linux options are auto (default), x11, wayland, surfaceless, and drm.
416 </para>
417
418 </sect2>
419
420 <sect2 role="content">
421 <title>Contents</title>
422
423 <segmentedlist>
424 <segtitle>Installed Programs</segtitle>
425 <segtitle>Installed Libraries</segtitle><!-- in /usr/lib -->
426 <segtitle>Installed Drivers</segtitle><!-- in /usr/lib/<subdir> -->
427 <segtitle>Installed Directories</segtitle>
428
429 <seglistitem>
430 <seg>
431 glxgears and glxinfo
432 </seg>
433 <seg>
434 libEGL.so,
435 libGL.so,
436 libGLESv1_CM.so,
437 libGLESv2.so,
438 libgbm.so,
439 libglapi.so, and
440 libxatracker.so
441 </seg>
442 <seg>
443 <!-- d3dadapter9.so (optional)
444 I guess this is useless today, Wine applications use Vulkan
445 through libvkd3d, and new games with native Linux support
446 likely uses Vulkan directly. -->
447 <!-- Begin gallium DRI drivers (*_dri.so) and VA-API drivers
448 (*_drv_video.so): this is the full set -->
449 crocus_dri.so,
450 i915_dri.so,
451 iris_dri.so,
452 kms_swrast_dri.so,
453 nouveau_dri.so,
454 nouveau_drv_video.so,
455 r300_dri.so,
456 r600_dri.so,
457 r600_drv_video.so,
458 radeonsi_dri.so,
459 radeonsi_drv_video.so,
460 swrast_dri.so,
461 virtio_gpu_dri.so,
462 virtio_gpu_drv_video.so,
463 vmwgfx_dri.so,
464 <!-- End DRI Drivers -->
465 <!-- Begin VDPAU drivers -->
466 libvdpau_nouveau.so,
467 libvdpau_r300.so
468 libvdpau_r600.so, and
469 libvdpau_radeonsi.so
470 libvdpau_virtio_gpu.so
471 <!-- End VDPAU drivers -->
472 (Many of these drivers are hard-linked).
473 </seg>
474 <seg>
475 <!-- $XORG_PREFIX/include/GL is installed by xorg-protos -->
476 $XORG_PREFIX/{include/{EGL,GLES,GLES2,GLES3,KHR},
477 $XORG_PREFIX/lib/{dri,vdpau}},
478 $XORG_PREFIX/share/drirc.d (contains workarounds for various applications,
479 particularly browsers and games),
480 and /usr/share/doc/mesa-&mesa-version;
481 </seg>
482 </seglistitem>
483 </segmentedlist>
484
485 <variablelist>
486 <bridgehead renderas="sect3">Short Descriptions</bridgehead>
487 <?dbfo list-presentation="list"?>
488 <?dbhtml list-presentation="table"?>
489
490 <varlistentry id="glxgears">
491 <term><command>glxgears</command></term>
492 <listitem>
493 <para>
494 is a GL demo useful for troubleshooting graphics
495 problems
496 </para>
497 <indexterm zone="mesa glxgears">
498 <primary sortas="b-glxgears">glxgears</primary>
499 </indexterm>
500 </listitem>
501 </varlistentry>
502
503 <varlistentry id="glxinfo">
504 <term><command>glxinfo</command></term>
505 <listitem>
506 <para>
507 is a diagnostic program that displays information about the
508 graphics hardware and installed GL libraries
509 </para>
510 <indexterm zone="mesa glxinfo">
511 <primary sortas="b-glxinfo">glxinfo</primary>
512 </indexterm>
513 </listitem>
514 </varlistentry>
515
516 <varlistentry id="libEGL">
517 <term><filename class="libraryfile">libEGL.so</filename></term>
518 <listitem>
519 <para>
520 provides a native platform graphics interface as
521 defined by the EGL-1.4 specification
522 </para>
523 <indexterm zone="mesa libEGL">
524 <primary sortas="c-libGL">libEGL.so</primary>
525 </indexterm>
526 </listitem>
527 </varlistentry>
528
529 <varlistentry id="libgbm">
530 <term><filename class="libraryfile">libgbm.so</filename></term>
531 <listitem>
532 <para>
533 is the <application>Mesa</application> Graphics Buffer
534 Manager library
535 </para>
536 <indexterm zone="mesa libgbm">
537 <primary sortas="c-libgbm">libgbm.so</primary>
538 </indexterm>
539 </listitem>
540 </varlistentry>
541
542 <varlistentry id="libGLESv1_CM">
543 <term><filename class="libraryfile">libGLESv1_CM.so</filename></term>
544 <listitem>
545 <para>
546 is the <application>Mesa</application> OpenGL ES 1.1 library
547 </para>
548 <indexterm zone="mesa libGLESv1_CM">
549 <primary sortas="c-libGLESv1_CM">libGLESv1_CM.so</primary>
550 </indexterm>
551 </listitem>
552 </varlistentry>
553
554 <varlistentry id="libGLES2">
555 <term><filename class="libraryfile">libGLES2.so</filename></term>
556 <listitem>
557 <para>
558 is the <application>Mesa</application> OpenGL ES 2.0 library
559 </para>
560 <indexterm zone="mesa libGLES2">
561 <primary sortas="c-libGLES2">libGLES2.so</primary>
562 </indexterm>
563 </listitem>
564 </varlistentry>
565
566 <varlistentry id="libGL">
567 <term><filename class="libraryfile">libGL.so</filename></term>
568 <listitem>
569 <para>
570 is the main <application>Mesa</application> OpenGL library
571 </para>
572 <indexterm zone="mesa libGL">
573 <primary sortas="c-libGL">libGL.so</primary>
574 </indexterm>
575 </listitem>
576 </varlistentry>
577
578 </variablelist>
579
580 </sect2>
581
582</sect1>
Note: See TracBrowser for help on using the repository browser.