source: x/installing/mesa.xml@ b22e4ceb

lazarus
Last change on this file since b22e4ceb was 9f777e1, checked in by Ken Moffat <ken@…>, 8 months ago

mesa - do not recommend virgl for qemu -

It needs virgl-renderer, and although qemu linked to that works
fine in certain places, such as reducing the cpu overhead from
large-window glxgears when running in a BLFS-style qemu build,
offloading the guest's rendering to the host GPU appears to
need libvirt and a much fuller qemu build. It seems to be mainly
for gamers.

For information, link to virglrenderer - I was not logged in to
freedesktop when I tried that today, so note the need for an
account there but also link to the current rlease for those who
do not have an account.

In passing, note that both Fedora and AUR appear to be using later
git commits than the 0.9.1 release.

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