source: x/installing/mesa.xml@ 6ff79cf

11.1 11.2 11.3 12.0 12.1 kea ken/TL2024 ken/inkscape-core-mods ken/tuningfonts lazarus lxqt plabs/newcss plabs/python-mods python3.11 qt5new rahul/power-profiles-daemon renodr/vulkan-addition trunk upgradedb xry111/intltool xry111/llvm18 xry111/soup3 xry111/test-20220226 xry111/xf86-video-removal
Last change on this file since 6ff79cf was 6ff79cf, checked in by Ken Moffat <ken@…>, 3 years ago

Mesa - add comment for editors, fix wiki link.

The crocus driver will be automatically selected at some point,
the fix for that is already in master.

I needed to add a comment to the wiki for using crocus, which is
not yet the default - the link was broken, he old MesaLib page
is the right place, but last updated 15 years ago and the existing
details seem anachronistic.

  • Property mode set to 100644
File size: 18.2 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 "f81336168864b1f890edfa5db8587f2b">
10 <!ENTITY mesa-size "15 MB">
11 <!ENTITY mesa-buildsize "799 MB (with docs, add 376 MB if running the tests)">
12 <!-- using NINJAJOBS=6 -->
13 <!ENTITY mesa-time "5.1 SBU (on a 4-core machine with docs)">
14]>
15
16<sect1 id="mesa" xreflabel="Mesa-&mesa-version;">
17 <?dbhtml filename="mesa.html"?>
18
19 <sect1info>
20 <date>$Date$</date>
21 </sect1info>
22
23 <title>Mesa-&mesa-version;</title>
24
25 <indexterm zone="mesa">
26 <primary sortas="a-Mesa">Mesa</primary>
27 </indexterm>
28
29 <sect2 role="package">
30 <title>Introduction to Mesa</title>
31
32 <para>
33 <application>Mesa</application> is an OpenGL compatible 3D graphics
34 library.
35 </para>
36
37 <note>
38 <para>
39 <application>Mesa</application> is updated relatively often. You may
40 want to use the latest available &mesa-major-minor;.x mesa version.
41 </para>
42 </note>
43
44 &lfs110a_checked;
45
46 <bridgehead renderas="sect3">Package Information</bridgehead>
47 <itemizedlist spacing="compact">
48 <listitem>
49 <para>
50 Download (HTTP): <ulink url="&mesa-download-http;"/>
51 </para>
52 </listitem>
53 <listitem>
54 <para>
55 Download (FTP): <ulink url="&mesa-download-ftp;"/>
56 </para>
57 </listitem>
58 <listitem>
59 <para>
60 Download MD5 sum: &mesa-md5sum;
61 </para>
62 </listitem>
63 <listitem>
64 <para>
65 Download size: &mesa-size;
66 </para>
67 </listitem>
68 <listitem>
69 <para>
70 Estimated disk space required: &mesa-buildsize;
71 </para>
72 </listitem>
73 <listitem>
74 <para>
75 Estimated build time: &mesa-time;
76 </para>
77 </listitem>
78 </itemizedlist>
79
80 <bridgehead renderas="sect3">Additional Downloads</bridgehead>
81 <itemizedlist spacing="compact">
82 <listitem>
83 <para>
84 Recommended patch:
85 <ulink url="&patch-root;/mesa-&mesa-version;-add_xdemos-1.patch"/>
86 (installs 2 demo programs for testing Mesa - not needed if you
87 install the <ulink url="ftp://ftp.freedesktop.org/pub/mesa/demos/">
88 mesa-demos</ulink> package)
89 </para>
90 </listitem>
91 </itemizedlist>
92
93 <bridgehead renderas="sect3">Mesa Dependencies</bridgehead>
94
95 <bridgehead renderas="sect4">Required</bridgehead>
96 <para role="required">
97 <xref linkend="xorg7-lib"/>,
98 <xref linkend="libdrm"/>, and
99 <xref linkend="Mako"/>
100 </para>
101
102 <bridgehead renderas="sect4">Recommended</bridgehead>
103 <para role="recommended">
104
105 <xref role="first" linkend="libva"/> (to provide VA-API support for some
106 gallium drivers, note that there is a circular dependency. You must
107 build <application>libva</application> first without EGL and GLX support,
108 install this package, and rebuild <application>libva</application>),
109 <xref linkend="libvdpau"/> (to build VDPAU drivers),
110 <xref linkend="llvm"/> (required for Gallium3D, nouveau, r300, and radeonsi
111 drivers and for swrast, the software rasterizer which is sometimes referred
112 to as llvmpipe. See <ulink role="nodep"
113 url="https://docs.mesa3d.org/systems.html"/> for more information), and
114 <xref linkend="wayland-protocols"/> (required for
115 <xref role="nodep" linkend='plasma5-build'/>,
116 <!-- <xref role="nodep" linkend='lxqt'/>, -->
117 GNOME, and recommended for <xref role="nodep" linkend='gtk3'/>)
118 </para>
119
120 <bridgehead renderas="sect4">Optional</bridgehead>
121 <para role="optional">
122 <xref linkend="libgcrypt"/>,
123 <xref linkend="lm_sensors"/> <!-- for libsensors according to Meson -->,
124 <xref linkend="nettle"/>,
125 <xref linkend="valgrind"/>,
126 <ulink url="ftp://ftp.freedesktop.org/pub/mesa/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="http://omxil.sourceforge.net/">Bellagio OpenMAX Integration
131 Layer</ulink> (for mobile platforms),
132 <ulink url="http://www.nongnu.org/libunwind/">libunwind</ulink>,
133 <ulink url="https://github.com/tizonia/tizonia-openmax-il/wiki/Tizonia-OpenMAX-IL/">
134 libtizonia</ulink>, and
135 <ulink url="https://www.vulkan.org/">libvulkan</ulink> (for the zink driver)
136 </para>
137
138 <note>
139 <para>
140 The instructions below assume that
141 <application>LLVM</application> with the r600/amdgpu and host backends
142 and run-time type information (RTTI - needed for nouveau) are installed.
143 You will need to modify the instructions if you
144 choose not to install all of these. For an explanation of Gallium3D see
145 <ulink url="https://en.wikipedia.org/wiki/Gallium3D"/>.
146 </para>
147 </note>
148
149 <para condition="html" role="usernotes">User Notes:
150 <ulink url="&blfs-wiki;/mesalib"/>
151 </para>
152 </sect2>
153
154 <sect2 role="installation">
155 <title>Installation of Mesa</title>
156
157 <para>
158 If you have downloaded the xdemos patch (needed if testing the Xorg
159 installation per BLFS instructions), apply it by running the following
160 command:
161 </para>
162
163<screen><userinput>patch -Np1 -i ../mesa-&mesa-version;-add_xdemos-1.patch</userinput></screen>
164
165 <!-- Note that freedreno, vc4, and virgl all need special support from
166 libdrm - renodr
167 For me, libdrm does not mention virgl, but mesa accepts it. AFAICS
168 freedreno is for qualcom hardware, libdrm will build for it on suitable
169 systems. VC4 is for the Broadcom VC4 used in the raspberry pi - ken -->
170
171 <para>
172 Adjust a script file in test suite to use Python 3, instead of the
173 obsolete Python 2:
174 </para>
175
176<screen><userinput>sed '1s/python/&amp;3/' -i bin/symbols-check.py</userinput></screen>
177
178 <note>
179 <para>
180 The measurements above, and the Contents below, are for a full build.
181 Many people will not wish to install drivers they cannot use, so the
182 following paragraphs explain how to limit the drivers, and give an
183 example which can be be reduced or amended as necessary.
184 </para>
185 </note>
186
187 <para>
188 Now, select the drivers you wish to install. For the X86 architecture, the
189 available gallium drivers are auto (<emphasis>in 21.2.1 this does not select
190 crocus </emphasis>), <emphasis>or alternatively a choice from</emphasis>
191 crocus, i915, iris, nouveau, r300, r600, radeonsi, svga, swrast, and virgl. The
192 latter is recommended if you intend to run the system under
193 <xref linkend="qemu"/>.<!-- If you wish to build all available gallium drivers,
194 use 'auto'. FIXME : does not build crocus in 21.2.1 -->
195
196 <!-- crocus was added to the default x86/x86_64 drivers for meson in the
197 master branch on 2021-08-31, at some point it will appear in a stable release -->
198 </para>
199
200 <para>
201 The (non-gallium) DRI drivers available in X86 are auto, <emphasis>or
202 alternatively a choice from</emphasis> i915, i965, nouveau, r100, r200,
203 and swrast. Use 'auto' to build all available DRI drivers, or use an
204 empty string (DRI_DRIVERS="") if you wish to only build gallium drivers.
205 </para>
206
207 <para>
208 The platforms ("window systems") available for X86 linux are x11, wayland,
209 <!--drm,--> and surfaceless. By not specifying anything, the meson
210 build-system will build for all these platforms if you have the
211 dependencies, identical to if you had specified '-Dplatforms=auto'.
212 </para>
213
214 <para>
215 Modify the commands below for your desired drivers. The drivers listed
216 below will cover most modern video cards and virtual machines. For help in
217 selecting drivers see <ulink url="https://docs.mesa3d.org/systems.html"/>.
218 <!-- these two don't seem to be mentioned in that mesa link -->
219 For intel drivers, specify crocus for i965 gen 4 through to haswell, iris
220 for broadwell and later.
221 </para>
222
223 <note>
224 <para>
225 Although the nouveau drivers can be built for both gallium and dri, the
226 i915 driver can only be built for one or the other.
227 </para>
228 </note>
229
230<screen><userinput>GALLIUM_DRV="crocus,i915,iris,nouveau,r600,radeonsi,svga,swrast,virgl"
231DRI_DRIVERS="i965,nouveau"</userinput></screen>
232
233 <para>
234 Install <application>Mesa</application> by running the following
235 commands:
236 </para>
237
238<screen><userinput>mkdir build &amp;&amp;
239cd build &amp;&amp;
240
241meson --prefix=$XORG_PREFIX \
242 --buildtype=release \
243 -Ddri-drivers=$DRI_DRIVERS \
244 -Dgallium-drivers=$GALLIUM_DRV \
245 -Dgallium-nine=false \
246 -Dglx=dri \
247 -Dvalgrind=disabled \
248 -Dlibunwind=disabled \
249 .. &amp;&amp;
250
251unset GALLIUM_DRV DRI_DRIVERS &amp;&amp;
252
253ninja</userinput></screen>
254
255 <para>
256 If you built the tests (see 'Command Explanations'), to run them issue:
257 <command>ninja test</command>.
258 All 33 subtests tests in the mesa:compiler+glsl / glsl compiler warnings
259 suite are known to fail.
260 </para>
261
262 <para>
263 Now, as the <systemitem class="username">root</systemitem> user:
264 </para>
265
266<screen role="root"><userinput>ninja install</userinput></screen>
267
268 <para>
269 If desired, install the optional documentation by running
270 the following commands as the
271 <systemitem class="username">root</systemitem> user:
272 </para>
273
274<screen role="root"><userinput>install -v -dm755 /usr/share/doc/mesa-&mesa-version; &amp;&amp;
275cp -rfv ../docs/* /usr/share/doc/mesa-&mesa-version;</userinput></screen>
276
277 </sect2>
278
279 <sect2 role="commands">
280 <title>Command Explanations</title>
281
282 <para>
283 <parameter>--buildtype=release</parameter>: This switch ensures a
284 fully-optimized build, and disables debug assertions which will
285 severely slow down the libraries in certain use-cases. Without this
286 switch, build sizes can span into the 2GB range.
287 </para>
288
289 <para>
290 <parameter>-Ddri-drivers="..."</parameter>: This parameter
291 controls which (non-gallium) dri drivers should be built.
292 </para>
293
294 <para>
295 <parameter>-Dgallium-drivers="..."</parameter>: This parameter
296 controls which Gallium3D drivers should be built.
297 </para>
298
299 <para>
300 <parameter>-Dgallium-nine=false</parameter>: Prevents building
301 support for (MS Windows) games designed for DX9. Set it to true if
302 this support is desired.
303 </para>
304<!--
305 <para>
306 <parameter>-Dosmesa=true</parameter>: This switch enables building
307 the <filename class="libraryfile">libOSMesa</filename> library and
308 provides Gallium3D support in it. It requires the swrast gallium driver.
309 </para>
310-->
311<!--
312 <para>
313 <parameter>-Dplatforms="..."</parameter>: This parameter
314 controls which platforms EGL will be built for. Available
315 linux X86 platforms are drm, x11, wayland, and surfaceless.
316 </para>
317-->
318 <para>
319 <parameter>-Dvalgrind=disabled</parameter>: This parameter disables
320 the usage of Valgrind during the build process. Remove this parameter
321 if you have Valgrind installed, and wish to check for memory leaks.
322 </para>
323
324 <para>
325 <parameter>-Dlibunwind=disabled</parameter>: This parameter disables
326 the usage of libunwind.
327 </para>
328
329<!--
330 <para>
331 <parameter>- -enable-xa</parameter>: This switch enables building the
332 XA X Acceleration API (Required for VMware 3D Driver).
333 </para>
334
335 <para>
336 <parameter>- -enable-gbm</parameter>: This switch enables building the
337 <application>Mesa</application> Graphics Buffer Manager library.
338 </para>
339 These two seem to be automatic in 19.0 - ken
340
341 <para>
342 <parameter>- -enable-glx-tls</parameter>: This switch enables TLS (Thread Local
343 Storage) support in GLX.
344 </para>
345-->
346 <para>
347 <option>-Dbuild-tests=true</option>: This option will cause the test code
348 to be enabled. To run the tests, issue: <command>ninja test</command>.
349 </para>
350
351 </sect2>
352
353 <sect2 role="content">
354 <title>Contents</title>
355
356 <segmentedlist>
357 <segtitle>Installed Programs</segtitle>
358 <segtitle>Installed Libraries</segtitle><!-- in /usr/lib -->
359 <segtitle>Installed Drivers</segtitle><!-- in /usr/lib/<subdir> -->
360 <segtitle>Installed Directories</segtitle>
361
362 <seglistitem>
363 <seg>
364 glxgears and glxinfo
365 </seg>
366 <seg>
367 libEGL.so,
368 libGL.so,
369 libGLESv1_CM.so,
370 libGLESv2.so,
371 libOSMesa.so,
372 libXvMCnouveau.so,
373 libXvMCr600.so,
374 libgbm.so,
375 libglapi.so,
376 <!-- Begin Vulkan drivers -->
377 libvulkan_intel.so,
378 libvulkan_lvp.so,
379 libvulkan_radeon.so, and
380 <!-- End Vulkan drivers -->
381 libxatracker.so,
382 </seg>
383 <seg>
384 <!-- Begini gallium DRI drivers : this is the full set -->
385 d3dadapter9.so (optional), <!-- For Windows games. This is DirectX's
386 Direct3D -->
387 crocus_dri.so,
388 i830_dri.so,
389 i915_dri.so,
390 i965_dri.so,
391 iris_dri.so,
392 kms_swrast_dri.so,
393 nouveau_dri.so,
394 nouveau_drv_video.so,
395 nouveau_vieux_dri.so,
396 r200_dri.so (optional),
397 r300_dri.so (optional),
398 r600_dri.so,
399 r600_drv_video.so,
400 radeon_dri.so (optional),
401 radeonsi_dri.so,
402 radeonsi_drv_video.so,
403 swrast_dri.so,
404 virtio_gpu_dri.so,
405 vmwgfx_dri.so,
406 <!-- End DRI Drivers -->
407 <!-- Begin VDPAU drivers -->
408 libvdpau_nouveau.so,
409 libvdpau_r300.so (optional),
410 libvdpau_r600.so, and
411 libvdpau_radeonsi.so
412 <!-- End VDPAU drivers -->
413 (Many of these drivers are hard-linked).
414 </seg>
415 <seg>
416 $XORG_PREFIX/{include/{EGL,GL,GLES,GLES2,GLES3,KHR,vulkan},lib/{dri,vdpau}},
417 $XORG_PREFIX/include/d3adapter (optional),
418 $XORG_PREFIX/lib/d3d (optional),
419 $XORG_PREFIX/share/drirc.d (contains workarounds for various applications,
420 particularly browsers and games)
421 $XORG_PREFIX/share/vulkan/icd.d,
422 and
423 /usr/share/doc/mesa-&mesa-version; (optional)
424 </seg>
425 </seglistitem>
426 </segmentedlist>
427
428 <variablelist>
429 <bridgehead renderas="sect3">Short Descriptions</bridgehead>
430 <?dbfo list-presentation="list"?>
431 <?dbhtml list-presentation="table"?>
432
433 <varlistentry id="glxgears">
434 <term><command>glxgears</command></term>
435 <listitem>
436 <para>
437 is a GL demo useful for troubleshooting graphics
438 problems
439 </para>
440 <indexterm zone="mesa glxgears">
441 <primary sortas="b-glxgears">glxgears</primary>
442 </indexterm>
443 </listitem>
444 </varlistentry>
445
446 <varlistentry id="glxinfo">
447 <term><command>glxinfo</command></term>
448 <listitem>
449 <para>
450 is a diagnostic program that displays information about the
451 graphics hardware and installed GL libraries
452 </para>
453 <indexterm zone="mesa glxinfo">
454 <primary sortas="b-glxinfo">glxinfo</primary>
455 </indexterm>
456 </listitem>
457 </varlistentry>
458
459 <varlistentry id="libEGL">
460 <term><filename class="libraryfile">libEGL.so</filename></term>
461 <listitem>
462 <para>
463 provides a native platform graphics interface as
464 defined by the EGL-1.4 specification
465 </para>
466 <indexterm zone="mesa libEGL">
467 <primary sortas="c-libGL">libEGL.so</primary>
468 </indexterm>
469 </listitem>
470 </varlistentry>
471
472 <varlistentry id="libgbm">
473 <term><filename class="libraryfile">libgbm.so</filename></term>
474 <listitem>
475 <para>
476 is the <application>Mesa</application> Graphics Buffer
477 Manager library
478 </para>
479 <indexterm zone="mesa libgbm">
480 <primary sortas="c-libgbm">libgbm.so</primary>
481 </indexterm>
482 </listitem>
483 </varlistentry>
484
485 <varlistentry id="libGLESv1_CM">
486 <term><filename class="libraryfile">libGLESv1_CM.so</filename></term>
487 <listitem>
488 <para>
489 is the <application>Mesa</application> OpenGL ES 1.1 library
490 </para>
491 <indexterm zone="mesa libGLESv1_CM">
492 <primary sortas="c-libGLESv1_CM">libGLESv1_CM.so</primary>
493 </indexterm>
494 </listitem>
495 </varlistentry>
496
497 <varlistentry id="libGLES2">
498 <term><filename class="libraryfile">libGLES2.so</filename></term>
499 <listitem>
500 <para>
501 is the <application>Mesa</application> OpenGL ES 2.0 library
502 </para>
503 <indexterm zone="mesa libGLES2">
504 <primary sortas="c-libGLES2">libGLES2.so</primary>
505 </indexterm>
506 </listitem>
507 </varlistentry>
508
509 <varlistentry id="libGL">
510 <term><filename class="libraryfile">libGL.so</filename></term>
511 <listitem>
512 <para>
513 is the main <application>Mesa</application> OpenGL library
514 </para>
515 <indexterm zone="mesa libGL">
516 <primary sortas="c-libGL">libGL.so</primary>
517 </indexterm>
518 </listitem>
519 </varlistentry>
520
521 <varlistentry id="libOSMesa">
522 <term><filename class="libraryfile">libOSMesa.so</filename></term>
523 <listitem>
524 <para>
525 is the <application>Mesa</application> Off-screen Rendering library
526 </para>
527 <indexterm zone="mesa libOSMesa">
528 <primary sortas="c-libOSMesa">libOSMesa.so</primary>
529 </indexterm>
530 </listitem>
531 </varlistentry>
532
533 </variablelist>
534
535 </sect2>
536
537</sect1>
Note: See TracBrowser for help on using the repository browser.