source: x/installing/dri.xml@ f45b1953

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 initial-import 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 reorg 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 f45b1953 was f45b1953, checked in by Mark Hymers <markh@…>, 22 years ago

Initial revision

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

  • Property mode set to 100644
File size: 11.4 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.
88</para>
89</sect2>
90
91<sect2><title>Building the DRI</title>
92<para>DRI drivers will be built in a separate directory from the main XFree86
93sources. To access the proper files, link the files to a build directoy:
94<screen>cd /usr/src/DRI-CVS
95ln -s xc XFree40
96mkdir build
97cd build
98lndir -silent -ignorelinks ../XFree40</screen>
99</para>
100
101<para>Now update the <filename>host.def</filename> file. The only change
102necessary is to uncomment the <parameter>BuildXF86DRM</parameter> define.
103Sinece DRI is still in Beta, changing the optimizations is not recommended.
104</para>
105<para>
106If you do not want to build all the drivers, change
107<parameter>XF86CardDrivers</parameter> and <parameter>DriDrivers</parameter>
108to eliminate those that you don't want.
109</para>
110<para>Ensure the Linux 2.4.x headers are available in
111<filename>/usr/src/linux/include/linux</filename>.</para>
112
113<para>You will also need to create <filename>modversions.h</filename> for the
114drivers to compile correctly.
115<screen>touch /lib/modules/2.4.18/build/include/linux/modversions.h</screen>
116Of course you need to change the version 2.4.18 to your current kernel version
117number.</para>
118
119
120<sect3><title>Compiling the DRI</title>
121<para>Build the system by
122<screen>cd xc &amp;&amp;
123make World 2&gt;&amp;1 | tee World.log</screen></para>
124
125<warning><para>Do not use -j option for <filename>make</filename></para>
126</warning>
127
128<para>Using <userinput>less</userinput> or an editor, examine
129<filename>World.log</filename>
130for errors by searching for the pattern ***. Also examine the directory
131<filename>/usr/src/DRI-CVS/build/xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/</filename>
132for the drivers you built:</para>
133<itemizedlist>
134<listitem><para>For the 3dfx Voodoo, you should see <filename>tdfx.o</filename>
135</para></listitem>
136<listitem><para>For the Matrox G200/G400, you should see i
137<filename>mga.o</filename>
138</para></listitem>
139<listitem><para>For the ATI Rage 128, you should see <filename>r128.o</filename>
140</para></listitem>
141<listitem><para>For the ATI Radeon, you should see <filename>radeon.o</filename>
142</para></listitem>
143<listitem><para>For the Intel i81x, you should see <filename>i810.o</filename>
144</para></listitem>
145<listitem><para>For the Intel i830, you should see <filename>i830.o</filename>
146</para></listitem>
147</itemizedlist>
148
149</sect3>
150</sect2>
151
152<sect2><title>Installing the DRI drivers</title>
153<para>Copy the kernel module that for your video card to
154<filename>/lib/modules/2.4.x/kernel/drivers/char/drm/</filename>
155then run <userinput>modprobe &lt;module name&gt;</userinput>.</para>
156
157<note><para>Some DRI modules require that the agpgart module be loaded first,
158if it is not compiled into the kernel.</para></note>
159
160<para>Now install the other portions of the DRI that were built and ensure the
161libraries can be found correctly
162<screen>make install &amp;&amp;
163ldconfig</screen></para>
164
165<para>
166If you use X locale information, do the following
167<screen>cd /usr/src/DRI-CVS/build/xc/nls
168../config/util/xmkmf -a
169make
170make install</screen></para>
171
172</sect2>
173
174<sect2><title>Configuring XFree86 for the DRI</title>
175
176<para>On the DRI web site,
177<userinput><ulink url="http://dri.sourceforge.net"/></userinput>,
178in the resources section, you'll find example
179<filename>XF86Config</filename>
180files for a number of graphics cards. These configuration files also setup
181DRI options so it's highly recommended that you look at these examples.
182</para>
183
184<para>Generally you can start with your existing configuration file,
185<filename>/etc/X11/XFConfig</filename>, but if you run into trouble
186you may want to start with a new file as in the basic XFree86 installation.
187</para>
188
189<para>Edit <filename>XF86Config</filename> to ensure
190the following sections are present
191<screen>Section "Module"
192 ...
193# This loads the GLX module
194 Load "glx"
195# This loads the DRI module
196 Load "dri"
197EndSection</screen></para>
198
199<para>If you want all of the users on your system to be able to use
200direct rendering, then use a simple DRI section like this:
201
202<screen>Section "DRI"
203 Mode 0666
204EndSection</screen></para>
205
206<para>Make any other changes for font paths, screen modes, etc., as needed
207and save the configuration file.
208</para>
209
210<note><para>
211DMA-based DRI drivers (that's most DRI drivers) cannot function unless
212bus mastering is enabled for your graphics card. By default, some systems
213don't having bus mastering on. You should enable it in your BIOS.
214</para></note>
215</sect2>
216
217<sect2><title>Testing the DRI installation</title>
218
219<para>Start (or restart) XFree86 with <userinput>startx</userinput>.</para>
220
221<para>
222Check the XFree86 log file, <filename>/var/log/XFree86.0.log</filename>,
223for a statements like
224<screen>(II) R128(0): [drm] installed DRM signal handler
225(II) R128(0): [DRI] installation complete
226(II) R128(0): [drm] Added 128 16384 byte vertex/indirect buffers
227(II) R128(0): [drm] Mapped 128 vertex/indirect buffers
228(II) R128(0): Direct rendering enabled</screen></para>
229
230<para>From an <filename>xterm</filename>, run <userinput>glxinfo</userinput>.
231The output should look something like:
232<screen>name of display: :0.0
233display: :0 screen: 0
234direct rendering: Yes
235server glx vendor string: SGI
236server glx version string: 1.2
237server glx extensions:
238 GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_EXT_import_context
239client glx vendor string: SGI
240client glx version string: 1.2
241client glx extensions:
242 GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_EXT_import_context
243GLX extensions:
244 GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_EXT_import_context
245OpenGL vendor string: VA Linux Systems, Inc.
246OpenGL renderer string: Mesa DRI Rage128 20020221 Pro AGP 1x x86/MMX/SSE
247OpenGL version string: 1.2 Mesa 4.0.2
248OpenGL extensions:
249 GL_ARB_imaging, GL_ARB_multitexture, GL_ARB_texture_env_add,
250 GL_ARB_transpose_matrix, GL_EXT_abgr, GL_EXT_bgra, GL_EXT_blend_color,
251 GL_EXT_blend_minmax, GL_EXT_blend_subtract, GL_EXT_clip_volume_hint,
252 GL_EXT_convolution, GL_EXT_compiled_vertex_array, GL_EXT_histogram,
253 GL_EXT_packed_pixels, GL_EXT_polygon_offset, GL_EXT_rescale_normal,
254 GL_EXT_texture3D, GL_EXT_texture_env_add, GL_EXT_texture_object,
255 GL_EXT_vertex_array, GL_IBM_rasterpos_clip, GL_MESA_window_pos,
256 GL_NV_texgen_reflection, GL_SGI_color_matrix, GL_SGI_color_table
257glu version: 1.3
258glu extensions:
259 GLU_EXT_nurbs_tessellator, GLU_EXT_object_space_tess
260
261 visual x bf lv rg d st colorbuffer ax dp st accumbuffer ms cav
262 id dep cl sp sz l ci b ro r g b a bf th cl r g b a ns b eat
263----------------------------------------------------------------------
2640x23 16 tc 0 16 0 r y . 5 6 5 0 0 16 0 0 0 0 0 0 0 None
2650x24 16 tc 0 16 0 r y . 5 6 5 0 0 16 8 0 0 0 0 0 0 Slow
2660x25 16 tc 0 16 0 r y . 5 6 5 0 0 16 0 16 16 16 0 0 0 Slow
2670x26 16 tc 0 16 0 r y . 5 6 5 0 0 16 8 16 16 16 0 0 0 Slow
2680x27 16 dc 0 16 0 r y . 5 6 5 0 0 16 0 0 0 0 0 0 0 None
2690x28 16 dc 0 16 0 r y . 5 6 5 0 0 16 8 0 0 0 0 0 0 Slow
2700x29 16 dc 0 16 0 r y . 5 6 5 0 0 16 0 16 16 16 0 0 0 Slow
2710x2a 16 dc 0 16 0 r y . 5 6 5 0 0 16 8 16 16 16 0 0 0 Slow</screen>
272</para>
273
274<para>Run <userinput>ldd /usr/X11R6/bin/glxgears</userinput> and look for
275the <filename>libGL</filename> library. For example
276<screen> libGL.so.1 =&gt; /usr/lib/libGL.so.1 (0x4001b000)
277 libXext.so.6 =&gt; /usr/X11R6/lib/libXext.so.6 (0x40089000)
278 libX11.so.6 =&gt; /usr/X11R6/lib/libX11.so.6 (0x40097000)
279 libpthread.so.0 =&gt; /lib/libpthread.so.0 (0x40158000)
280 libm.so.6 =&gt; /lib/libm.so.6 (0x4016e000)
281 libc.so.6 =&gt; /lib/libc.so.6 (0x40192000)
282 libdl.so.2 =&gt; /lib/libdl.so.2 (0x402c6000)
283 libgcc_s.so.1 =&gt; /lib/libgcc_s.so.1 (0x402ca000)
284 /lib/ld-linux.so.2 =&gt; /lib/ld-linux.so.2 (0x40000000)</screen></para>
285
286<para>You can also run the test program <userinput>glxgears</userinput>.
287This program brings up a window with three gears turning. The
288<filename>xterm</filename> will display how many frames were drawn every
289five seconds so this is a reasonable benchmark. The window is scalable, and
290the frames drawn per second is highly dependent on the size of the window.
291</para>
292
293<para>
294For troubleshooting problems, check the DRI Users Guide at
295<userinput><ulink url="http://dri.sourceforge.net/doc/DRIuserguide.html"/></userinput>.
296</para>
297</sect2>
298</sect1>
299
Note: See TracBrowser for help on using the repository browser.