Gentoo Logo

Ghid pentru Accelerare 3D Hardware

Conţinut:

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, intel, 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)
(Linia afişată la dvs. este posibil să nu se potrivească cu cea de mai sus, din cauza componentelor diferite)

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
(Asiguraţi-vă că /usr/src/linux indică spre kernel-ul curent.)
# 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
(Activaţi pentru chipset-ul dvs. în locul celui de sus.)
< > 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

(Acest exemplu este pentru un kernel 2.4)
# 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

(Adăugaţi indicatorul USE insecure-drivers dacă utilizaţi unul din chipset-urile menţionate mai sus)
# 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

(Modificaţi numele modului, corespunzător.)
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
(Nu trebuie să încărcăm modulele pentru driver-ul dvs. sau pentru agpart, dacă aţi compilat agpart ca modul.)
(Vor fi încărcate automat.)
$ glxinfo | grep rendering
direct rendering: Yes
(Dacă afişează "No," atunci nu aveţi accelerare 3D.)
$ glxgears
(Testaţi numărul de cadre pe secundă (FPS - eng. Frames Per Second) la mărimea implicită. Numărul ar trebui să fie )
(semnificativ mai mare decât înainte de a instalat x11-drm. Faceţi acest lucru cât timp nu există prea mare activitate pe procesor, pe cât posibil.)

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
(Aceasta vă face o copie de siguranţă pentru pachetul dvs. 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"
  (Aceasta a îmbunătăţit numărul de cadre pe secundă de la 609 la 618.)
  Option     "AGPFastWrite" "True"
  (Aceasta nu a avut un efect măsurabil, dar poate mări instabilitatea sistemului dvs.)
  (Este posibil să trebuiască să o setaţi şi din BIOS.)
  Option     "EnablePageFlip" "True"
  (Aceasta a îmbunătăţi numărul de cadre pe secundă de la 618 la 702. Este şi riscantă, însă puţini utilizatori au raportat probleme.)
  ...
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

  1. Lui Christopher Webber pentru sugestia secţiunii de probleme despre modificarea sau recompilarea kernel-ului
  2. Lui Steve, pentru sugestia despre consistenţa în cazurile dri şi DRI în XF86Config

9.  Referinţe

  1. http://forums.gentoo.org/viewtopic.php?t=46681
  2. http://forums.gentoo.org/viewtopic.php?t=29264
  3. http://dri.freedesktop.org/
  4. http://www.retinalburn.net/linux/dri_status.html


Imprimare

Actualizat la 12 Mai 2006

Versiunea originală a acestui document a fost actualizată ultima dată la 11 Septembrie 2011

Sumar: Acest document este un ghid cu scopul de a avea funcţională accererarea 3D utilizând X11-DRM cu Xorg în Gentoo Linux.

Donnie Berkholz
Autor

Jorge Paulo
Editor

Alin Dobre
Translator

Donate to support our development efforts.

Copyright 2001-2012 Gentoo Foundation, Inc. Questions, Comments? Contact us.