/[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.21 - (show annotations) (download) (as text)
Wed Apr 6 09:39:59 2005 UTC (9 years, 3 months ago) by neysx
Branch: MAIN
Changes since 1.20: +14 -14 lines
File MIME type: application/xml
<codenote> is being deprecated, replacing them with <comment> that should have been used anyway
***No content change***

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

  ViewVC Help
Powered by ViewVC 1.1.20