/[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.48 - (hide annotations) (download) (as text)
Wed Mar 23 09:34:13 2011 UTC (3 years, 5 months ago) by nightmorph
Branch: MAIN
Changes since 1.47: +8 -5 lines
File MIME type: application/xml
some xorg.conf cleanups

1 peesh 1.1 <?xml version="1.0" encoding="UTF-8"?>
2     <!DOCTYPE guide SYSTEM "/dtd/guide.dtd">
3 nightmorph 1.48 <!-- $Header: /var/cvsroot/gentoo/xml/htdocs/doc/en/dri-howto.xml,v 1.47 2011/03/23 09:26:50 nightmorph Exp $ -->
4 peesh 1.1
5 nightmorph 1.44 <guide>
6 peesh 1.1 <title>Hardware 3D Acceleration Guide</title>
7 neysx 1.35
8 peesh 1.1 <author title="Author">
9 nightmorph 1.44 <mail link="dberkholz"/>
10 peesh 1.1 </author>
11     <author title="Editor">
12 nightmorph 1.44 <mail link="peesh"/>
13 peesh 1.1 </author>
14 nightmorph 1.37 <author title="Editor">
15 nightmorph 1.44 <mail link="nightmorph"/>
16 nightmorph 1.37 </author>
17 peesh 1.1
18 swift 1.8 <abstract>
19 nightmorph 1.37 This document is a guide to getting 3D acceleration working using the DRM with
20     Xorg in Gentoo Linux.
21 swift 1.8 </abstract>
22 peesh 1.1
23 fox2mike 1.27 <!-- The content of this document is licensed under the CC-BY-SA license -->
24     <!-- See http://creativecommons.org/licenses/by-sa/2.5 -->
25 swift 1.12 <license/>
26    
27 nightmorph 1.48 <version>4</version>
28 nightmorph 1.47 <date>2011-03-23</date>
29 peesh 1.1
30     <chapter>
31 swift 1.8 <title>Introduction</title>
32     <section>
33     <title>What is hardware 3D acceleration and why do I want it?</title>
34     <body>
35    
36     <p>
37 swift 1.41 With hardware 3D acceleration, three-dimensional rendering uses the graphics
38     processor on your video card instead of taking up valuable CPU resources
39     drawing 3D images. It's also referred to as "hardware acceleration" instead of
40 swift 1.8 "software acceleration" because without this 3D acceleration your CPU is forced
41 swift 1.41 to draw everything itself using the Mesa software rendering libraries, which
42 swift 1.17 takes up quite a bit of processing power. While Xorg typically supports 2D
43 swift 1.41 hardware acceleration, it often lacks hardware 3D acceleration.
44     Three-dimensional hardware acceleration is valuable in situations requiring
45 swift 1.8 rendering of 3D objects such as games, 3D CAD and modeling.
46     </p>
47    
48     </body>
49     </section>
50     <section>
51     <title>How do I get hardware 3D acceleration?</title>
52     <body>
53    
54     <p>
55 nightmorph 1.46 In many cases, both binary and open-source drivers exist. Open source drivers
56 swift 1.8 are preferable since we're using Linux and open source is one of its underlying
57 nightmorph 1.46 principles. Sometimes, binary drivers are the only option, especially if your
58     graphics card is so new that open source drivers have not yet been written to
59     support its features. Binary drivers include <c>x11-drivers/nvidia-drivers</c>
60     for nVidia cards and <c>x11-drivers/ati-drivers</c> for AMD/ATI cards.
61 swift 1.8 </p>
62    
63     </body>
64     </section>
65     <section>
66     <title>What is DRI?</title>
67     <body>
68    
69     <p>
70 neysx 1.25 The <uri link="http://dri.freedesktop.org/wiki/">Direct Rendering
71     Infrastructure</uri>, also known as the DRI, is a framework for allowing direct
72     access to graphics hardware in a safe and efficient manner. It includes changes
73     to the X server, to several client libraries and to the kernel. The first major
74     use for the DRI is to create fast OpenGL implementations.
75 swift 1.8 </p>
76    
77     </body>
78     </section>
79     <section>
80 nightmorph 1.37 <title>What is the DRM and how does it relate to regular Xorg?</title>
81 swift 1.8 <body>
82    
83     <p>
84 nightmorph 1.37 The DRM (Direct Rendering Manager) is an <e>enhancement</e> to Xorg that adds 3D
85     acceleration for cards by adding the kernel module necessary for direct
86     rendering.
87 swift 1.8 </p>
88    
89     </body>
90     </section>
91     <section>
92     <title>Purpose</title>
93     <body>
94    
95     <p>
96 neysx 1.25 This guide is for people who can't get direct rendering working with just Xorg.
97 nightmorph 1.37 The DRM works for the following drivers:
98     </p>
99    
100     <ul>
101     <li>3dfx</li>
102 nightmorph 1.43 <li>intel</li>
103 nightmorph 1.37 <li>matrox</li>
104 nightmorph 1.46 <li>nouveau</li>
105 nightmorph 1.37 <li>rage128</li>
106     <li>radeon</li>
107     <li>mach64</li>
108     <li>sis300</li>
109     <li>via</li>
110     </ul>
111    
112     <p>
113     See the <uri link="http://dri.freedesktop.org/">DRI homepage</uri> for more info
114     and documentation.
115 swift 1.8 </p>
116    
117     </body>
118     </section>
119 peesh 1.1 </chapter>
120    
121 swift 1.8 <chapter>
122 swift 1.17 <title>Install Xorg and configure your kernel</title>
123 swift 1.8 <section>
124 swift 1.17 <title>Install Xorg</title>
125 swift 1.8 <body>
126 peesh 1.1
127 swift 1.17 <p>
128     Please read our <uri link="/doc/en/xorg-config.xml">Xorg Configuration
129     Guide</uri> to get Xorg up and running.
130     </p>
131 peesh 1.1
132 swift 1.8 </body>
133     </section>
134     <section>
135     <title>Configure your kernel</title>
136     <body>
137    
138     <p>
139     Probe for your chipset and enable just that one.
140     </p>
141 peesh 1.1
142 swift 1.9 <pre caption="Checking your AGP chipset">
143 peesh 1.1 # <i>emerge pciutils; lspci | grep AGP</i>
144     # <i>00:01.0 PCI bridge: Intel Corp. 440BX/ZX/DX - 82443BX/ZX/DX AGP bridge (rev 03)</i>
145 neysx 1.21 <comment>(Your output may not match the above due to different hardware.)</comment>
146 swift 1.8 </pre>
147    
148     <p>
149 swift 1.16 If your chipset is not supported by the kernel you might have some succes by
150     passing <c>agp=try_unsupported</c> as a kernel parameter. This will use Intel's
151     generic routines for AGP support. To add this parameter, edit your bootloader
152     configuration file!
153     </p>
154    
155     <p>
156 nightmorph 1.37 Most, if not all, kernels should have these options. This was configured using a
157     standard <c>gentoo-sources</c> kernel.
158 swift 1.8 </p>
159    
160 swift 1.9 <pre caption="Configuring the kernel">
161 peesh 1.1 # <i>ls -l /usr/src/linux </i>
162 nightmorph 1.37 lrwxrwxrwx 1 root root 22 2007-02-14 20:12 /usr/src/linux -> linux-2.6.18-gentoo-r4
163 neysx 1.21 <comment>(Make sure /usr/src/linux links to your current kernel.)</comment>
164 peesh 1.1 # <i>cd /usr/src/linux</i>
165     # <i>make menuconfig</i>
166 swift 1.8 </pre>
167    
168 swift 1.9 <pre caption="make menuconfig options">
169 nightmorph 1.37 Processor type and features --->
170 swift 1.8 &lt;*&gt; MTRR (Memory Type Range Register) support
171 nightmorph 1.37 Device drivers --->
172 nightmorph 1.42 Graphics support --->
173     &lt;M&gt; /dev/agpgart (AGP Support) --->
174     <comment>(The agpgart option is not present on 64-bit kernels; just choose your chipset support.)</comment>
175     &lt;M&gt; Intel 440LX/BX/GX, I8xx and E7x05 support
176     <comment>(Enable your chipset instead of the above.)</comment>
177     &lt;M&gt; Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) --->
178     &lt;M&gt; <comment>(Select your graphics card from the list)</comment>
179 swift 1.8 </pre>
180 peesh 1.1
181 swift 1.8 </body>
182     </section>
183     <section>
184     <title>Compile and install your kernel</title>
185     <body>
186 peesh 1.1
187 swift 1.9 <pre caption="Compiling and installing kernel">
188 nightmorph 1.37 # <i>make &amp;&amp; make modules_install</i>
189 swift 1.8 </pre>
190    
191     <p>
192 nightmorph 1.37 Don't forget to set up <path>grub.conf</path> or <path>lilo.conf</path> and run
193     <c>/sbin/lilo</c> if you use LILO.
194 swift 1.8 </p>
195    
196     </body>
197     </section>
198 nightmorph 1.47 <section>
199     <title>Add your user to the video group</title>
200     <body>
201    
202     <p>
203     Next, add your user(s) to the video group, as explained in the <uri
204     link="/doc/en/handbook">handbook</uri>:
205     </p>
206    
207     <pre caption="Adding a user to the video group">
208     # <i>gpasswd -a username video</i>
209     </pre>
210    
211     </body>
212     </section>
213 peesh 1.1 </chapter>
214    
215 swift 1.8 <chapter>
216 nightmorph 1.37 <title>Configure direct rendering</title>
217 swift 1.20 <section id="configure_xorg">
218 nightmorph 1.47 <title>Configure Xorg</title>
219 swift 1.8 <body>
220    
221     <p>
222 nightmorph 1.47 Hopefully just adding your user to the <c>video</c> group is sufficient to
223     enable direct rendering. However, you may also need to create a file in
224     <path>/etc/X11/xorg.conf.d/</path>. You can name it anything you like; just make
225     sure it ends in <path>.conf</path>. Open up your favorite text editor and create
226     a file with this inside it:
227 swift 1.8 </p>
228 peesh 1.1
229 nightmorph 1.47 <pre caption="/etc/X11/xorg.conf.d/10-dri.conf">
230 peesh 1.1 Section "Device"
231 swift 1.8 Driver "radeon"
232 nightmorph 1.37 <comment>(Replace radeon with the name of your driver.)</comment>
233 peesh 1.1 EndSection
234 swift 1.7 Section "dri"
235 swift 1.8 Mode 0666
236 peesh 1.1 EndSection
237 swift 1.8 </pre>
238    
239     </body>
240     </section>
241 fox2mike 1.27 <section>
242     <title>Changes to modules.autoload.d</title>
243     <body>
244    
245     <p>
246     You will need to add the module name that your card uses to
247     <path>/etc/modules.autoload.d/kernel-2.6</path> to ensure that the module is
248     loaded automatically when the system starts up.
249     </p>
250    
251     <pre caption="Editing /etc/modules.autoload.d/kernel-2.6">
252     <comment>(Change module name as required.)</comment>
253     intel-agp
254     </pre>
255    
256 nightmorph 1.29 <note>
257     If you compiled <c>agpgart</c> as a module, you will also need to add it to
258     <path>/etc/modules.autoload.d/kernel-2.6</path>.
259     </note>
260    
261 fox2mike 1.27 </body>
262     </section>
263 peesh 1.1 </chapter>
264    
265 swift 1.8 <chapter>
266     <title>Test 3D acceleration</title>
267     <section>
268     <title>Reboot to the new kernel</title>
269     <body>
270    
271     <p>
272 nightmorph 1.38 Reboot your computer to your new kernel and login as a normal user. It's time to
273     see if you have direct rendering and how good it is. <c>glxinfo</c> and
274     <c>glxgears</c> are part of the <c>mesa-progs</c> package, so make sure it is
275     installed before you attempt to run these commands.
276 swift 1.8 </p>
277 peesh 1.1
278 swift 1.9 <pre caption="Testing rendering">
279 nightmorph 1.29 $ <i>startx</i>
280 jkt 1.32 <comment>(No need to load modules for your driver or agpgart, even if you compiled them as a module.)</comment>
281 neysx 1.21 <comment>(They will be loaded automatically.)</comment>
282 nightmorph 1.29 $ <i>glxinfo | grep rendering</i>
283 peesh 1.1 direct rendering: Yes
284 jkt 1.32 <comment>(If it says "No", you don't have 3D acceleration.)</comment>
285 nightmorph 1.29 $ <i>glxgears</i>
286 swift 1.41 <comment>(Test your frames per second (FPS) at the default size. The number should be
287     significantly higher than before configuring DRM. Do this while the CPU is as idle as
288 nightmorph 1.37 possible.)</comment>
289 swift 1.8 </pre>
290    
291 nightmorph 1.37 <note>
292     FPS may be limited by your screen's refresh rate, so keep this in mind if
293 nightmorph 1.44 <c>glxgears</c> reports only about 70-100 FPS. <c>games-fps/ut2004-demo</c> or
294     other 3D games are better benchmarking tools, as they give you real-world
295     performance results.
296 nightmorph 1.37 </note>
297 swift 1.8
298     </body>
299     </section>
300     <section>
301     <title>Get the most out of direct rendering</title>
302     <body>
303    
304     <p>
305 nightmorph 1.44 If you want to set more features, for performance or other reasons, check out
306     the <uri link="http://dri.freedesktop.org/wiki/FeatureMatrix">feature
307     matrix</uri> on the DRI web site or the <uri
308 neysx 1.25 link="http://dri.sourceforge.net/doc/dri_driver_features.phtml">features
309     listing</uri> on Sourceforge.
310 swift 1.8 </p>
311    
312     </body>
313     </section>
314 peesh 1.1 </chapter>
315    
316     <chapter>
317 swift 1.8 <title>Troubleshooting</title>
318     <section>
319     <title>It doesn't work. I don't have rendering, and I can't tell why.</title>
320     <body>
321    
322     <p>
323 nightmorph 1.37 Try <c>modprobe radeon</c> before you start the X server (replace <c>radeon</c>
324     with the name of your driver). Also, try building agpgart into the kernel
325     instead of as a module.
326 swift 1.8 </p>
327    
328     </body>
329     </section>
330     <section>
331 cam 1.13 <title>When I startx, I get this error: "[drm] failed to load kernel module agpgart"</title>
332 swift 1.8 <body>
333    
334     <p>
335 swift 1.41 That's because you compiled agpgart into the kernel instead of as a module.
336 swift 1.8 Ignore it unless you're having problems.
337     </p>
338    
339     </body>
340     </section>
341     <section>
342     <title>I have a Radeon, and I want TV-Out.</title>
343     <body>
344    
345     <p>
346 nightmorph 1.40 The drivers originally developed by the <uri
347     link="http://gatos.sf.net">GATOS</uri> project have been merged into Xorg's
348     codebase. You don't need anything special for TV-Out;
349     <c>x11-drivers/xf86-video-ati</c> will work just fine.
350 swift 1.8 </p>
351    
352     </body>
353     </section>
354     <section>
355 nightmorph 1.37 <title>
356     It doesn't work. My card is so incredibly new and cool that it isn't supported
357     at all.
358     </title>
359 swift 1.8 <body>
360    
361     <p>
362 nightmorph 1.46 Try out the binary drivers. For AMD cards, use <c>ati-drivers</c>; a listing is
363     at <uri>http://support.amd.com/us/gpudownload/Pages/index.aspx</uri>. If those
364 nightmorph 1.45 don't support it, use fbdev. It's slow, but it works.
365 swift 1.8 </p>
366    
367     </body>
368     </section>
369     <section>
370     <title>I have a PCI card and it doesn't work. Help!</title>
371     <body>
372    
373     <p>
374 nightmorph 1.48 Create a config file in <path>/etc/X11/xorg.conf.d/</path>; name it anything you
375     want as long as it ends in <path>.conf</path>. Add the following to it:
376 swift 1.8 </p>
377    
378 nightmorph 1.48 <pre caption="/etc/X11/xorg.conf.x/10-pcimode.conf">
379     Section "Device"
380     Option "ForcePCIMode" "True"
381     EndSection
382 swift 1.8 </pre>
383    
384     </body>
385     </section>
386 peesh 1.1 </chapter>
387    
388 swift 1.8 <chapter>
389     <title>References</title>
390     <section>
391     <body>
392    
393     <ol>
394 neysx 1.25 <li><uri>http://forums.gentoo.org/viewtopic.php?t=46681</uri></li>
395     <li><uri>http://forums.gentoo.org/viewtopic.php?t=29264</uri></li>
396     <li><uri>http://dri.freedesktop.org/</uri></li>
397     <li><uri>http://www.retinalburn.net/linux/dri_status.html</uri></li>
398 swift 1.8 </ol>
399 swift 1.7
400 swift 1.8 </body>
401     </section>
402 nightmorph 1.46 <section>
403     <title>Feedback</title>
404     <body>
405    
406     <p>
407     With suggestions, questions, etc., e-mail <mail link="dberkholz"/>.
408     </p>
409    
410     </body>
411     </section>
412 peesh 1.1 </chapter>
413     </guide>

  ViewVC Help
Powered by ViewVC 1.1.20