/[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.23 - (show annotations) (download) (as text)
Wed Jul 27 12:45:04 2005 UTC (8 years, 11 months ago) by fox2mike
Branch: MAIN
Changes since 1.22: +9 -11 lines
File MIME type: application/xml
#100459 - Remove XFree86 references as the package is no longer in Portage. Thanks to Lukasz Damentko (rane) for reporting and patch.

1 <?xml version="1.0" encoding="UTF-8"?>
2 <!-- $Header: /var/cvsroot/gentoo/xml/htdocs/doc/en/dri-howto.xml,v 1.22 2005/07/13 12:57:52 swift 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.11</version>
22 <date>2005-07-27</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 <comment>(Your output may not match the above due to different hardware.)</comment>
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 <comment>(Make sure /usr/src/linux links to your current kernel.)</comment>
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 <comment>(Enable your chipset instead of the above.)</comment>
168 &lt; &gt; Direct Rendering Manager (XFree86 4.1.0 and higher DRI support)
169 </pre>
170
171 <p>
172 If you use a 2.4 kernel, make sure the Direct Rendering Manager (DRM) is
173 <e>off</e>. The X11-DRM package will provide its own. 2.6 kernel users should
174 <e>enable</e> the Direct Rendering Manager (DRM) as the X11-DRM package
175 currently does not support 2.6 kernels yet.
176 </p>
177
178 </body>
179 </section>
180 <section>
181 <title>Compile and install your kernel</title>
182 <body>
183
184 <pre caption="Compiling and installing kernel">
185 # <i>make dep &amp;&amp; make clean bzImage modules modules_install</i>
186 # <i>mount /boot</i>
187 # <i>cp arch/i386/boot/bzImage /boot</i>
188 </pre>
189
190 <p>
191 If you want your kernel to be named something other than bzImage, be sure to
192 copy to /boot/yourname instead. Don't forget to set up grub.conf or lilo.conf
193 and run /sbin/lilo if you use LILO.
194 </p>
195
196 </body>
197 </section>
198 </chapter>
199
200 <chapter>
201 <title>Install X11-DRM and configure direct rendering</title>
202 <section>
203 <title>Install X11-DRM</title>
204 <body>
205
206 <warn>
207 If you are a 2.6 kernel user, skip this section and go to <uri
208 link="#configure_xorg">Configure Xorg.conf</uri>.
209 </warn>
210
211 <pre caption="Installing X11-DRM">
212 # <i>emerge x11-drm</i>
213 </pre>
214
215 </body>
216 </section>
217 <section id="configure_xorg">
218 <title>Configure Xorg.conf</title>
219 <body>
220
221 <p>
222 Some chipsets require you to rebuild <c>xorg-x11</c> with
223 <c>USE="insecure-drivers"</c>. This applies to mach64, unichrome and savage
224 chipsets on xorg-x11-6.8.2, and to mach64 and unichrome on xorg-x11-6.8.99.x.
225 Savage users should not try xorg-x11-6.8.99.x as support for the savage there
226 is broken.
227 </p>
228
229 <pre caption="Rebuilding xorg-x11">
230 # <i>vim /etc/portage/package.use</i>
231 <comment>(Add the following line if you use one of the abovementioned chipsets)</comment>
232 x11-base/xorg-x11 insecure-drivers
233
234 # <i>emerge xorg-x11</i>
235 </pre>
236
237 <p>
238 Open <path>/etc/X11/xorg.conf</path> with your favorite text editor and edit
239 it to enable DRI and GLX.
240 </p>
241
242 <pre caption="xorg.conf">
243 ...
244 Section "Module"
245 Load "dri"
246 Load "glx"
247 ...
248 EndSection
249 ...
250 Section "Device"
251 Driver "radeon"
252 ...
253 EndSection
254 ...
255 Section "dri"
256 Mode 0666
257 EndSection
258 </pre>
259
260 <p>
261 If you are using a different driver, replace "radeon" with yours.
262 </p>
263
264 </body>
265 </section>
266 </chapter>
267
268 <chapter>
269 <title>Test 3D acceleration</title>
270 <section>
271 <title>Reboot to the new kernel</title>
272 <body>
273
274 <p>
275 Reboot your computer to your new kernel. It's time to see if you have direct
276 rendering and how good it is.
277 </p>
278
279 <pre caption="Testing rendering">
280 # <i>startx</i>
281 <comment>(No need to load modules for your driver or agpgart, if you compiled agpgart as a module.)</comment>
282 <comment>(They will be loaded automatically.)</comment>
283 # <i>glxinfo | grep rendering</i>
284 direct rendering: Yes
285 <comment>(If it says "No," you don't have 3D acceleration.)</comment>
286 # <i>glxgears</i>
287 <comment>(Test your frames per second (FPS) at the default size. The number should be )</comment>
288 <comment>(significantly higher than before installing x11-drm. Do this while the CPU is as idle as possible.)</comment>
289 </pre>
290
291 </body>
292 </section>
293 </chapter>
294
295 <chapter>
296 <title>Using the CVS sources</title>
297 <section>
298 <body>
299
300 <warn>
301 Don't do this if the package worked.
302 </warn>
303
304 </body>
305 </section>
306 <section>
307 <title>Do you need the CVS?</title>
308 <body>
309
310 <p>
311 First you have to check whether the x11-drm package works. If it doesn't and
312 you have checked your logs to verify it's not a configuration error, you might
313 want to consider the CVS sources. There are also daily driver snapshots
314 available if you do not wish to build the full CVS.
315 </p>
316
317 </body>
318 </section>
319 <section>
320 <title>Do the CVS sources support your card?</title>
321 <body>
322
323 <p>
324 Check the DRI <uri
325 link="http://dri.sourceforge.net/cgi-bin/moin.cgi/Status">supported cards
326 list</uri> to see if the CVS supports your card. Even if it doesn't, but it
327 supports a similar card, try it.
328 </p>
329
330 <!-- I see a couple of 8x AGP stuff on the Internet about vanilla 2.4 kernels;
331 is this now available or not? I've commented it out for the time being,
332 hoping that this doesn't affect us :)
333
334 <warn>
335 "Linux 2.4 doesn't support agp 8x, so I had to go find a backport. The backport
336 works .... it doesn't patch quite properly, and it requires 2.4.21 (I've only
337 gotten it to work with vanilla, straight from the tarball (not ebuild)). First
338 go get the 2.4.20-2.4.21 patch from kernel.org .... (then get the patch,) It
339 was on a mailing list somewhere. It doesn't patch cleanly - - one file fails,
340 the pci_ids.h file, but if you actually read the file and the reject list, it's
341 very easy to fix. But it does load, and it gives me 1600x1200 with video
342 (although a bit slow b/c of lack of dga) with xfree-drm." (SanityInAnarchy on
343 #gentoo)
344 </warn>
345
346 <impo>
347 The patch is a little tricky to work with but <uri
348 link="http://www.ussg.iu.edu/hypermail/linux/kernel/0302.2/att-1618/01-agp3.diff.bz2">here's
349 the link</uri>. If you can disable 8X AGP in your BIOS, change it to 4X and you
350 may not need the patch.
351 </impo>
352 -->
353
354 </body>
355 </section>
356 <section>
357 <title>Follow the CVS Instructions</title>
358 <body>
359
360 <p>
361 The DRI project has a document about CVS compiling themselves. Please read <uri
362 link="http://dri.sourceforge.net/cgi-bin/moin.cgi/Building">the document</uri>
363 and follow the instructions up to the <e>Installing for X.org</e> part.
364 </p>
365
366 </body>
367 </section>
368 <section>
369 <title>Install the CVS</title>
370 <body>
371
372 <p>
373 Verify that the DRI kernel module(s) for your system were built:
374 </p>
375
376 <pre caption="Verification">
377 # <i>cd ~/DRI-CVS/build/xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel; ls</i>
378 </pre>
379
380 <p>
381 For the 3dfx Voodoo, you should see <path>tdfx.o</path>. For the Matrox
382 G200/G400, you should see <path>mga.o</path>. For the ATI Rage 128, you should
383 see <path>r128.o</path>. For the ATI Radeon, you should see
384 <path>radeon.o</path>. For the Intel i810, you should see <path>i810.o</path>.
385 If the DRI kernel module(s) failed to build, you should verify that you're
386 using the right version of the Linux kernel. The most recent kernels are not
387 always supported.
388 </p>
389
390 <p>
391 Install over your X.org installation. You may wish to back up xorg-x11.
392 </p>
393
394 <pre caption="Backing up Xorg">
395 # <i>quickpkg xorg-x11</i>
396 <comment>(This backs up your Xorg-X11 package.)</comment>
397 # <i>make install</i>
398 </pre>
399
400 <p>
401 Follow the "Configure Xorg" section above.
402 </p>
403
404 <p>
405 To load the appropriate DRM module in your running kernel, copy the kernel
406 module to <path>/lib/modules/`uname -r`/kernel/drivers/char/drm/</path> then
407 run <c>modules-update</c> and restart your X server. If you're not running the
408 kernel you'll be using it in, instead of <c>`uname -r`,</c> use that kernel's
409 name.
410 </p>
411
412 <warn>
413 Make sure you first unload any older DRI kernel modules that might be already
414 loaded. Note that some DRM modules require that the agpgart module be loaded
415 first.
416 </warn>
417
418 </body>
419 </section>
420 </chapter>
421
422 <chapter>
423 <title>Tweak your performance</title>
424 <section>
425 <title>Get the most out of direct rendering</title>
426 <body>
427
428 <p>
429 A few options may increase performance by up to 30 percent (or more) over the
430 default. Set them in <path>/etc/X11/xorg.conf</path>.
431 </p>
432
433 <pre caption="xorg.conf">
434 Section "Device"
435 Option "AGPMode" "4"
436 <comment>(This increased FPS from 609 to 618.)</comment>
437 Option "AGPFastWrite" "True"
438 <comment>(This had no measurable effect, but it may increase instability of your computer.)</comment>
439 <comment>(You may also need to set it in your BIOS.)</comment>
440 Option "EnablePageFlip" "True"
441 <comment>(This improved FPS from 618 to 702. It also is "risky" but few people have reported problems.)</comment>
442 ...
443 EndSection
444 </pre>
445
446 <p>
447 If you want to set even more features, check out the <uri
448 link="http://dri.sourceforge.net/doc/dri_driver_features.phtml">features
449 listing</uri> on the DRI Web site.
450 </p>
451
452 </body>
453 </section>
454 </chapter>
455
456 <chapter>
457 <title>Troubleshooting</title>
458 <section>
459 <title>It doesn't work. I just recompiled my kernel or switched to a new one.</title>
460 <body>
461
462 <p>
463 Whenever you rebuild your kernel or switch to another kernel, you'll have to
464 rebuild the kernel module. Note that you don't need to remerge xorg-x11, but
465 you will need to remerge x11-drm.
466 </p>
467
468 </body>
469 </section>
470
471 <section>
472 <title>It doesn't work. I don't have rendering, and I can't tell why.</title>
473 <body>
474
475 <p>
476 Try <c>insmod radeon</c> before you start the X server. Also, try building
477 agpgart into the kernel instead of as a module.
478 </p>
479
480 </body>
481 </section>
482 <section>
483 <title>When I startx, I get this error: "[drm] failed to load kernel module agpgart"</title>
484 <body>
485
486 <p>
487 That's because you compiled agpgart into the kernel instead of as a module.
488 Ignore it unless you're having problems.
489 </p>
490
491 </body>
492 </section>
493 <section>
494 <title>Direct rendering doesn't work, and in /var/log/Xorg.0.log I have an error about driver version too low.</title>
495 <body>
496
497 <p>
498 You aren't using the x11-drm driver. Check if you compiled DRM and the driver
499 into the kernel; you shouldn't have.
500 </p>
501
502 </body>
503 </section>
504 <section>
505 <title>I have a Radeon, and I want TV-Out.</title>
506 <body>
507
508 <p>
509 Check out ati-gatos drivers. <c>emerge -s gatos</c>.
510 </p>
511
512 </body>
513 </section>
514 <section>
515 <title>It doesn't work. My card is so incredibly new and cool that it isn't supported at all.</title>
516 <body>
517
518 <p>
519 Try out the binary drivers. For ati-drivers, a listing is at
520 <uri>http://www.schneider-digital.de/html/download_ati.html</uri>. If those
521 don't support it, use fbdev. It's slow, but it works.
522 </p>
523
524 </body>
525 </section>
526 <section>
527 <title>I have a PCI card and it doesn't work. Help!</title>
528 <body>
529
530 <p>
531 In section "Device" enable ForcePCIMode.
532 </p>
533
534 <pre caption="Enabling ForcePCIMode">
535 Option "ForcePCIMode" "True"
536 </pre>
537
538 </body>
539 </section>
540 </chapter>
541
542 <chapter>
543 <title>Acknowledgments</title>
544 <section>
545 <body>
546
547 <ol>
548 <li>
549 Christopher Webber for suggesting a troubleshooting question about changing
550 or recompiling kernels
551 </li>
552 <li>
553 Steve, for suggesting consistency between the cases of dri and DRI in
554 XF86Config
555 </li>
556 </ol>
557
558 </body>
559 </section>
560 </chapter>
561
562 <chapter>
563 <title>References</title>
564 <section>
565 <body>
566
567 <ol>
568 <li>http://forums.gentoo.org/viewtopic.php?t=46681</li>
569 <li>http://forums.gentoo.org/viewtopic.php?t=29264</li>
570 <li>http://dri.sourceforge.net/</li>
571 <li>http://www.retinalburn.net/linux/dri_status.html</li>
572 </ol>
573
574 </body>
575 </section>
576 </chapter>
577 </guide>

  ViewVC Help
Powered by ViewVC 1.1.20