/[gentoo]/xml/htdocs/doc/en/dri-howto.xml
Gentoo

Contents of /xml/htdocs/doc/en/dri-howto.xml

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.15 - (hide annotations) (download) (as text)
Sun Aug 1 10:25:10 2004 UTC (10 years, 8 months ago) by swift
Branch: MAIN
Changes since 1.14: +16 -184 lines
File MIME type: application/xml
#54661 - CVS compile instructions are maintained by the project itself - Yay!!!

1 peesh 1.1 <?xml version="1.0" encoding="UTF-8"?>
2 swift 1.15 <!-- $Header: /var/cvsroot/gentoo/xml/htdocs/doc/en/dri-howto.xml,v 1.14 2004/06/21 16:41:48 neysx Exp $ -->
3 peesh 1.1 <!DOCTYPE guide SYSTEM "/dtd/guide.dtd">
4    
5     <guide link="/doc/en/dri-howto.xml">
6     <title>Hardware 3D Acceleration Guide</title>
7     <author title="Author">
8 swift 1.8 <mail link="spyderous@gentoo.org">Donnie Berkholz</mail>
9 peesh 1.1 </author>
10     <author title="Editor">
11 swift 1.8 <mail link="peesh@gentoo.org">Jorge Paulo</mail>
12 peesh 1.1 </author>
13    
14 swift 1.8 <abstract>
15     This document is a guide to getting 3D acceleration working using XFree-DRM
16     with XFree86 in Gentoo Linux.
17     </abstract>
18 peesh 1.1
19 swift 1.12 <license/>
20    
21 swift 1.15 <version>1.0.4</version>
22     <date>August 01, 2004</date>
23 peesh 1.1
24     <chapter>
25 swift 1.8 <title>Introduction</title>
26     <section>
27     <title>What is hardware 3D acceleration and why do I want it?</title>
28     <body>
29    
30     <p>
31     With hardware 3D acceleration, three-dimensional rendering uses the graphics
32     processor on your video card instead of taking up valuable CPU resources
33     drawing 3D images. It's also referred to as "hardware acceleration" instead of
34     "software acceleration" because without this 3D acceleration your CPU is forced
35     to draw everything itself using the Mesa software rendering libraries, which
36     takes up quite a bit of processing power. While XFree86 typically supports 2D
37     hardware acceleration, it often lacks hardware 3D acceleration.
38     Three-dimensional hardware acceleration is valuable in situations requiring
39     rendering of 3D objects such as games, 3D CAD and modeling.
40     </p>
41    
42     </body>
43     </section>
44     <section>
45     <title>How do I get hardware 3D acceleration?</title>
46     <body>
47    
48     <p>
49     In many cases, both binary and open-source drivers exist. Open-source drivers
50     are preferable since we're using Linux and open source is one of its underlying
51     principles. Sometimes, binary drivers are the only option, like with nVidia's
52     cards. Binary drivers include media-video/nvidia-kernel and
53     media-video/nvidia-glx for nVidia cards, media-video/mgavideo for Matrox cards
54     and media-video/ati-drivers for ATI cards. Other open-source drivers include
55     media-video/kyro-kernel for KyroII cards and media-video/ati-gatos for ATI
56     cards, which aim to support ATI's video capabilities more fully.
57     </p>
58    
59     </body>
60     </section>
61     <section>
62     <title>What is DRI?</title>
63     <body>
64    
65     <p>
66     The Direct Rendering Infrastructure (<uri
67     link="http://dri.sourceforge.net">dri.sourceforge.net</uri>), also known as the
68     DRI, is a framework for allowing direct access to graphics hardware in a safe
69     and efficient manner. It includes changes to the X server, to several client
70     libraries and to the kernel. The first major use for the DRI is to create fast
71     OpenGL implementations.
72     </p>
73    
74     </body>
75     </section>
76     <section>
77     <title>What is XFree-DRM and how does it relate to regular XFree86?</title>
78     <body>
79    
80     <p>
81     XFree-DRM is an <e>enhancement</e> to XFree86 that adds 3D acceleration for
82     cards by adding the kernel module necessary for direct rendering.
83     </p>
84    
85     </body>
86     </section>
87     <section>
88     <title>Purpose</title>
89     <body>
90    
91     <p>
92     This guide is for people who can't get direct rendering working with just
93     XFree. XFree-DRM works for 3dfx, gamma, i8x0, matrox, rage128, radeon, mach64
94     (as of xfree-drm-4.3.0-r7) and sis300 series drivers. Since the 2.4 kernels'
95     Direct Rendering Manager (DRM) doesn't support XFree 4.3, the xfree-drm package
96     is needed. If you're using a 2.6 kernel, its DRM supports XFree 4.3; Gentoo's
97     XFree-DRM package is not yet working on 2.6 kernels. See the <uri
98     link="http://dri.sourceforge.net">DRI homepage</uri> for more info and
99     documentation.
100     </p>
101    
102     </body>
103     </section>
104     <section>
105     <title>Feedback</title>
106     <body>
107    
108     <p>
109     With suggestions, questions, etc., e-mail <mail
110     link="spyderous@gentoo.org">Donnie Berkholz</mail>.
111     </p>
112    
113     </body>
114     </section>
115 peesh 1.1 </chapter>
116    
117 swift 1.8 <chapter>
118     <title>Install XFree86 and configure your kernel</title>
119     <section>
120     <title>Install XFree86</title>
121     <body>
122 peesh 1.1
123 swift 1.9 <pre caption="Installing XFree86">
124 peesh 1.1 # <i>emerge x11-base/xfree</i>
125 swift 1.8 </pre>
126 peesh 1.1
127 swift 1.8 </body>
128     </section>
129     <section>
130     <title>Configure your kernel</title>
131     <body>
132    
133     <p>
134     Probe for your chipset and enable just that one.
135     </p>
136 peesh 1.1
137 swift 1.9 <pre caption="Checking your AGP chipset">
138 peesh 1.1 # <i>emerge pciutils; lspci | grep AGP</i>
139     # <i>00:01.0 PCI bridge: Intel Corp. 440BX/ZX/DX - 82443BX/ZX/DX AGP bridge (rev 03)</i>
140     <codenote>Your output may not match the above due to different hardware.</codenote>
141 swift 1.8 </pre>
142    
143     <p>
144     Most, if not all, kernels should have these options. This was configured using
145     gentoo-sources-2.4.20-r5.
146     </p>
147    
148 swift 1.9 <pre caption="Configuring the kernel">
149 peesh 1.1 # <i>ls -l /usr/src/linux </i>
150     lrwxrwxrwx 1 root root 22 May 29 18:20 /usr/src/linux -> linux-2.4.20-gentoo-r5
151 cam 1.13 <codenote>Make sure /usr/src/linux links to your current kernel.</codenote>
152 peesh 1.1 # <i>cd /usr/src/linux</i>
153     # <i>make menuconfig</i>
154 swift 1.8 </pre>
155    
156 swift 1.9 <pre caption="make menuconfig options">
157 peesh 1.1 Processor type and features ---&gt;
158 swift 1.8 &lt;*&gt; MTRR (Memory Type Range Register) support
159 peesh 1.1 Character devices ---&gt;
160 dertobi123 1.11 &lt;M&gt; /dev/agpgart (AGP Support)
161     [*] Intel 440LX/BX/GX and I815/I820/I830M/I830MP/I840/I845/I850/I860 support
162 peesh 1.1 <codenote>Enable your chipset instead of the above.</codenote>
163 swift 1.8 [ ] Direct Rendering Manager (XFree86 DRI support)
164     </pre>
165 peesh 1.1
166 swift 1.8 <p>
167     Make sure the Direct Rendering Manager (DRM) is <e>off</e>. The XFree-DRM
168     package will provide its own. The 2.4 kernel's version is for XFree 4.2.
169     </p>
170    
171     </body>
172     </section>
173     <section>
174     <title>Compile and install your kernel</title>
175     <body>
176 peesh 1.1
177 swift 1.9 <pre caption="Compiling and installing kernel">
178 peesh 1.1 # <i>make dep &amp;&amp; make clean bzImage modules modules_install</i>
179     # <i>mount /boot</i>
180     # <i>cp arch/i386/boot/bzImage /boot</i>
181 swift 1.8 </pre>
182    
183     <p>
184     If you want your kernel to be named something other than bzImage, be sure to
185     copy to /boot/yourname instead. Don't forget to set up grub.conf or lilo.conf
186     and run /sbin/lilo if you use LILO.
187     </p>
188    
189     </body>
190     </section>
191 peesh 1.1 </chapter>
192    
193 swift 1.8 <chapter>
194     <title>Install XFree-DRM and configure direct rendering</title>
195     <section>
196     <title>Install XFree-DRM</title>
197     <body>
198 peesh 1.1
199 swift 1.9 <pre caption="Installing XFree-DRM">
200 peesh 1.1 # <i>ACCEPT_KEYWORDS="~x86" emerge xfree-drm</i>
201 swift 1.8 </pre>
202 peesh 1.1
203 swift 1.8 </body>
204     </section>
205     <section>
206     <title>Configure XF86Config</title>
207     <body>
208    
209     <p>
210     Open <path>/etc/X11/XF86Config</path> with your favorite text editor and edit
211     it to enable DRI and GLX.
212     </p>
213 peesh 1.1
214 swift 1.9 <pre caption="XF86Config">
215 peesh 1.1 ...
216     Section "Module"
217 swift 1.8 Load "dri"
218     Load "glx"
219     ...
220 peesh 1.1 EndSection
221     ...
222     Section "Device"
223 swift 1.8 Driver "radeon"
224     ...
225 peesh 1.1 EndSection
226     ...
227 swift 1.7 Section "dri"
228 swift 1.8 Mode 0666
229 peesh 1.1 EndSection
230 swift 1.8 </pre>
231    
232     <p>
233     If you are using a different driver, replace "radeon" with yours.
234     </p>
235    
236     </body>
237     </section>
238 peesh 1.1 </chapter>
239    
240 swift 1.8 <chapter>
241     <title>Test 3D acceleration</title>
242     <section>
243     <title>Reboot to the new kernel</title>
244     <body>
245    
246     <p>
247     Reboot your computer to your new kernel. It's time to see if you have direct
248     rendering and how good it is.
249     </p>
250 peesh 1.1
251 swift 1.9 <pre caption="Testing rendering">
252 peesh 1.1 # <i>startx</i>
253     <codenote>No need to load modules for your driver or agpgart, if you compiled agpgart as a module.</codenote>
254     <codenote>They will be loaded automatically.</codenote>
255     # <i>glxinfo | grep rendering</i>
256     direct rendering: Yes
257     <codenote>If it says "No," you don't have 3D acceleration.</codenote>
258     # <i>glxgears</i>
259 swift 1.10 <codenote>Test your frames per second (FPS) at the default size. The number should be </codenote>
260     <codenote>significantly higher than before installing xfree-drm. Do this while the CPU is as idle as possible.</codenote>
261 swift 1.8 </pre>
262    
263     </body>
264     </section>
265 peesh 1.1 </chapter>
266    
267 swift 1.8 <chapter>
268     <title>Using the CVS sources</title>
269     <section>
270     <body>
271    
272     <warn>
273     Don't do this if the package worked.
274     </warn>
275    
276     </body>
277     </section>
278     <section>
279     <title>Do you need the CVS?</title>
280     <body>
281    
282     <p>
283     First you have to check whether the xfree-drm package works. If it doesn't and
284     you have checked your logs to verify it's not a configuration error, you might
285     want to consider the CVS sources. There are also daily driver snapshots
286     available if you do not wish to build the full CVS.
287     </p>
288    
289     </body>
290     </section>
291     <section>
292     <title>Do the CVS sources support your card?</title>
293     <body>
294    
295     <p>
296 neysx 1.14 Check the DRI <uri
297     link="http://dri.sourceforge.net/cgi-bin/moin.cgi/Status">supported cards
298     list</uri> to see if the CVS supports your card. Even if it doesn't, but it
299     supports a similar card, try it.
300 swift 1.8 </p>
301    
302 swift 1.15 <!-- I see a couple of 8x AGP stuff on the Internet about vanilla 2.4 kernels;
303     is this now available or not? I've commented it out for the time being,
304     hoping that this doesn't affect us :)
305    
306 swift 1.8 <warn>
307     "Linux 2.4 doesn't support agp 8x, so I had to go find a backport. The backport
308     works .... it doesn't patch quite properly, and it requires 2.4.21 (I've only
309     gotten it to work with vanilla, straight from the tarball (not ebuild)). First
310     go get the 2.4.20-2.4.21 patch from kernel.org .... (then get the patch,) It
311 swift 1.15 was on a mailing list somewhere. It doesn't patch cleanly - - one file fails,
312 swift 1.8 the pci_ids.h file, but if you actually read the file and the reject list, it's
313     very easy to fix. But it does load, and it gives me 1600x1200 with video
314     (although a bit slow b/c of lack of dga) with xfree-drm." (SanityInAnarchy on
315     #gentoo)
316     </warn>
317    
318     <impo>
319     The patch is a little tricky to work with but <uri
320     link="http://www.ussg.iu.edu/hypermail/linux/kernel/0302.2/att-1618/01-agp3.diff.bz2">here's
321     the link</uri>. If you can disable 8X AGP in your BIOS, change it to 4X and you
322     may not need the patch.
323     </impo>
324 swift 1.15 -->
325 swift 1.8
326     </body>
327     </section>
328     <section>
329 swift 1.15 <title>Follow the CVS Instructions</title>
330 swift 1.8 <body>
331    
332     <p>
333 swift 1.15 The DRI project has a document about CVS compiling themselves. Please read <uri
334     link="http://dri.sourceforge.net/cgi-bin/moin.cgi/Building">the document</uri>
335     and follow the instructions up to the <e>Installing for XFree86</e> or
336     <e>Installing for X.org</e> part.
337 swift 1.8 </p>
338    
339     </body>
340     </section>
341     <section>
342     <title>Install the CVS</title>
343     <body>
344    
345     <p>
346     Verify that the DRI kernel module(s) for your system were built:
347     </p>
348 peesh 1.1
349 swift 1.9 <pre caption="Verification">
350 peesh 1.1 # <i>cd ~/DRI-CVS/build/xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel; ls</i>
351 swift 1.8 </pre>
352    
353     <p>
354     For the 3dfx Voodoo, you should see <path>tdfx.o</path>. For the Matrox
355     G200/G400, you should see <path>mga.o</path>. For the ATI Rage 128, you should
356     see <path>r128.o</path>. For the ATI Radeon, you should see
357     <path>radeon.o</path>. For the Intel i810, you should see <path>i810.o</path>.
358     If the DRI kernel module(s) failed to build, you should verify that you're
359     using the right version of the Linux kernel. The most recent kernels are not
360     always supported.
361     </p>
362    
363     <p>
364 swift 1.15 Install over your XFree86 or X.org installation. You may wish to back up xfree
365     or xorg-x11.
366 swift 1.8 </p>
367    
368 swift 1.9 <pre caption="Backing up XFree">
369 swift 1.7 # <i>quickpkg xfree</i>
370     <codenote>This backs up your XFree86 package.</codenote>
371     # <i>make install</i>
372 swift 1.8 </pre>
373    
374     <p>
375     Follow the "Configure XF86Config" section above.
376     </p>
377    
378     <p>
379     To load the appropriate DRM module in your running kernel, copy the kernel
380     module to <path>/lib/modules/`uname -r`/kernel/drivers/char/drm/</path> then
381     run <c>modules-update</c> and restart your X server. If you're not running the
382     kernel you'll be using it in, instead of <c>`uname -r`,</c> use that kernel's
383     name.
384     </p>
385    
386     <warn>
387     Make sure you first unload any older DRI kernel modules that might be already
388     loaded. Note that some DRM modules require that the agpgart module be loaded
389     first.
390     </warn>
391    
392     </body>
393     </section>
394 peesh 1.1 </chapter>
395    
396 swift 1.8 <chapter>
397     <title>Tweak your performance</title>
398     <section>
399     <title>Get the most out of direct rendering</title>
400     <body>
401    
402     <p>
403     A few options may increase performance by up to 30 percent (or more) over the
404     default. Set them in <path>/etc/X11/XF86Config</path>.
405     </p>
406 peesh 1.1
407 swift 1.9 <pre caption="XF86Config">
408 peesh 1.1 Section "Device"
409 swift 1.8 Option "AGPMode" "4"
410     <codenote>This increased FPS from 609 to 618.</codenote>
411     Option "AGPFastWrite" "True"
412     <codenote>This had no measurable effect, but it may increase instability of your computer.</codenote>
413     <codenote>You may also need to set it in your BIOS.</codenote>
414     Option "EnablePageFlip" "True"
415     <codenote>This improved FPS from 618 to 702. It also is "risky" but few people have reported problems.</codenote>
416     ...
417 peesh 1.1 EndSection
418 swift 1.8 </pre>
419    
420     <p>
421     If you want to set even more features, check out the <uri
422     link="http://dri.sourceforge.net/doc/dri_driver_features.phtml">features
423     listing</uri> on the DRI Web site.
424     </p>
425    
426     </body>
427     </section>
428 peesh 1.1 </chapter>
429    
430     <chapter>
431 swift 1.8 <title>Troubleshooting</title>
432     <section>
433     <title>It doesn't work. I just recompiled my kernel or switched to a new one.</title>
434     <body>
435    
436     <p>
437     Whenever you rebuild your kernel or switch to another kernel, you'll have to
438     rebuild the kernel module. Note that you don't need to remerge xfree, but you
439     will need to remerge xfree-drm.
440     </p>
441    
442     </body>
443     </section>
444    
445     <section>
446     <title>It doesn't work. I don't have rendering, and I can't tell why.</title>
447     <body>
448    
449     <p>
450     Try <c>insmod radeon</c> before you start the X server. Also, try building
451     agpgart into the kernel instead of as a module.
452     </p>
453    
454     </body>
455     </section>
456     <section>
457 cam 1.13 <title>When I startx, I get this error: "[drm] failed to load kernel module agpgart"</title>
458 swift 1.8 <body>
459    
460     <p>
461     That's because you compiled agpgart into the kernel instead of as a module.
462     Ignore it unless you're having problems.
463     </p>
464    
465     </body>
466     </section>
467     <section>
468 cam 1.13 <title>Direct rendering doesn't work, and in /var/log/XFree86.0.log I have an error about driver version too low.</title>
469 swift 1.8 <body>
470    
471     <p>
472     You aren't using the xfree-drm driver. Check if you compiled DRM and the driver
473     into the kernel; you shouldn't have.
474     </p>
475    
476     </body>
477     </section>
478     <section>
479     <title>I have a Radeon, and I want TV-Out.</title>
480     <body>
481    
482     <p>
483     Check out ati-gatos drivers. <c>emerge -s gatos</c>.
484     </p>
485    
486     </body>
487     </section>
488     <section>
489     <title>It doesn't work. My card is so incredibly new and cool that it isn't supported at all.</title>
490     <body>
491    
492     <p>
493     Try out the binary drivers. For ati-drivers, a listing is at
494     <uri>http://www.schneider-digital.de/html/download_ati.html</uri>. If those
495     don't support it, use fbdev. It's slow, but it works.
496     </p>
497    
498     </body>
499     </section>
500     <section>
501     <title>I have a PCI card and it doesn't work. Help!</title>
502     <body>
503    
504     <p>
505     In section "Device" enable ForcePCIMode.
506     </p>
507    
508 swift 1.9 <pre caption="Enabling ForcePCIMode">
509 swift 1.8 Option "ForcePCIMode" "True"
510     </pre>
511    
512     </body>
513     </section>
514 peesh 1.1 </chapter>
515    
516 swift 1.8 <chapter>
517     <title>Acknowledgments</title>
518     <section>
519     <body>
520    
521     <ol>
522     <li>
523     Christopher Webber for suggesting a troubleshooting question about changing
524     or recompiling kernels
525     </li>
526     <li>
527     Steve, for suggesting consistency between the cases of dri and DRI in
528     XF86Config
529     </li>
530     </ol>
531 peesh 1.1
532 swift 1.8 </body>
533     </section>
534 swift 1.7 </chapter>
535    
536 swift 1.8 <chapter>
537     <title>References</title>
538     <section>
539     <body>
540    
541     <ol>
542     <li>http://forums.gentoo.org/viewtopic.php?t=46681</li>
543     <li>http://forums.gentoo.org/viewtopic.php?t=29264</li>
544     <li>http://dri.sourceforge.net/</li>
545     <li>http://www.retinalburn.net/linux/dri_status.html</li>
546     </ol>
547 swift 1.7
548 swift 1.8 </body>
549     </section>
550 peesh 1.1 </chapter>
551     </guide>

  ViewVC Help
Powered by ViewVC 1.1.20