source: x/installing/dri.xml@ 7db5869

10.0 10.1 11.0 11.1 11.2 11.3 12.0 12.1 6.0 6.1 6.2 6.2.0 6.2.0-rc1 6.2.0-rc2 6.3 6.3-rc1 6.3-rc2 6.3-rc3 7.10 7.4 7.5 7.6 7.6-blfs 7.6-systemd 7.7 7.8 7.9 8.0 8.1 8.2 8.3 8.4 9.0 9.1 basic bdubbs/svn elogind gnome kde5-13430 kde5-14269 kde5-14686 kea ken/TL2024 ken/inkscape-core-mods ken/tuningfonts krejzi/svn lazarus lxqt nosym perl-modules plabs/newcss plabs/python-mods python3.11 qt5new rahul/power-profiles-daemon renodr/vulkan-addition systemd-11177 systemd-13485 trunk upgradedb v1_0 v5_0 v5_0-pre1 v5_1 v5_1-pre1 xry111/intltool xry111/llvm18 xry111/soup3 xry111/test-20220226 xry111/xf86-video-removal
Last change on this file since 7db5869 was 7db5869, checked in by Bruce Dubbs <bdubbs@…>, 22 years ago

Fix typos in XFree86, add a warning about compiling in a chroot window, and changed XF86Config to XF86Config-4.

git-svn-id: svn://svn.linuxfromscratch.org/BLFS/trunk/BOOK@195 af4574ff-66df-0310-9fd7-8a98e5e911e0

  • Property mode set to 100644
