source: x/installing/xorg-config.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/llvm18
Last change on this file since 293e4018 was 810935e, checked in by Douglas R. Reno <renodr@…>, 12 months ago

Xorg-config: Add a section about configuring Tearfree.

We might want to consider reviewing that page now that we don't carry
any of the other Xorg drivers now.

  • Property mode set to 100644
File size: 21.1 KB
Line 
1<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
2 "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
3 <!ENTITY % general-entities SYSTEM "../../general.ent">
4 %general-entities;
5]>
6
7<sect1 id="xorg-config">
8 <?dbhtml filename="xorg-config.html"?>
9
10
11 <title>Xorg-&xorg-version; Testing and Configuration</title>
12
13 <indexterm zone="xorg-config">
14 <primary sortas="g-configuring-xorg">Configuring Xorg</primary>
15 </indexterm>
16
17 <sect2 id='X11-testing' xreflabel="Testing Xorg">
18 <title>Testing Xorg</title>
19
20 <note>
21 <para>
22 Before starting Xorg for the first time, is is useful to
23 rebuild the library cache by running <userinput>ldconfig</userinput>
24 as the <systemitem class="username">root</systemitem> user.
25 </para>
26 </note>
27
28 <note>
29 <para>
30 Before starting Xorg for the first time, is is often needed to
31 reboot the system to ensure all appropriate daemons are started
32 and appropriate security issues are properly set.
33 As an alternative, logging out and logging back in may work, but as
34 of this writing has not been tested.
35 </para>
36 </note>
37
38 <warning>
39 <para>
40 If Xorg hangs for some reason (for example, lacking a proper
41 input driver), the system may stop responding to any user input.
42 As a precaution, you can enable a magic <keycap>SysRq</keycap> key
43 before testing Xorg. As the
44 <systemitem class="username">root</systemitem> user, issue:
45 </para>
46
47<screen><userinput>echo 4 > /proc/sys/kernel/sysrq</userinput></screen>
48
49 <para>
50 Then if Xorg hangs, it's possible to use
51 <keycombo>
52 <keycap>Alt</keycap>
53 <keycap>SysRq</keycap>
54 <keycap>R</keycap>
55 </keycombo>
56 to reset the keyboard mode. Now it should be able to use
57 <keycombo>
58 <keycap>Ctrl</keycap>
59 <keycap>Alt</keycap>
60 <keycap>Fx</keycap>
61 </keycombo>
62 (replace x with a VT number) to switch to another VT.
63 If it works, login and kill Xorg using command line in the new VT.
64 </para>
65 </warning>
66
67 <para>
68 To test the <application>Xorg</application> installation, issue
69 <command>startx</command>. This command brings up a rudimentary window
70 manager called <emphasis>twm</emphasis> with three xterm windows and one
71 xclock window. The xterm window in the upper left is a login terminal and
72 running <emphasis>exit</emphasis> from this terminal will exit the
73 <application>X Window</application> session. The third xterm window may
74 be obscured on your system by the other two xterms.
75 </para>
76
77 <note>
78 <para>
79 When testing <application>Xorg</application> with the
80 <application>twm</application> window manager, there will be several
81 warnings in the Xorg log file, <!--<filename revision="sysv">
82 /var/log/Xorg.0.log</filename><filename revision="systemd">-->
83 $HOME/.local/share/xorg/Xorg.0.log<!--</filename>-->, about missing font
84 files. In addition, there will be several warnings on the text mode
85 terminal (usually tty1) about missing fonts. These warnings do not
86 affect functionality, but can be removed if desired by installing
87 the <xref linkend="xorg7-legacy"/>.
88 </para>
89 </note>
90
91 <para>
92 Generally, there is no specific configuration required for
93 <application>Xorg</application>, but customization is possible. For
94 details, see <xref linkend='xconfig'/> below.
95 </para>
96
97 </sect2>
98
99 <sect2 role="configuration" id="checking-dri" xreflabel="Checking the DRI
100 installation">
101 <title>Checking the Direct Rendering Infrastructure (DRI)
102 Installation</title>
103
104 <para>
105 DRI is a framework for allowing software to access graphics hardware in
106 a safe and efficient manner. It is installed in
107 <application>X</application> by default (using
108 <application>Mesa</application>) if you have a supported video card.
109 </para>
110
111 <para>
112 To check if DRI drivers are installed properly, check the log file
113 <filename>$HOME/.local/share/xorg/Xorg.0.log</filename> (or
114 <filename>/var/log/Xorg.0.log</filename> if you have
115 built <xref linkend="xorg-server"/> with the suid bit) for
116 statements such as:
117 </para>
118
119<screen><literal>(II) intel(0): direct rendering: DRI2 Enabled</literal></screen>
120
121 <para>or</para>
122
123<screen><literal>(II) NOUVEAU(0): Loaded DRI module</literal></screen>
124
125 <note>
126 <para>
127 DRI configuration may differ if you are using alternate drivers, such
128 as those from
129 <ulink url="https://www.nvidia.com/page/home.html">NVIDIA</ulink> or
130 <ulink url="https://www.amd.com/">AMD</ulink>.
131 </para>
132 </note>
133
134<!-- With elogind, this is not needed anymore
135 <para>
136 Although all users can use software acceleration, any hardware
137 acceleration (DRI2) is only available to <systemitem
138 class="username">root</systemitem> and members of the <systemitem
139 class="groupname">video</systemitem> group, but
140 <phrase revision="sysv"><emphasis>ConsoleKit2</emphasis></phrase>
141 <phrase revision="systemd"><emphasis>systemd-logind</emphasis></phrase>
142 takes care of adding any logged in user to the user ACL's of
143 <filename>/dev/dri/card*</filename>, the special file(s) allowing access
144 to hardware acceleration.<phrase revision="systemd"> So, no further
145 configuration is needed.</phrase>
146 </para>
147
148 <para revision="sysv">
149 If your driver is supported and <emphasis>ConsoleKit2</emphasis> is not
150 installed, add any users that might use X to the <systemitem
151 class="groupname">video</systemitem> group:
152 </para>
153
154<screen role="root" revision="sysv"><userinput>usermod -a -G video <replaceable>&lt;username&gt;</replaceable></userinput></screen>
155-->
156 <para>
157 Another way to determine if DRI is working properly is to use one of the
158 two optionally installed OpenGL demo programs in <xref
159 linkend="mesa"/>. From an X terminal, run <command>glxinfo</command>
160 and look for the phrase:
161 </para>
162
163<screen><computeroutput>name of display: :0
164display: :0 screen: 0
165direct rendering: Yes</computeroutput></screen>
166
167 <para>
168 If direct rendering is enabled, you can add verbosity by running
169 <command>LIBGL_DEBUG=verbose glxinfo</command>. This will show the
170 drivers, device nodes and files used by the DRI system.
171 </para>
172
173 <para>
174 To confirm that DRI2 hardware acceleration is working, you can (still in
175 the X terminal) run the command <command>glxinfo | grep -E "(OpenGL
176 vendor|OpenGL renderer|OpenGL version)"</command>.
177 If that reports something <emphasis>other than</emphasis>
178 <literal>Software Rasterizer</literal> then you have working
179 acceleration for the user who ran the command.
180 </para>
181
182 <para>
183 If your hardware does not have any DRI2 driver available, it will use a
184 Software Rasterizer for Direct Rendering. In such cases, you can use a
185 new, LLVM-accelerated, Software Rasterizer called LLVMPipe. In order to
186 build LLVMPipe just make sure that <xref linkend="llvm"/> is present at
187 Mesa build time. Note that all decoding is done on the CPU instead of
188 the GPU, so the display will run slower than with hardware acceleration.
189 To check if you are using LLVMpipe, review the output of the glxinfo
190 command above. An example of the output using the Software Rasterizer
191 is shown below:
192 </para>
193
194<screen><computeroutput>OpenGL vendor string: VMware, Inc.
195OpenGL renderer string: Gallium 0.4 on llvmpipe (LLVM 3.5, 256 bits)
196OpenGL version string: 3.0 Mesa 10.4.5</computeroutput></screen>
197
198 <para>
199 You can also force LLVMPipe by exporting the
200 <envar>LIBGL_ALWAYS_SOFTWARE=1</envar> environment variable when
201 starting Xorg.
202 </para>
203
204 <para>
205 Again, if you have built the Mesa OpenGL demos, you can also run the test
206 program <command>glxgears</command>. This program brings up a window with
207 three gears turning. The X terminal will display how many frames were
208 drawn every five seconds, so this will give a rough benchmark. The window
209 is scalable, and the frames drawn per second is highly dependent on the
210 size of the window. On some hardware, <command>glxgears</command> will
211 run synchronized with the vertical refresh signal and the frame rate will
212 be approximately the same as the monitor refresh rate.
213 </para>
214
215 </sect2>
216
217 <sect2 role="configuration" id="xorg-debug" xreflabel="Debugging Xorg">
218 <title>Debugging Xorg</title>
219
220 <para>
221 When starting xorg, there are a couple of ways to check what any
222 issues you may have. If the system comes up, you can see what driver
223 is being used by running <command>xdriinfo</command>. If there are
224 issues or you just want to check, look at <filename>Xorg.0.log</filename>.
225 </para>
226
227 <para>
228 The location of <filename>Xorg.0.log</filename> depends on how Xorg is
229 installed. If the instructions in the book are followed closely and
230 Xorg is started from the command line, it will be located in the
231 <filename class="directory">$HOME/.local/share/xorg/</filename> directory.
232 If Xorg is started by a display manager (e.g. <xref linkend='lightdm'/>,
233 <xref linkend='lxdm'/>, or <xref linkend='gdm'/>) or if
234 <filename>$XORG_PREFIX/bin/Xorg</filename> has the suid bit set,
235 it will be located in the <filename class="directory">/var/log/</filename>
236 directory.
237 </para>
238
239 <bridgehead renderas="sect3">Xorg.0.log Issues</bridgehead>
240
241 <para>
242 When you look at Xorg.0.log, check for entries like (EE) or (WW).
243 Below are some common entries:
244 </para>
245
246 <bridgehead renderas="sect5">(WW) Open ACPI failed (/var/run/acpid.socket)</bridgehead>
247
248 <para>
249 This warning is because <xref linkend='acpid'/> is not installed. If you
250 are not on a laptop, it can be safely ignored. On a laptop, install
251 <xref linkend='acpid'/> to enable actions like recognizing when the lid is
252 closed.
253 </para>
254
255 <bridgehead renderas="sect5">(WW) VGA arbiter: cannot open kernel arbiter, no multi-card support</bridgehead>
256
257 <para>
258 This warning is displayed when a regular user starts Xorg. The library
259 <filename>libpciaccess.so</filename> issues this warning when it
260 tries to open <filename>/dev/vga_arbiter</filename>. If there is only
261 one video card in the system, it can safely be ignored. If desired, the
262 permissions of this device can be changed by adding a udev rule and
263 adding the local user to the video group. As the &root; user:
264 </para>
265
266<screen role="root"><userinput>cat > /etc/udev/rules.d/99-vga-arbiter.rules &lt;&lt; EOF
267# /etc/udev/rules.d/99-vga-arbiter.rules: Set vga_arbiter group/mode
268
269ACTION=="add", KERNEL=="vga_arbiter", GROUP="video" MODE="0660"
270EOF
271
272usermod -a -G video &lt;user running xorg&gt;</userinput></screen>
273
274 <bridgehead renderas="sect5">(EE) AIGLX error: dlopen of /opt/xorg/lib/dri/i965_dri.so failed</bridgehead>
275
276 <para>
277 This error, accompanied by (EE) AIGLX error: unable to load driver i965, occurs
278 in some systems with Intel based graphics devices. It is caused by a mismatch
279 between the current <xref linkend='xorg-server'/> and <xref linkend='mesa'/>. Xorg
280 no longer uses the i965 driver and uses the crocus or iris mesa drivers as
281 indicated by the <command>xdriinfo</command> command. It can safely be ignored.
282 </para>
283
284 <para>
285 If desired, this warning can be removed by commenting out lines
286 330-331 and 337-338 (LogMessage) of
287 <filename>glx/glxdricommon.c</filename> in the <xref linkend='xorg-server'/>
288 package.
289 </para>
290
291 </sect2>
292
293 <sect2 role="configuration" id="hybrid-graphics" xreflabel="Hybrid Graphics">
294 <title>Hybrid Graphics</title>
295
296 <para>
297 Hybrid Graphics is still in experimental state for Linux. Xorg Developers
298 have developed a technology called PRIME that can be used for switching
299 between integrated and muxless discrete GPU at will. Automatic switching
300 is not possible at the moment.
301 </para>
302
303 <para>
304 In order to use PRIME for GPU switching, make sure that you are using
305 Linux Kernel 3.4 or later (recommended). You will need latest DRI and
306 DDX drivers for your hardware and <application>Xorg Server</application>
307 1.13 or later.
308 </para>
309
310 <para>
311 <application>Xorg Server</application> should load both GPU drivers
312 automatically. You can check that by running:
313 </para>
314
315<screen><userinput>xrandr --listproviders</userinput></screen>
316
317 <para>
318 There should be two (or more) providers listed, for example:
319 </para>
320
321<screen><computeroutput>Providers: number : 2
322Provider 0: id: 0x7d cap: 0xb, Source Output, Sink Output, Sink Offload crtcs: 3 outputs: 4 associated providers: 1 name:Intel
323Provider 1: id: 0x56 cap: 0xf, Source Output, Sink Output, Source Offload, Sink Offload crtcs: 6 outputs: 1 associated providers: 1 name:radeon</computeroutput></screen>
324
325 <para>
326 In order to be able to run a GLX application on a discrete GPU, you will
327 need to run the following command, where &lt;provider&gt; is the more
328 powerful discrete card, and &lt;sink&gt; is the card which has a display
329 connected:
330 </para>
331
332<screen><userinput>xrandr --setprovideroffloadsink <replaceable>&lt;provider&gt; &lt;sink&gt;</replaceable></userinput></screen>
333
334 <note>
335 <para>
336 With newer <application>Xorg</application> drivers, such as modesetting
337 or intel, which are DRI3 capable, the above command is no longer
338 necessary. It does no harm however.
339 </para>
340 </note>
341
342 <para>
343 Then, you will need to export the <envar>DRI_PRIME=1</envar> environment
344 variable each time you want the powerful GPU to be used. For example,
345
346<screen><userinput>DRI_PRIME=1 glxinfo | grep -E "(OpenGL vendor|OpenGL renderer|OpenGL version)"</userinput></screen>
347
348 will show OpenGL vendor, renderer and version for the discrete GPU.
349 </para>
350
351 <para>
352 If the last command reports same OpenGL renderer with and without
353 <envar>DRI_PRIME=1</envar>, you will need to check your installation.
354 </para>
355
356 </sect2>
357
358 <sect2 role="configuration" id='xconfig'>
359 <title>Setting up Xorg Devices</title>
360
361 <para>
362 For most hardware configurations, modern Xorg will automatically
363 get the server configuration correct without any user intervention. There
364 are, however, some cases where auto-configuration will be incorrect.
365 Following are some example manual configuration items that may be of use
366 in these instances.
367 </para>
368
369 <sect3 id="xinput">
370 <title>Setting up X Input Devices</title>
371 <para>
372 For most input devices, no additional configuration will be
373 necessary. This section is provided for informational purposes only.
374 </para>
375
376 <para>
377 A sample default XKB setup could look like the following (executed as
378 the <systemitem class="username">root</systemitem> user):
379 </para>
380
381<screen role="root"><userinput>cat &gt; /etc/X11/xorg.conf.d/xkb-defaults.conf &lt;&lt; "EOF"
382<literal>Section "InputClass"
383 Identifier "XKB Defaults"
384 MatchIsKeyboard "yes"
385 Option "XkbLayout" "fr"
386 Option "XkbOptions" "terminate:ctrl_alt_bksp"
387EndSection</literal>
388EOF</userinput></screen>
389
390 <para>
391 The <quote>XkbLayout</quote> line is an example for a French (AZERTY)
392 keyboard. Change it to your keyboard model. That line is not needed for
393 a QWERTY (US) keyboard.
394 </para>
395 </sect3>
396
397 <sect3 id="xdisplay">
398 <title>Fine Tuning Display Settings</title>
399
400 <para>
401 If you want to set the monitor resolution for Xorg, first run
402 <command>xrandr</command> in a X terminal to list the supported
403 resolutions and the corresponding refresh rates. For example, it
404 outputs the following for one monitor:
405 </para>
406
407<screen><computeroutput>Screen 0: minimum 16 x 16, current 5760 x 2160, maximum 32767 x 32767
408DP-1 connected primary 3840x2160+0+0 (normal left inverted right x axis y axis) 600mm x 340mm
409 3840x2160 59.98*+
410 2048x1536 59.95
411 1920x1440 59.90
412 1600x1200 59.87
413 1440x1080 59.99
414 1400x1050 59.98
415 1280x1024 59.89
416 1280x960 59.94
417 1152x864 59.96
418 1024x768 59.92
419 800x600 59.86
420 640x480 59.38 </computeroutput></screen>
421
422 <para>
423 From the output we can see the monitor is identified
424 <literal>DP-1</literal>. Select a suitable resolution from the
425 outputed list, for example <literal>1920x1440</literal>. Then
426 as the &root; user, create a configuration file for the Xorg server:
427 </para>
428
429<screen role="root"><userinput>cat &gt; /etc/X11/xorg.conf.d/monitor-DP-1.conf &lt;&lt; "EOF"
430<literal>Section "Monitor"
431 Identifier "DP-1"
432 Option "PerferredMode" "1920x1440"
433EndSection</literal>
434EOF</userinput></screen>
435
436 <para>
437 Sometimes <command>xrandr</command> may fail to detect some
438 resolution settings supported by the monitor. It usually happens
439 with virtual monitors of virtual machine managers like
440 <xref linkend='qemu'/> or VMWare: a virtual monitor actually
441 supports all pairs of integers in a range as the resolution, but
442 <command>xrandr</command> will only list a few. To use a
443 resolution not listed by <command>xrandr</command>, first run
444 <command>cvt</command> to get the mode line for the resolution.
445 For example:
446 </para>
447
448 <screen><userinput>cvt 1600 900</userinput>
449<computeroutput><literal># 1600x900 59.95 Hz (CVT 1.44M9) hsync: 55.99 kHz; pclk: 118.25 MHz
450Modeline "1600x900_60.00" 118.25 1600 1696 1856 2112 900 903 908 934 -hsync +vsync</literal></computeroutput></screen>
451
452 <para>
453 As the &root; user, create a Xorg server configuration file
454 containing this mode line, and specify the mode as preferred mode:
455 </para>
456
457<screen role="root"><userinput>cat &gt; /etc/X11/xorg.conf.d/monitor-DP-1.conf &lt;&lt; "EOF"
458<literal>Section "Monitor"
459 Identifier "DP-1"
460 Modeline "1600x900_60.00" 118.25 1600 1696 1856 2112 900 903 908 934 -hsync +vsync
461 Option "PerferredMode" "1600x900_60.00"
462EndSection</literal>
463EOF</userinput></screen>
464
465 <para>
466 Some high-end LCD monitors support a refresh rate higher than 100 Hz
467 but <command>xrandr</command> may fail to recognize the supported
468 refresh rate and use 60 Hz instead. This issue would prevent you
469 from utilizing the full capability of the monitor, and may cause
470 the screen to flicker or show <quote>artifacts</quote> like meshes
471 or grids. To resolve the issue, again use <command>cvt</command>
472 to get the mode line with a custom refresh rate:
473 </para>
474
475 <screen><userinput>cvt 3840 2160 144</userinput>
476<computeroutput><literal># 3840x2160 143.94 Hz (CVT) hsync: 338.25 kHz; pclk: 1829.25 MHz
477Modeline "3840x2160_144.00" 1829.25 3840 4200 4624 5408 2160 2163 2168 2350 -hsync +vsync</literal></computeroutput></screen>
478
479 <para>
480 Then paste it into the Xorg server configuration file and set it
481 as the preferred mode.
482 </para>
483
484 <para>
485 Another common setup is having multiple server layouts for use in
486 different environments. Though the server will automatically detect the
487 presence of another monitor, it may get the order incorrect:
488 </para>
489
490<screen role="root"><userinput>cat &gt; /etc/X11/xorg.conf.d/server-layout.conf &lt;&lt; "EOF"
491<literal>Section "ServerLayout"
492 Identifier "DefaultLayout"
493 Screen 0 "Screen0" 0 0
494 Screen 1 "Screen1" LeftOf "Screen0"
495 Option "Xinerama"
496EndSection</literal>
497EOF</userinput></screen>
498
499 <para>
500 With modern Xorg, little or no additional graphic card configuration
501 is necessary. If you should need extra options passed to your video
502 driver, for instance, you could use something like the following
503 (again, executed as the &root; user):
504 </para>
505
506<screen role="root"><userinput>cat &gt; /etc/X11/xorg.conf.d/videocard-0.conf &lt;&lt; "EOF"
507<literal>Section "Device"
508 Identifier "Videocard0"
509 Driver "modesetting"
510 VendorName "Videocard vendor"
511 BoardName "ATI Radeon 7500"
512 Option "AccelMethod" "none"
513EndSection</literal>
514EOF</userinput></screen>
515
516 <para>
517 Some graphics cards may have problems with screen tearing now that Xorg
518 has moved to using the modesetting driver in BLFS. To resolve the screen
519 tearing problems, create a configuration file that enables the TearFree
520 option. Note that you must have the Tearfree patch applied from
521 <xref role="nodep" linkend="xorg-server"/> for this to function
522 properly.
523 </para>
524
525<screen role="root"><userinput>cat &gt; /usr/share/X11/xorg.conf.d/20-tearfree.conf &lt;&lt; "EOF"
526<literal>Section "Device"
527 Identifier "Graphics Adapter"
528 Driver "modesetting"
529 Option "TearFree" "true"
530EndSection</literal>
531EOF</userinput></screen>
532
533 </sect3>
534 </sect2>
535</sect1>
Note: See TracBrowser for help on using the repository browser.