summaryrefslogtreecommitdiff
blob: 754b70cc134539febb573f45ff3e2e4771cef775 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
<?xml version="1.0" encoding="UTF-8"?>
<!-- $Header: /var/cvsroot/gentoo/xml/htdocs/doc/pt_br/dri-howto.xml,v 1.14 2008/11/06 09:42:04 nightmorph Exp $ -->
<!DOCTYPE guide SYSTEM "/dtd/guide.dtd">

<guide link="/doc/pt_br/dri-howto.xml" lang="pt_br">
<title>Guia de aceleração de Hardware 3D</title>
<author title="Autor">
<mail link="dberkholz@gentoo.org">Donnie Berkholz</mail>
</author>
<author title="Editor">
<mail link="peesh@gentoo.org">Jorge Paulo</mail>
</author>
<author title="Tradutor">
<mail link="vanquirius@gentoo.org">Marcelo Góes</mail>
</author>

<abstract>
Este documento é um guia para configurar aceleração 3D usando X11-DRM com Xorg
no Gentoo Linux.
</abstract>

<!-- The content of this document is licensed under the CC-BY-SA license -->
<!-- See http://creativecommons.org/licenses/by-sa/2.5 -->
<license/>

<version>1.2</version>
<date>2006-02-01</date>

<chapter>
<title>Introdução</title>
<section>
<title>O que é aceleração de hardware 3D e por que quero usá-la?</title>
<body>

<p>
Com a aceleração de hardware 3D, a construção de gráficos tridimensionais usa o
processador de sua placa gráfica ao invés de usar recursos da CPU para desenhar
imagens 3D. É também chamado de "aceleração de hardware" ao invés de
"aceleração de software" porque sem a aceleração 3D a sua CPU é forçada a
desenhar tudo usando as bibliotecas de construção da Mesa, o que usa bastante
poder de processamento. Enquanto o Xorg tipicamente suporta aceleração de
hardware 2D, normalmente ele não tem aceleração de hardware 3D. Aceleração de
hardware em três dimensões é útil em situações que precisam da construção de
objetos 3D como jogos, 3D CAD e modelamento.
</p>

</body>
</section>
<section>
<title>Como obtenho aceleração de hardware 3D?</title>
<body>

<p>
Em muitos casos, existem drivers binários e de código aberto. Drivers de código
aberto são preferíveis,  que estamos usando Linux e código aberto é um de seus
princípios. Às vezes, drivers binários são a única opção, como com as placas da
nVidia. Drivers binários incluem media-video/nvidia-kernel e
media-video/nvidia-glx para placas da nVidia, media-video/mgavideo para placas
da Matrox e media-video/ati-drivers para placas da ATI. Outros drivers de código
aberto incluem media-video/kyro-kernel para placas KyroII e
media-video/ati-gatos para placas da ATI, que visam suportar as capacidades de
vídeo da ATI mais completamente.
</p>

</body>
</section>
<section>
<title>O que é DRI?</title>
<body>

<p>
A <uri link="http://dri.freedesktop.org/wiki/">Direct Rendering
Infrastructure</uri>, também conhecida como DRI, é uma moldura para permitir o
acesso direto ao hardware gráfico de maneira segura e eficiente. Inclui mudanças
ao servidor de X, a diversas bibliotecas de clientes e ao kernel. O primeiro
grande uso para o DRI é criar implementações de OpenGL rápidas.
</p>

</body>
</section>
<section>
<title>O que é X11-DRM e como ele relaciona-se com o Xorg normal?</title>
<body>

<p>
O X11-DRM é uma <e>melhoria</e> ao Xorg que inclui aceleração 3D para placas,
adicionando os módulos de kernel necessários para direct rendering.
</p>

</body>
</section>
<section>
<title>Propósito</title>
<body>