File size: 11.6 KB
Line 
1<sect1 id="x-installing-dri">
2<?dbhtml filename="dri.html" dir="x"?>
3<title>Adding Direct Rendering Infrastructure (DRI) Support to XFree86</title>
4
5<para><screen>DRI installation depends on: <xref linkend="cvs"/></screen>
6</para>
7
8<para>The DRI provides 3D graphics hardware acceleration for the XFree86
9project.</para>
10
11<note><para>These instructions were developed from the DRI Compilation Guide at
12<userinput><ulink url="http://www.xfree86.org/4.2.0/DRIcomp.html"/></userinput>
13and modified for more recent versions of the DRI.
14</para></note>
15
16<para>
17The DRI drivers generally work on systems with Intel or AMD CPUs. However,
18there is limited support for Alpha and PowerPC support underway.
19</para>
20
21<para>
22DRI support is currently in beta status. The following video cards are
23presently supported:</para>
24<itemizedlist>
25 <listitem><para>3dfx (Voodoo 5 5500, Voodoo4 4500, Voodoo3 3500 TV,
26 Voodoo3 3000 {AGP, PCI}, Voodoo3 2000 {AGP, PCI}, Voodoo Banshee,
27 Velocity 100/200)
28 </para></listitem>
29 <listitem><para>Matrox (G200, G400)
30 </para></listitem>
31 <listitem><para>Intel Motherboard Chipsets (i810, i810-dc100, i810e, i815,
32 i830)
33 </para></listitem>
34 <listitem><para>ATI (Rage {128, Fury, Magnum}, XPERT {2000, 128, 99},
35 All-in-Wonder 128, Radeon {SDR AGP, DDR AGP, 32MB SDR PCI}
36 </para></listitem>
37 <listitem><para>3Dlabs (Oxygen 2000) [No longer actively being developed]
38 </para></listitem>
39</itemizedlist>
40
41<para>
42For 3dfx Voodoo3 hardware, you'll also need Glide3 headers and runtime library.
43These can be obtained from
44<userinput><ulink url="http://linux.3dfx.com"/></userinput>.
45</para>
46
47<sect2><title>Updating the Kernel</title>
48<para>
49In the kernel configuration "Character Devices" section,
50if you havn't already done so, <emphasis>enable</emphasis> Direct Rendering
51Manager. Also select the type of video card(s) that you want to support as
52a <emphasis>module</emphasis>. This is necessary to ensure the kernel
53has the proper linkages when the DRI code is compiled.
54</para>
55<para>If necessary, recompile the kernel with
56<screen>make dep &amp;&amp;
57make bzImage&amp;&amp;
58make modules &amp;&amp;
59make modules_install</screen>
60</para>
61<para>
62Copy <filename>/usr/src/linux/arch/i386/boot/bzImage</filename> and
63<filename>/usr/src/linux/System.map</filename> to
64<filename>/boot</filename>, edit <filename>/etc/lilo.conf</filename>
65appropriately and run <userinput>lilo</userinput>.
66</para>
67</sect2>
68
69<sect2>
70<title>Getting the DRI driver source code</title>
71<para>
72Get the DRI sources by
73<screen>cd /usr/src
74mkdir DRI-CVS
75cd DRI-CVS
76cvs -d:pserver:anonymous@cvs.dri.sourceforge.net:/cvsroot/dri login
77 (hit ENTER when prompted for a password)
78cvs -z3 -d:pserver:anonymous@cvs.dri.sourceforge.net:/cvsroot/dri co xc</screen>
79</para>
80<note><para>The -z3 flag causes compression to be used in order to reduce the
81download time.</para></note>
82
83<para>Since, the DRI drivers are beta, you can update the sources by
84<screen>cd /usr/src/DRI-CVS
85cvs -z3 update -dA xc</screen></para>
86
87<para>There is no need to download or install the Mesa source files separately.
88The download is about 99Mb and the build size 477Mb.
89</para>
90</sect2>
91
92<sect2><title>Building the DRI</title>
93<para>DRI drivers will be built in a separate directory from the main XFree86
94sources. To access the proper files, link the files to a build directoy:
95<screen>cd /usr/src/DRI-CVS
96ln -s xc XFree40
97mkdir build
98cd build
99lndir -silent -ignorelinks ../XFree40</screen>
100</para>
101
102<para>Now update the <filename>host.def</filename> file. The only change
103necessary is to uncomment the <parameter>BuildXF86DRM</parameter> define.
104Since DRI is still in Beta, changing the optimizations is not recommended.
105</para>
106<para>
107If you do not want to build all the drivers, change
108<parameter>XF86CardDrivers</parameter> and <parameter>DriDrivers</parameter>
109to eliminate those that you don't want.
110</para>
111<para>Ensure the Linux 2.4.x headers are available in
112<filename>/usr/src/linux/include/linux</filename>.</para>
113
114<para>You will also need to create <filename>modversions.h</filename> for the
115drivers to compile correctly.
116<screen>touch /lib/modules/2.4.19/build/include/linux/modversions.h</screen>
117Of course you need to change the version 2.4.19 to your current kernel version
118number.</para>
119
120
121<sect3><title>Compiling the DRI</title>
122
123<note><para>
124If you build XFree86 in a chroot environment, make sure the kernel version of the base
125system and the target system are the same.
126</para></note>
127
128<warning><para>Do not use -j option for <filename>make</filename></para>
129</warning>
130
131<para>Build the system by
132<screen>cd xc &amp;&amp;
133make World 2&gt;&amp;1 | tee World.log</screen></para>
134
135<para>Using <userinput>less</userinput> or an editor, examine
136<filename>World.log</filename>
137for errors by searching for the pattern ***. Also examine the directory
138<filename>/usr/src/DRI-CVS/build/xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/</filename>
139for the drivers you built:</para>
140<itemizedlist>
141<listitem><para>For the 3dfx Voodoo, you should see <filename>tdfx.o</filename>
142</para></listitem>
143<listitem><para>For the Matrox G200/G400, you should see
144<filename>mga.o</filename>
145</para></listitem>
146<listitem><para>For the ATI Rage 128, you should see <filename>r128.o</filename>
147</para></listitem>
148<listitem><para>For the ATI Radeon, you should see <filename>radeon.o</filename>
149</para></listitem>
150<listitem><para>For the Intel i81x, you should see <filename>i810.o</filename>
151</para></listitem>
152<listitem><para>For the Intel i830, you should see <filename>i830.o</filename>
153</para></listitem>
154</itemizedlist>
155
156</sect3>
157</sect2>
158
159<sect2><title>Installing the DRI drivers</title>
160<para>Copy the kernel module that for your video card to
161<filename>/lib/modules/2.4.x/kernel/drivers/char/drm/</filename>
162then run <userinput>modprobe &lt;module name&gt;</userinput>.</para>
163
164<note><para>Some DRI modules require that the agpgart module be loaded first,
165if it is not compiled into the kernel.</para></note>
166
167<para>Now install the other portions of the DRI that were built and ensure the
168libraries can be found correctly
169<screen>make install &amp;&amp;
170ldconfig</screen></para>
171
172<para>
173If you use X locale information, do the following
174<screen>cd /usr/src/DRI-CVS/build/xc/nls
175../config/util/xmkmf -a
176make
177make install</screen></para>
178
179</sect2>
180
181<sect2><title>Configuring XFree86 for the DRI</title>
182
183<para>On the DRI web site,
184<userinput><ulink url="http://dri.sourceforge.net"/></userinput>,
185in the resources section, you'll find example
186<filename>XF86Config</filename>
187files for a number of graphics cards. These configuration files also setup
188DRI options so it's highly recommended that you look at these examples.
189</para>
190
191<para>Generally you can start with your existing configuration file,
192<filename>/etc/X11/XFConfig-4</filename>, but if you run into trouble
193you may want to start with a new file as in the basic XFree86 installation.
194</para>
195
196<para>Edit <filename>XF86Config-4</filename> to ensure
197the following sections are present
198<screen>Section "Module"
199 ...
200# This loads the GLX module
201 Load "glx"
202# This loads the DRI module
203 Load "dri"
204EndSection</screen></para>
205
206<para>If you want all of the users on your system to be able to use
207direct rendering, then use a simple DRI section like this:
208
209<screen>Section "DRI"
210 Mode 0666
211EndSection</screen></para>
212
213<para>Make any other changes for font paths, screen modes, etc., as needed
214and save the configuration file.
215</para>
216
217<note><para>
218DMA-based DRI drivers (that's most DRI drivers) cannot function unless
219bus mastering is enabled for your graphics card. By default, some systems
220don't having bus mastering on. You should enable it in your BIOS.
221</para></note>
222</sect2>
223
224<sect2><title>Testing the DRI installation</title>
225
226<para>Start (or restart) XFree86 with <userinput>startx</userinput>.</para>
227
228<para>
229Check the XFree86 log file, <filename>/var/log/XFree86.0.log</filename>,
230for a statements like
231<screen>(II) R128(0): [drm] installed DRM signal handler
232(II) R128(0): [DRI] installation complete
233(II) R128(0): [drm] Added 128 16384 byte vertex/indirect buffers
234(II) R128(0): [drm] Mapped 128 vertex/indirect buffers
235(II) R128(0): Direct rendering enabled</screen></para>
236
237<para>From an <filename>xterm</filename>, run <userinput>glxinfo</userinput>.
238The output should look something like:
239<screen>name of display: :0.0
240display: :0 screen: 0
241direct rendering: Yes
242server glx vendor string: SGI
243server glx version string: 1.2
244server glx extensions:
245 GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_EXT_import_context
246client glx vendor string: SGI
247client glx version string: 1.2
248client glx extensions:
249 GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_EXT_import_context
250GLX extensions:
251 GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_EXT_import_context
252OpenGL vendor string: VA Linux Systems, Inc.
253OpenGL renderer string: Mesa DRI Rage128 20020221 Pro AGP 1x x86/MMX/SSE
254OpenGL version string: 1.2 Mesa 4.0.2
255OpenGL extensions:
256 GL_ARB_imaging, GL_ARB_multitexture, GL_ARB_texture_env_add,
257 GL_ARB_transpose_matrix, GL_EXT_abgr, GL_EXT_bgra, GL_EXT_blend_color,
258 GL_EXT_blend_minmax, GL_EXT_blend_subtract, GL_EXT_clip_volume_hint,
259 GL_EXT_convolution, GL_EXT_compiled_vertex_array, GL_EXT_histogram,
260 GL_EXT_packed_pixels, GL_EXT_polygon_offset, GL_EXT_rescale_normal,
261 GL_EXT_texture3D, GL_EXT_texture_env_add, GL_EXT_texture_object,
262 GL_EXT_vertex_array, GL_IBM_rasterpos_clip, GL_MESA_window_pos,
263 GL_NV_texgen_reflection, GL_SGI_color_matrix, GL_SGI_color_table
264glu version: 1.3
265glu extensions:
266 GLU_EXT_nurbs_tessellator, GLU_EXT_object_space_tess
267
268 visual x bf lv rg d st colorbuffer ax dp st accumbuffer ms cav
269 id dep cl sp sz l ci b ro r g b a bf th cl r g b a ns b eat
270----------------------------------------------------------------------
2710x23 16 tc 0 16 0 r y . 5 6 5 0 0 16 0 0 0 0 0 0 0 None
2720x24 16 tc 0 16 0 r y . 5 6 5 0 0 16 8 0 0 0 0 0 0 Slow
2730x25 16 tc 0 16 0 r y . 5 6 5 0 0 16 0 16 16 16 0 0 0 Slow
2740x26 16 tc 0 16 0 r y . 5 6 5 0 0 16 8 16 16 16 0 0 0 Slow
2750x27 16 dc 0 16 0 r y . 5 6 5 0 0 16 0 0 0 0 0 0 0 None
2760x28 16 dc 0 16 0 r y . 5 6 5 0 0 16 8 0 0 0 0 0 0 Slow
2770x29 16 dc 0 16 0 r y . 5 6 5 0 0 16 0 16 16 16 0 0 0 Slow
2780x2a 16 dc 0 16 0 r y . 5 6 5 0 0 16 8 16 16 16 0 0 0 Slow</screen>
279</para>
280
281<para>Run <userinput>ldd /usr/X11R6/bin/glxgears</userinput> and look for
282the <filename>libGL</filename> library. For example
283<screen> libGL.so.1 =&gt; /usr/lib/libGL.so.1 (0x4001b000)
284 libXext.so.6 =&gt; /usr/X11R6/lib/libXext.so.6 (0x40089000)
285 libX11.so.6 =&gt; /usr/X11R6/lib/libX11.so.6 (0x40097000)
286 libpthread.so.0 =&gt; /lib/libpthread.so.0 (0x40158000)
287 libm.so.6 =&gt; /lib/libm.so.6 (0x4016e000)
288 libc.so.6 =&gt; /lib/libc.so.6 (0x40192000)
289 libdl.so.2 =&gt; /lib/libdl.so.2 (0x402c6000)
290 libgcc_s.so.1 =&gt; /lib/libgcc_s.so.1 (0x402ca000)
291 /lib/ld-linux.so.2 =&gt; /lib/ld-linux.so.2 (0x40000000)</screen></para>
292
293<para>You can also run the test program <userinput>glxgears</userinput>.
294This program brings up a window with three gears turning. The
295<filename>xterm</filename> will display how many frames were drawn every
296five seconds so this is a reasonable benchmark. The window is scalable, and
297the frames drawn per second is highly dependent on the size of the window.
298</para>
299
300<para>
301For troubleshooting problems, check the DRI Users Guide at
302<userinput><ulink url="http://dri.sourceforge.net/doc/DRIuserguide.html"/></userinput>.
303</para>
304</sect2>
305</sect1>
306
Note: See TracBrowser for help on using the repository browser.