/[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.17 - (hide annotations) (download) (as text)
Sun Dec 26 14:32:07 2004 UTC (9 years, 7 months ago) by swift
Branch: MAIN
Changes since 1.16: +36 -38 lines
File MIME type: application/xml
#75694 - xfree-drm is gone, long live x11-drm

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

  ViewVC Help
Powered by ViewVC 1.1.20