Ghid pentru Accelerare 3D Hardware
1.
Introducere
Ce este accelerarea 3D hardware şi de ce aş dori-o?
Cu ajutorul accelerării 3D hardware, calculele tri-dimensionale utilizează
procesorul grafic al plăcii dvs. video în locul consumului unor resurse
valoroase de procesor prin desenarea imaginilor 3D. Este referită, de
asemenea, ca "accelerare hardware" în loc de "accelerare software", deoarece
fără această accelerare 3D, procesorul dvs. este forţat să deseneze
orice singur utilizând bibliotecile de afişare software Mesa, care
necesită destulă putere de procesare. În timp ce Xorg suportă în mod
normal accelerarea hardware 2D, suferă adesea de lipsa accelerării 3D.
Accelerarea tri-dimensională hardware este valoroasă în situaţiile care
necesită desenarea de obiecte 3D, cum ar fi jocurile, aplicaţiile CAD şi
modelarea.
Cum pot obţine accelerarea 3D hardware?
În cele mai multe cazuri, sunt prezente atât driver-ele binare cât şi
cele open-source. Driver-ele open-source sunt preferate, deoarece utilizăm
Linux şi open source este unul dintre principiile de bază. Uneori,
driver-ele binare sunt singura opţiune, ca în cazul plăcilor nVidia.
Driver-ele binare includ media-video/nvidia-kernel şi media-video/nvidia-glx
pentru plăcile nVidia, media-video/mgavideo pentru plăcile Matrox şi
media-video/ati-drivers pentru plăcile ATI. Alte driver-e open-source includ
media-video/kyro-kernel pentru plăcile KyroII şi media-video/ati-gatos
pentru plăcile ATI, ce pretind să suporte capabilităţile video ale
plăcilor ATI cât mai complet.
Ce este DRI?
Infrastructura de Procesare
Directă (eng. Direct Rendering Infrastructure), cunoscută, de
asemenea, sub numele de DRI, este o infrastructură ce permite accesul direct
la componentele hardware într-o manieră sigură şi eficientă. Acesta
include modificări ale server-ului X, ale unor biblioteci client şi ale
kernel-ului. Prima utilizare majoră pentru DRI este crearea implementărilor
rapide OpenGL.
Ce este X11-DRM şi cum interacţionează acesta cu aplicaţia normală Xorg?
X11-DRM este o îmbunătăţire pentru Xorg ce adaugă accelerare 3D
pentru plăci, prin adăugarea modulului de kernel necesar pentru procesarea
directă.
Scop
Acest ghid este pentru cei ce nu pot face funcţională procesarea directă
doar cu ajutorul Xorg. X11-DRM funcţionează pentru driver-ele 3dfx, gamma,
i8x0, matrox, rage128, radeon, mach64 and sis300. Deţinătorii plăcilor VIA
nu ar trebui să utilizeze x11-drm, dar ar trebui în loc să
utilizeze driverul DRI din versiunile recente de kernel (>2.6.13). Vizitaţi
pagina DRI pentru mai multe
informaţii şi documentaţie.
Sugestii
Pentru sugestii, întrebări, etc, trimiteţi-i un mesaj lui Donnie Berkholz.
2.
Instalarea Xorg şi configurarea kernel-ului dvs.
Instalarea Xorg
Vă rugăm să consultaţi Ghidul pentru
Configurarea Xorg pentru a face funcţional Xorg.
Configurarea kernel-ului dvs.
Faceţi o probă pentru a afla care este chipset-ul dvs. şi activaţi-l doar
pe acela.
Cod 2.1: Verficarea chipset-ului dvs. AGP |
# emerge pciutils; lspci | grep AGP
# 00:01.0 PCI bridge: Intel Corp. 440BX/ZX/DX - 82443BX/ZX/DX AGP bridge (rev 03)
|
Dacă chipset-ul dvs. nu este suportat de către kernel, aţi putea avea
succes prin adăugarea agp=try_unsupported ca parametru de kernel.
Aceasta va utiliza rutinele generice ale Intel pentru suportul AGP. Pentru a
adăuga acest parametru, editaţi fişierul de configurare al aplicaţiei
bootloader!
Cele mai multe kernel-uri, dacă nu toate, ar trebui să aibă aceste
opţiuni. Acesta a fost configurat utilizând gentoo-sources-2.4.20-r5.
Cod 2.2: Configurarea kernel-ului |
# ls -l /usr/src/linux
lrwxrwxrwx 1 root root 22 May 29 18:20 /usr/src/linux -> linux-2.4.20-gentoo-r5
# cd /usr/src/linux
# make menuconfig
|
Cod 2.3: opţiunile make menuconfig |
Processor type and features --->
<*> MTRR (Memory Type Range Register) support
Character devices --->
<M> /dev/agpgart (AGP Support)
[M] Intel 440LX/BX/GX and I815/I820/I830M/I830MP/I840/I845/I850/I860 support
< > Direct Rendering Manager (XFree86 4.1.0 and higher DRI support)
|
Asiguraţi-vă că Direct Rendering Manager (DRM) este dezactivat.
Pachetul X11-DRM va oferi propriile module.
Compilaţi şi instalaţi kernel-ul dvs.
Cod 2.4: Compilarea şi instalarea kernel-ului |
# make dep && make clean bzImage modules modules_install
# mount /boot
# cp arch/i386/boot/bzImage /boot
|
Dacă doriţi să denumiţi kernel-ul altfel decât bzImage, asiguraţi-vă
să îl copiaţi ca /boot/numeleales, în loc. Nu uitaţi să setaţi
grub.conf sau lilo.conf şi să rulaţi /sbin/lilo în cazul în care
utilizaţi LILO.
3.
Instalarea X11-DRM şi configurarea procesării directe
Instalarea X11-DRM
Cod 3.1: Instalarea X11-DRM |
# emerge x11-drm
|
Configurarea Xorg.conf
Unele chipset-uri necesită să recompilaţi xorg-x11 cu indicatorul
USE="insecure-drivers". Aceasta se aplică la chipset-urile mach64,
unichrome şi savage pe xorg-x11-6.8.2, şi mach64 şi unichrome pe
xorg-x11-6.8.99.x. Utilizatorii Savage nu ar trebui să încerce să ruleze
xorg-x11-6.8.99.x deoarece suportul pentru savage este eronat.
Cod 3.2: Recompilarea xorg-x11 |
# echo "x11-base/xorg-x11 insecure-drivers" >> /etc/portage/package.use
# emerge xorg-x11
|
Deschideţi /etc/X11/xorg.conf cu editorul de texte favorit şi
editaţi-l pentru a activa DRI şi GLX.
Cod 3.3: xorg.conf |
...
Section "Module"
Load "dri"
Load "glx"
...
EndSection
...
Section "Device"
Driver "radeon"
...
EndSection
...
Section "dri"
Mode 0666
EndSection
|
Dacă utilizaţi un alt driver, înlocuiţi "radeon" cu al dvs.
Modificări în modules.autoload.d
Va trebui să adăugaţi numele modulului utilizat de placa dvs. în
/etc/modules.autoload.d/kernel-2.6 pentru a vă asigura că
modulul este încărcat automat când sistemul porneşte.
Cod 3.4: Editarea /etc/modules.autoload.d/kernel-2.6 |
intel-agp
|
Notă:
Dacă aţi compilat agpgart ca modul, va trebui, de asemenea, să îl
adăugaţi în fişierul /etc/modules.autoload.d/kernel-2.6.
|
4.
Testarea accelerării 3D
Reporniţi în noul kernel
Reporniţi sistemul dvs. cu noul kernel şi autentificaţi-vă ca un
utilizator normal. Este timpul să vedem dacă aveţi procesarea directă
activă şi cât de bună este.
Cod 4.1: Testarea procesării directe |
$ startx
$ glxinfo | grep rendering
direct rendering: Yes
$ glxgears
|
5.
Utilizarea surselor CVS
Atenţie:
Nu faceţi acest lucru dacă pachetul a funcţionat.
|
Aveţi novoie de sursele CVS?
Mai întâi trebuie să verificaţi dacă pachetul x11-drm funcţionează.
Dacă nu funcţionează şi aţi verificat fişierele log pentru vreo
eroare de configurare, aţi putea lua în considerare sursele CVS. Există
şi versiuni snapshot zilnice disponibile, dacă nu doriţi să compilaţi
din CVS.
Suportă sursele CVS placa dvs?
Verificaţi lista de plăci
suportate de DRI pentru a vedea dacă sursele CVS vă suportă placa
dvs. Chiar dacă nu, dar suportă o placă similară, încercaţi-o.
Urmaţi Instrucţiunile CVS
Proiectul DRI are un document despre compilarea CVS. Vă rugăm să
consultaţi documentul şi să
urmaţi instrucţiunile până la partea denumită Installing for
X.org.
Instalarea surselor CVS
Verificaţi că modulul kernel DRI pentru sistemul dvs. a fost compilat:
Cod 5.1: Verificare |
# cd ~/DRI-CVS/build/xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel; ls
|
Pentru plăcile 3dfx Voodoo, ar trebui să observaţi tdfx.o.
Pentru Matrox G200/G400, ar trebui să observaţi mga.o. Pentru
ATI Rage 128, ar trebui să existe r128.o. Pentru ATI Radeon, ar
trebui să vedeţi radeon.o. Pentru Intel i810, ar trebui să
vedeţi i810.o. Dacă modulul DRI nu s-a compilat, ar trebui să
verficaţi dacă utilizaţi versiunea corectă de kernel Linux. Cele mai
recente kernel-uri nu sunt întotdeauna suportate.
Instalaţi peste instalarea dvs. de X.org. Aţi putea să faceţi o copie de
siguranţă a xorg-x11.
Cod 5.2: Copie de siguranţă pentru Xorg |
# quickpkg xorg-x11
# make install
|
Urmaţi secţiunea "Configurarea Xorg", de mai sus.
Pentru a încărca modulul DRM corespunzător în kernel-ul ce rulează,
copiaţi modulul de kernel în directorul /lib/modules/`uname
-r`/kernel/drivers/char/drm/ şi apoi rulaţi modules-update
şi reporniţi server-ul X. Dacă nu rulaţi kernel-ul pe care îl veţi
utiliza, în loc de `uname -r`, scrieţi numele kernel-ului respectiv.
Atenţie:
Asiguraţi-vă că prima dată descărcaţi orice module mai vechi de
kernel pentru DRI ce ar fi putut fi deja încărcate. Notaţi faptul că
unele module DRM necesită ca modulul agpgart să fie încărcat primul.
|
6.
Ajustarea performanţelor
Scoateţi tot ce se poate din procesarea directă
Unele opţiuni pot îmbunătăţi performanţele cu până la 30 de procente
(sau mai mult) peste valoarea implicită. Setaţi-le în
/etc/X11/xorg.conf. Oricum, va trebui mai întâi să verificaţi
dacă placa dvs. de bază şi placa video suportă aceste opţiuni.
Mai întâi, să vedem dacă placa dvs. video poate suporta scrierile rapide.
Vom face asta prin inspectarea atentă a textului afişat de comanda
lspci. În mod specific, căutăm informaţiile despre "VGA
compatible controller".
Cod 6.1: Verificarea plăcii video |
# lspci -vv
01:00.0 VGA compatible controller: ATI Technologies Inc Radeon Mobility M6 LY (prog-if 00 [VGA])
. . .
Capabilities: [58] AGP version 2.0
Status: RQ=48 Iso- ArqSz=0 Cal=0 SBA+ ITACoh- GART64- HTrans- 64bit- FW+ AGP3- Rate=x1,x2,x4
|
În timp ce destul de multe informaţii sunt afişate, vom căuta FW
în subsecţiunea "Status" a secţiunii de capabilităţi AGP. Dacă textul
FW+ este prezent în linia "Status", aceasta înseamnă că placa
video suportă scrierile rapide. Putem verifica, acum, dacă placa de bază
suportă scrierile rapide.
Important:
Dacă nu vedeţi FW+, dar in loc vedeţi FW-, nu puteţi activa
scrierile rapude în xorg.conf. Placa nu suportă scrierile
rapide.
|
Acum, să ne asigurăm că şi placa dvs. de bază suportă scrierile
rapide. De această dată, analizaţi secţiunea "Host bridge" din textul
afişat de comanda lspci.
Cod 6.2: Verificarea plăcii de bază |
# lspci -vv
00:00.0 Host bridge: Intel Corporation 82830 830 Chipset Host Bridge (rev 02)
. . .
Capabilities: [a0] AGP version 2.0
Status: RQ=32 Iso- ArqSz=0 Cal=0 SBA+ ITACoh- GART64- HTrans- 64bit- FW+ AGP3- Rate=x1,x2,x4
|
Din nou, examinaţi subsecţiunea "Status" din cadrul secţiunii "Capabilities"
pentru AGP. Căutaţi textul FW. Dacă vedeţi FW+, placa dvs.
de bază suportă scrierile rapide.
Important:
Amintiţi-vă, atât informaţiile despre placa video cât şi cele despre
placa de bază trebuie să afişeze capabilitatea FW. Dacă una
dintre ele afişează FW- în linia "Status", nu puteţi activa
scrierile rapide în xorg.conf.
|
Presupunând că totul a funcţionat corect şi atât placa video cât şi
placa de bază suportă scrierile rapide, să activăm această opţiune
în /etc/X11/xorg.conf şi să obţinem cea mai mare
performanţă din placa dvs.
Cod 6.3: xorg.conf |
Section "Device"
Option "AGPMode" "4"
Option "AGPFastWrite" "True"
Option "EnablePageFlip" "True"
...
EndSection
|
Atenţie:
Activarea AGPFastWrite pe un cipset VIA va cauza, mai mult ca sigur,
blocarea maşinii dvs. Cipseturile VIA nu reacţionează corect la scrierile
rapide, deci utilizaţi această opţiune pe riscul dvs.
|
Notă:
Amintiţi-vă, dacă doriţi să puteţi utiliza scrierile rapide corect,
trebuie mai întâi să activaţi opţiunea corespunzătoare în BIOS.
|
Dacă doriţi să mai setaţi şi alte opţiuni, consultaţi matricea de opţiuni
de pe situl DRI, sau lista de
opţiuni de pe Sourceforge.
7.
Probleme
Nu funcţionează. Tocmai am recompilat kernel-ul sau am trecut la o versiune mai nouă.
Ori de câte ori vă recompilaţi kernel-ul sau treceţi la o altă versiune
de kernel, va trebui să recompilaţi modulul de kernel. Notaţi faptul că
nu trebuie să recompilaţi xorg-x11, însă va trebui să recompilaţi
x11-drm.
Nu funcţionează. Procesarea directă nu este activă şi nu ştiu de ce.
Încercaţi insmod radeon înainte de a porni server-ul X. De asemenea,
încercaţi să compilaţi agpgart în kernel în loc de ca modul.
Când rulez startx, primesc eroarea: "[drm] failed to load kernel module agpgart"
Aceasta se întâmplă în cazul în care compilaţi agpgart în kernel în
loc de ca modul. Ignoraţi acest mesaj în cazul în care nu vă cauzează
probleme.
Procesarea directă nu funcţionează şi în /var/log/Xorg.0.log există o eroare despre versiunea prea mică a driver-ului.
Nu utilizaţi driver-ul x11-drm. Verificaţi dacă aţi compilat DRM ca driver
în kernel; nu ar trebui.
Am o placă Radeon şi doresc funcţionarea TV-Out.
Instalaţi driver-ele ati-gatos. emerge -s gatos.
Nu funcţionează. Placa mea este atât de nouă şi de bună încât nu este suportată deloc.
Încercaţi driver-ele binare. Pentru ati-drivers, o listă de plăci
suportate este prezentă la
http://www.schneider-digital.de/html/download_ati.php. Dacă acelea
nu suportă placa dvs., utilizaţi fbdev. Este lent, dar funcţionează.
Am o placă PCI şi nu funcţionează. Ajutor!
În secţiunea "Device" activaţi ForcePCIMode.
Cod 7.1: Activarea ForcePCIMode |
Option "ForcePCIMode" "True"
|
8.
Mulţumiri
-
Lui Christopher Webber pentru sugestia secţiunii de probleme despre
modificarea sau recompilarea kernel-ului
-
Lui Steve, pentru sugestia despre consistenţa în cazurile dri şi DRI
în XF86Config
9.
Referinţe
- http://forums.gentoo.org/viewtopic.php?t=46681
- http://forums.gentoo.org/viewtopic.php?t=29264
- http://dri.freedesktop.org/
- http://www.retinalburn.net/linux/dri_status.html
Conţinutul acestui document este publicat sub licenţa Creative Commons -
Attribution / Share Alike.
|