<p>
Este guia é para pessoas que não conseguem fazer direct rendering funcionar só
com o Xorg. O X11-DRM funciona com os drivers 3dfx, gamma, intel, matrox,
rage128, radeon, mach64 e sis300 series. Veja a <uri 
link="http://dri.freedesktop.org/">homepage do DRI</uri> para mais informações e
documentação.
</p>

</body>
</section>
<section>
<title>Feedback</title>
<body>

<p>
Com sugestões, perguntas, etc..., mande e-mail para <mail 
link="dberkholz@gentoo.org">Donnie Berkholz</mail>.
</p>

</body>
</section>
</chapter>

<chapter>
<title>Instale o Xorg e configure seu kernel</title>
<section>
<title>Instale o Xorg</title>
<body>

<p>
Por favor leia nosso <uri link="/doc/pt_br/xorg-config.xml">Guia de configuração
do Xorg</uri> para que instalar o Xorg e tê-lo funcionando.
</p>

</body>
</section>
<section>
<title>Configure seu kernel</title>
<body>

<p>
Faça sonda para seu chipset e ative  ele.
</p>

<pre caption="Verificando seu chipset AGP">
# <i>emerge pciutils; lspci | grep AGP</i>
# <i>00:01.0 PCI bridge: Intel Corp. 440BX/ZX/DX - 82443BX/ZX/DX AGP bridge (rev 03)</i>
<comment>(Sua saída pode não ser igual à acima devido a hardware diferente.)</comment>
</pre>

<p>
Se seu chipset não for suportado pelo kernel você ainda pode ter algum sucesso
passando <c>agp=try_unsupported</c> como um parâmetro de kernel. Isto irá usar
as rotinas genéricas da Intel para suporte AGP. Para adicionar o parâmetro,
edite seu arquivo de configuração de gerenciador de inicialização!
</p>
 
<p>
A maior parte dos kernéis, se não todos, devem ter essas opções. Isto foi
configurado usando gentoo-sources-2.4.20-r5.
</p>

<pre caption="Configurando o kernel">
# <i>ls -l /usr/src/linux </i>
lrwxrwxrwx    1 root     root           22 May 29 18:20 /usr/src/linux -> linux-2.4.20-gentoo-r5
<comment>(Certifique-se que /usr/src/linux aponta para seu kernel atual.)</comment>
# <i>cd /usr/src/linux</i>
# <i>make menuconfig</i>
</pre>

<pre caption="opções de make menuconfig">
Processor type and features ---&gt;
&lt;*&gt; MTRR (Memory Type Range Register) support
Character devices ---&gt;
&lt;M&gt; /dev/agpgart (AGP Support)
[M] Intel 440LX/BX/GX and I815/I820/I830M/I830MP/I840/I845/I850/I860 support
<comment>(Ative seu chipset ao invés do acima.)</comment>
&lt; &gt; Direct Rendering Manager (XFree86 4.1.0 and higher DRI support)
</pre>

<p>
Certifique-se de que Direct Rendering Manager (DRM) está <e>desligado</e>.  O
pacote X11-DRM irá fornecer seu próprio.
</p>

</body>
</section>
<section>
<title>Compile e instale seu kernel</title>
<body>

<pre caption="Compilando e instalando o kernel">
<comment>(Este exemplo é para um kernel 2.4)</comment>
# <i>make dep &amp;&amp; make clean bzImage modules modules_install</i>
# <i>mount /boot</i>
# <i>cp arch/i386/boot/bzImage /boot</i>
</pre>

<p>
Se você quiser que seu kernel tenha um nome diferente de bzImage, certifique-se 
de copiar para /boot/seunome. Não se esqueça de configurar o grub.conf ou
lilo.conf e rodar /sbin/lilo se você usar LILO.
</p>

</body>
</section>
</chapter>

<chapter>
<title>Instale o X11-DRM e configure direct rendering</title>
<section>
<title>Instale o X11-DRM</title>
<body>

