/[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.19 - (show annotations) (download) (as text)
Wed Jan 19 14:12:38 2005 UTC (9 years, 7 months ago) by swift
Branch: MAIN
Changes since 1.18: +5 -5 lines
File MIME type: application/xml
xfree or xorg-x11, reported by so|gentoo

1 <?xml version="1.0" encoding="UTF-8"?>
2 <!-- $Header: /var/cvsroot/gentoo/xml/htdocs/doc/en/dri-howto.xml,v 1.18 2004/12/28 22:47:24 cam Exp $ -->
3 <!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 <mail link="spyderous@gentoo.org">Donnie Berkholz</mail>
9 </author>
10 <author title="Editor">
11 <mail link="peesh@gentoo.org">Jorge Paulo</mail>
12 </author>
13
14 <abstract>
15 This document is a guide to getting 3D acceleration working using X11-DRM
16 with Xorg in Gentoo Linux.
17 </abstract>
18
19 <license/>
20
21 <version>1.0.8</version>
22 <date>2005-01-19</date>
23
24 <chapter>
25 <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 Xorg 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 X11-DRM and how does it relate to regular Xorg?</title>
78 <body>
79
80 <p>
81 X11-DRM is an <e>enhancement</e> to Xorg 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 Xorg. X11-DRM works for 3dfx, gamma, i8x0, matrox, rage128, radeon, mach64
94 and sis300 series drivers. See the <uri
95 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 </chapter>
113
114 <chapter>
115 <title>Install Xorg and configure your kernel</title>
116 <section>
117 <title>Install Xorg</title>
118 <body>
119
120 <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
125 </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
135 <pre caption="Checking your AGP chipset">
136 # <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 </pre>
140
141 <p>
142 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 Most, if not all, kernels should have these options. This was configured using
150 gentoo-sources-2.4.20-r5.
151 </p>
152
153 <pre caption="Configuring the kernel">
154 # <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 <codenote>Make sure /usr/src/linux links to your current kernel.</codenote>
157 # <i>cd /usr/src/linux</i>
158 # <i>make menuconfig</i>
159 </pre>
160
161 <pre caption="make menuconfig options">
162 Processor type and features ---&gt;
163 &lt;*&gt; MTRR (Memory Type Range Register) support
164 Character devices ---&gt;
165 &lt;M&gt; /dev/agpgart (AGP Support)
166 [*] Intel 440LX/BX/GX and I815/I820/I830M/I830MP/I840/I845/I850/I860 support
167 <codenote>Enable your chipset instead of the above.</codenote>
168 [ ] Direct Rendering Manager (XFree86 DRI support)
169 </pre>
170
171 <p>
172 Make sure the Direct Rendering Manager (DRM) is <e>off</e>. The X11-DRM
173 package will provide its own.
174 </p>
175
176 </body>
177 </section>
178 <section>
179 <title>Compile and install your kernel</title>
180 <body>
181
182 <pre caption="Compiling and installing kernel">
183 # <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 </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 </chapter>
197
198 <chapter>
199 <title>Install X11-DRM and configure direct rendering</title>
200 <section>
201 <title>Install X11-DRM</title>
202 <body>
203
204 <pre caption="Installing X11-DRM">
205 # <i>emerge x11-drm</i>
206 </pre>
207
208 </body>
209 </section>
210 <section>
211 <title>Configure Xorg.conf</title>
212 <body>
213
214 <p>
215 Open <path>/etc/X11/xorg.conf</path> with your favorite text editor and edit
216 it to enable DRI and GLX.
217 </p>
218
219 <pre caption="xorg.conf">
220 ...
221 Section "Module"
222 Load "dri"
223 Load "glx"
224 ...
225 EndSection
226 ...
227 Section "Device"
228 Driver "radeon"
229 ...
230 EndSection
231 ...
232 Section "dri"
233 Mode 0666
234 EndSection
235 </pre>
236
237 <p>
238 If you are using a different driver, replace "radeon" with yours.
239 </p>
240
241 </body>
242 </section>
243 </chapter>
244
245 <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
256 <pre caption="Testing rendering">
257 # <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 <codenote>Test your frames per second (FPS) at the default size. The number should be </codenote>
265 <codenote>significantly higher than before installing x11-drm. Do this while the CPU is as idle as possible.</codenote>
266 </pre>
267
268 </body>
269 </section>
270 </chapter>
271
272 <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 First you have to check whether the x11-drm package works. If it doesn't and
289 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 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 </p>
306
307 <!-- 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 <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 was on a mailing list somewhere. It doesn't patch cleanly - - one file fails,
317 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 -->
330
331 </body>
332 </section>
333 <section>
334 <title>Follow the CVS Instructions</title>
335 <body>
336
337 <p>
338 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 </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
354 <pre caption="Verification">
355 # <i>cd ~/DRI-CVS/build/xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel; ls</i>
356 </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 Install over your XFree86 or X.org installation. You may wish to back up xfree
370 or xorg-x11.
371 </p>
372
373 <pre caption="Backing up Xorg">
374 # <i>quickpkg xorg-x11</i>
375 <codenote>This backs up your Xorg-X11 package.</codenote>
376 # <i>make install</i>
377 </pre>
378
379 <p>
380 Follow the "Configure Xorg" section above.
381 </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 </chapter>
400
401 <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 default. Set them in <path>/etc/X11/xorg.conf</path>.
410 </p>
411
412 <pre caption="xorg.conf">
413 Section "Device"
414 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 EndSection
423 </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 </chapter>
434
435 <chapter>
436 <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 or
444 xorg-x11, but you will need to remerge x11-drm.
445 </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 <title>When I startx, I get this error: "[drm] failed to load kernel module agpgart"</title>
463 <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 <title>Direct rendering doesn't work, and in /var/log/Xorg.0.log I have an error about driver version too low.</title>
474 <body>
475
476 <p>
477 You aren't using the x11-drm driver. Check if you compiled DRM and the driver
478 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 <pre caption="Enabling ForcePCIMode">
514 Option "ForcePCIMode" "True"
515 </pre>
516
517 </body>
518 </section>
519 </chapter>
520
521 <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
537 </body>
538 </section>
539 </chapter>
540
541 <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
553 </body>
554 </section>
555 </chapter>
556 </guide>

  ViewVC Help
Powered by ViewVC 1.1.20