<pre caption="Instalando o X11-DRM">
# <i>emerge x11-drm</i>
</pre>

</body>
</section>
<section id="configure_xorg">
<title>Configurando o Xorg.conf</title>
<body>

<p>
Alguns chipsets necessitam que você reconstrua <c>xorg-x11</c> com
<c>USE="insecure-drivers"</c>. Isto se aplica aos chipsets mach64, unichrome e
savage com xorg-x11-6.8.2, e mach64 e unichrome com xorg-x11-6.8.99.x. Usuários
de savage não devem experimentar o xorg-x11-6.8.99.x  que suporte para savage
nesta versão está defeituoso.
</p>

<pre caption="Reconstruindo o xorg-x11">
<comment>(Adicione a opção de USE insecure-drivers se você usar um dos chipsets mencionados acima)</comment>
# <i>echo "x11-base/xorg-x11 insecure-drivers" &gt;&gt; /etc/portage/package.use</i>

# <i>emerge xorg-x11</i>
</pre>

<p>
Abra o <path>/etc/X11/xorg.conf</path> com seu editor de texto favorito e
edite-o para ativar DRI e GLX.
</p>

<pre caption="xorg.conf">
...
Section "Module"
  Load "dri"
  Load "glx"
  ...
EndSection
...
Section "Device"
  Driver "radeon"
  ...
EndSection
...
Section "dri"
  Mode 0666
EndSection
</pre>

<p>
Se você estiver usando um driver diferente, troque "radeon" com o seu.
</p>

</body>
</section>
<section>
<title>Mudanças no modules.autoload.d</title>
<body>

<p>
Você precisará adicionar o nome do módulo que sua placa usa no arquivo
<path>/etc/modules.autoload.d/kernel-2.6</path>, para ter certeza de que o
módulo é carregado automaticamente quando seu sistema iniciar.
</p>

<pre caption="Editando /etc/modules.autoload.d/kernel-2.6">
<comment>(Mude o nome do módulo conforme necessário.)</comment>
intel-agp
</pre>

</body>
</section>
</chapter>

<chapter>
<title>Teste a aceleração 3D</title>
<section>
<title>Reinicie no novo kernel</title>
<body>

<p>
Reinicie seu computador no novo kernel. Está na hora de ver se você tem direct 
rendering e se funciona bem.
</p>

<pre caption="Testando rendering">
# <i>startx</i>
<comment>(Não  necessidade de carregar módulos para seu driver ou agpgart, se você compilou agpgart como 
módulo.)</comment>
<comment>(Eles serão carregados automaticamente.)</comment>
# <i>glxinfo | grep rendering</i>
direct rendering: Yes
<comment>(Se disser "No", você não tem aceleração 3D.)</comment>
# <i>glxgears</i>
<comment>(Teste seu frames per second (FPS) no tamanho padrão. O número deve ser )</comment>
<comment>(significantemente maior que antes de instalar o x11-drm. Faça isso quando a CPU estiver o mais ociosa
possível.)</comment>
</pre>

</body>
</section>
</chapter>

<chapter>
<title>Usando as fontes de CVS</title>
<section>
<body>

<warn>
Não faça isso se o pacote funcionou.
</warn>

</body>
</section>
<section>
<title>Você precisa de CVS?</title>
<body>

<p>
Primeiro você deve verificar se o pacote x11-drm funciona. Se não funcionar e
você verificou seus registros para verificar se não é um erro de configuração,
você deve considerar as fontes de CVS. Existem também snapshots diários
disponíveis se você não deseja construir o CVS inteiro.
</p>

</body>
</section>
<section>
<title>As fontes de CVS suportam sua placa?</title>
<body>

<p>
Veja a <uri
link="http://dri.freedesktop.org/wiki/Status">lista de placas
suportadas</uri> do DRI para ver se as fontes de CVS suportam sua placa. Mesmo
se não suportarem, mas suportarem uma placa parecida, experimente-as.
</p>

<!-- I see a couple of 8x AGP stuff on the Internet about vanilla 2.4 kernels;
     is this now available or not? I've commented it out for the time being,
     hoping that this doesn't affect us :)

<warn>
"Linux 2.4 doesn't support agp 8x, so I had to go find a backport. The backport 
works .... it doesn't patch quite properly, and it requires 2.4.21 (I've only 
gotten it to work with vanilla, straight from the tarball (not ebuild)). First 
go get the 2.4.20-2.4.21 patch from kernel.org .... (then get the patch,) It 
was on a mailing list somewhere. It doesn't patch cleanly - - one file fails, 
the pci_ids.h file, but if you actually read the file and the reject list, it's
very easy to fix. But it does load, and it gives me 1600x1200 with video 
(although a bit slow b/c of lack of dga) with xfree-drm." (SanityInAnarchy on 
#gentoo)
</warn>

<impo>
The patch is a little tricky to work with but <uri 
link="http://www.ussg.iu.edu/hypermail/linux/kernel/0302.2/att-1618/01-agp3.diff.bz2">here's 
the link</uri>. If you can disable 8X AGP in your BIOS, change it to 4X and you 
may not need the patch.
</impo>
-->

</body>
</section>
<section>
<title>Siga as instruções de CVS</title>
<body>

<p>
O projeto do DRI tem um próprio documento sobre compilação de CVS. Por favor
leia <uri link="http://dri.freedesktop.org/wiki/Building">o
documento</uri> e siga as instruções até a parte <e>Instalando para X.org</e>.
</p>

</body>
</section>
<section>
<title>Instale do CVS</title>
<body>

<p>
Verifique se o(s) módulo(s) de DRI do kernel para seu sistema foram construídos:
</p>

<pre caption="Verificação">
# <i>cd ~/DRI-CVS/build/xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel; ls</i>
</pre>

<p>
Para a 3dfx Voodoo, você deve ver o <path>tdfx.o</path>. Para a Matrox 
G200/G400, você deve ver o <path>mga.o</path>. Para sua ATI Rage 128, você deve
ver o <path>r128.o</path>. Para a ATI Radeon, você deve ver o usar a versão
correta do kernel do Linux. Os kernéis mais recentes nem sempre são suportados.
</p>

<p>
Instale em sua instalação do X.org. É aconselhável fazer um back up do xorg-x11.
</p>

<pre caption="Fazendo back-up do Xorg">
# <i>quickpkg xorg-x11</i>
<comment>(Isto faz back up de seu pacote Xorg-X11.)</comment>
# <i>make install</i>
</pre>

<p>
Siga a seção "Configando o Xorg" acima.
</p>

<p>
Para carregar os módulos apropriados de DRM em seu kernel atual, copie o módulo
de kernel para <path>/lib/modules/`uname -r`/kernel/drivers/char/drm/</path> e
rode <c>modules-update</c> e reinicie seu servidor de X. Se você não estiver
rodando o kernel em que você irá usá-lo, troque <c>`uname -r`,</c> com o nome
do kernel.
</p>

<warn>
Certifique-se de primeiro descarregar quaisquer módulos antigos de DRI que já
podem estar carregados. Note que alguns módulos de DRM requerem que o módulo
agpgart seja carregado primeiro.
</warn>

</body>
</section>
</chapter>

<chapter>
<title>Ajuste sua performance</title>
<section>
<title>Tire o máximo do direct rendering</title>
<body>

<p>
Algumas opções podem aumentar a performance em 30 por cento (ou mais) do padrão.
Configure-as em <path>/etc/X11/xorg.conf</path>.
</p>

<pre caption="xorg.conf">
Section "Device"
  Option     "AGPMode" "4"
  <comment>(Isto aumentou os FPS de 609 para 618.)</comment>
  Option     "AGPFastWrite" "True"
  <comment>(Não teve efeito mensurável, mas pode aumentar a instabilidade de seu computador.)</comment>
  <comment>(Você também pode ter que ligá-lo em seu BIOS.)</comment>
  Option     "EnablePageFlip" "True"
  <comment>(Isto aumentou as FPS de 618 para 702. Também é considerado "arriscado" mas poucas pessoas relataram 
  problemas.)</comment>
  ...
EndSection
</pre>

<p>
Se você quiser configurar ainda mais funções, veja a <uri 
link="http://dri.freedesktop.org/wiki/FeatureMatrix">lista
de funções</uri> no website do DRI ou a <uri
link="http://dri.sourceforge.net/doc/dri_driver_features.phtml">lista de
funções</uri> do Sourceforge.
</p>

</body>
</section>
</chapter>

<chapter>
<title>Resolução de problemas</title>
<section>
<title>Não funciona. Acabei de compilar meu kernel ou troquei para um
novo.</title>
<body>

<p>
Quando você reconstruir seu kernel ou trocar para outro kernel, você terá que
reconstruir o módulo de kernel. Note que você não precisá reinstalar o xorg-x11,
mas você precisará reinstalar o x11-drm.
</p>

</body>
</section>

<section>
<title>Não funciona. Não tenho rendering, e não sei dizer o motivo.</title>
<body>

<p>
Tente fazer <c>insmod radeon</c> antes de iniciar o servidor de X. Também, tente
construir o agpgart no kernel ao invés de como módulo.
</p>

</body>
</section>
<section>
<title>Quando faço startx, obtenho este erro: "[drm] failed to load kernel
module agpgart"</title>
<body>

<p>
Isto é porque você compilou o agpgart no kernel ao invés de como módulo.
Ignore ao menos que você tenha problemas.
</p>

</body>
</section>
<section>
<title>Direct rendering não funciona, e em meu /var/log/Xorg.0.log tenho um erro
sobre versão de driver baixa demais</title>
<body>

<p>
Você não está usando o driver x11-drm. Verifique se você compilou DRM e o driver
no kernel; você não deve fazer isso.
</p>

</body>
</section>
<section>
<title>Eu tenho uma Radeon, e quero TV-Out.</title>
<body>

<p>
Veja os drivers ati-gatos. <c>emerge -s gatos</c>.
</p>

</body>
</section>
<section>
<title>Não funciona. Minha placa é novíssima e fantástica e não tem nenhum
suporte.</title>
<body>

<p>
Experimente os drivers binários. Para os ati-drivers, uma lista existe em
<uri>http://www.schneider-digital.de/html/download_ati.php</uri>. Se eles não
suportarem, use fbdev. É lento, mas funciona.
</p>

</body>
</section>
<section>
<title>Eu tenho uma placa PCI e ela não funciona. Ajuda!</title>
<body>

<p>
Na seção "Device" ative ForcePCIMode. 
</p>

<pre caption="Enabling ForcePCIMode">
Option "ForcePCIMode" "True"
</pre>

</body>
</section>
</chapter>

<chapter>
<title>Reconhecimentos</title>
<section>
<body>

<ol>
  <li>
    Christopher Webber por sugerir uma questão de resolução de problemas sobre
    trocar ou recompilar kernéis
  </li>
  <li>
    Steve, por sugerir constiência nos casos de dri e DRI no
    XF86Config
  </li>
</ol>

</body>
</section>
</chapter>

<chapter>
<title>Referências</title>
<section>
<body>

<ol>
  <li><uri>http://forums.gentoo.org/viewtopic.php?t=46681</uri></li>
  <li><uri>http://forums.gentoo.org/viewtopic.php?t=29264</uri></li>
  <li><uri>http://dri.freedesktop.org/</uri></li>
  <li><uri>http://www.retinalburn.net/linux/dri_status.html</uri></li>
</ol>

</body>
</section>
</chapter>
</guide>