Guida all'accelerazione hardware 3d
1.
Introduzione
Cos'è l'accelerazione hardware 3d e perchè abilitarla?
Con l'accelerazione 3d hardware il rendering tridimensionale usa il processore
grafico della propria scheda video invece di sfruttare preziose risorse della
cpu per disegnare immagini 3D. Si parla anche di accelerazione hardware
piuttosto che di accelerazione software perchè, senza questa accelerazione 3d,
la propria CPU è obbligata a disegnare tutto da sola facendo uso delle librerie
di rendering Mesa, ciò implica un considerevole consumo di risorse. Mentre Xorg
di norma supporta l'accelerazione 2d hardware, spesso manca di quella 3d.
L'accelerazione hardware 3d è apprezzabile in situazioni che richiedono il
rendering di oggetti 3d come giochi, CAD 3D o la realizzazione di modelli.
Come attivare l'accelerazione 3d?
In molti casi, i driver esistono sia binari che opensource. I driver opensource
sono preferibili, perchè si sta usando Linux e l'opensource è uno dei suoi
principi chiave. A volte i binari sono però l'unica scelta, come per le schede
Nvidia. I driver precompilati includono x11-drivers/nvidia-drivers per
le Nvidia e x11-drivers/ati-drivers per le ATI.
Cos'è il DRI?
Il Direct Rendering
Infrastructure (ndT: "Infrastruttura per il Rendering Diretto"),
abbreviato in DRI, è il meccanismo per effettuare l'accesso diretto alla scheda
video in maniera sicura ed efficiente. Esso include cambiamenti al server X, a
parecchie librerie e al kernel. Lo scopo primario di DRI è quello di creare
veloci implementazioni di OpenGL.
Cos'è DRM e cos'ha a che fare con Xorg?
DRM (Direct Rendering Manager, "Gestore del Rendering Diretto" ndT) è un
miglioramento di Xorg che aggiunge l'accelerazione 3d per le schede
aggiungendo il necessario modulo del kernel per il "direct rendering" (ndT:
d'ora in poi "rendering diretto").
Destinatari
Questa guida è per coloro che non riescono ad abilitare il rendering diretto
soltanto con Xorg. DRM funziona con i seguenti driver:
- 3dfx
- i8x0
- matrox
- rage128
- radeon
- mach64
- sis300
- via
Si rimanda al sito web di DRI per
maggiori informazioni e per la documentazione ufficiale.
Contatti
Per suggerimenti, domande, ecc. mandare un e-mail a Donnie Berkholz.
2.
Installare Xorg e configurare il kernel
Installare Xorg
Leggere la Guida alla configurazione di
X.Org per installare ed eseguire Xorg.
Configurare il kernel
Verificare qual è il proprio chipset ed abilitare il supporto solo per quello.
Codice 2.1: Controllare il proprio chipset AGP |
# emerge pciutils; lspci | grep AGP
# 00:01.0 PCI bridge: Intel Corp. 440BX/ZX/DX - 82443BX/ZX/DX AGP bridge (rev 03)
|
Se il proprio chipset non è supportato dal kernel, provare ad aggiungere
agp=try_unsupported come parametro del kernel. Saranno usate le procedure
generiche di Intel per il supporto AGP. Per aggiungere questo parametro,
modificare il file di configurazione del proprio bootloader!
La maggior parte dei kernel, se non tutti, dovrebbero avere queste opzioni.
Nell'esempio si fa uso di un kernel gentoo-sources standard.
Codice 2.2: Configurare il kernel |
# ls -l /usr/src/linux
lrwxrwxrwx 1 root root 22 2007-02-14 20:12 /usr/src/linux -> linux-2.6.18-gentoo-r4
# cd /usr/src/linux
# make menuconfig
|
Codice 2.3: Opzioni di make menuconfig |
Processor type and features --->
<*> MTRR (Memory Type Range Register) support
Device drivers --->
Character devices --->
<M> /dev/agpgart (AGP Support)
<M> Intel 440LX/BX/GX, I8xx and E7x05 support
<M> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support)
|
Compilare ed installare il kernel
Codice 2.4: Compilare e installare il kernel |
# make && make modules_install
|
Non dimenticarsi di aggiornare grub.conf o lilo.conf e
di lanciare /sbin/lilo se si usa LILO.
3.
Configurare il rendering diretto
Configurare Xorg.conf
Aprire /etc/X11/xorg.conf con il proprio editor preferito e
modificarlo per abilitare DRI e GLX.
Codice 3.1: xorg.conf |
...
Section "Module"
Load "dri"
Load "glx"
...
EndSection
...
Section "Device"
Driver "radeon"
...
EndSection
...
Section "dri"
Mode 0666
EndSection
|
Modifiche a modules.autoload.d
Bisognerà aggiungere il nome del modulo usato dalla propria scheda nel file
/etc/modules.autoload.d/kernel-2.6, per essere sicuri che il modulo
sia caricato automaticamente all'avvio del sistema.
Codice 3.2: Modificare /etc/modules.autoload.d/kernel-2.6 |
intel-agp
|
Nota:
Se agpgart è stato compilato come modulo, aggiungere anch'esso a
/etc/modules.autoload.d/kernel-2.6.
|
4.
Verificare il funzionamento dell'accelerazione 3d
Riavviare con il nuovo kernel
Riavviare il sistema con il nuovo kernel e fare il login come utente normale. È
giunta ora di vedere se il rendering diretto è attivo e se funziona bene.
glxinfo e glxgears fanno parte del pacchetto mesa-progs,
accertarsi quindi che esso sia installato prima di lanciare questi comandi.
Codice 4.1: Testare il rendering |
$ startx
$ glxinfo | grep rendering
direct rendering: Yes
$ glxgears
|
Nota:
Considerare anche che gli FPS potrebbero essere limitati dalla frequenza di
aggiornamento del proprio schermo, se glxgears visualizza un valore di
70-100 FPS. games-fps/ut2004-demo è un migliore strumento di benchmark,
dato che riesce a dare dei risultati più realistici.
|
5.
Migliorare le prestazioni
Ottenere il massimo dal rendering diretto
Alcune opzioni potrebbero aumentare le prestazioni del 30 percento (o più)
rispetto alla norma configurandole opportunamente in
/etc/X11/xorg.conf. Prestare solo attenzione a controllare che la
propria scheda madre e la propria scheda video supportino queste opzioni.
Prima di tutto, verificare se la propria scheda video può supportare
l'opzione "fast writes" (ndT: scritture rapide). Per fare questo, analizzare
l'output di lspci. In particolare, cercare informazioni su "VGA
compatible controller".
Codice 5.1: Controllo della scheda 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
|
Nonostante lspci visualizzi un gran numero di informazioni, cercare la
sigla FW nella sottosezione "Status" nella sezione AGP "Capabilities". Se
viene trovato FW+ nella riga "Status", allora la scheda supporta le
scritture rapide. Adesso controllare la stessa cosa anche per la scheda madre.
Importante:
Se non viene trovato FW+, ma invece FW-, non si potranno abilitare
le scritture rapide in xorg.conf, in quanto la propria scheda video
non le supporta.
|
Adesso controllare la scheda madre. Questa volta, cercare nella sezione "Host
bridge" dell'output di lspci.
Codice 5.2: Controllo della scheda madre |
# 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
|
Nuovamente, esaminare la sottosezione "Status" nella sezione AGP "Capabilities".
Cercare la sigla FW: se c'è FW+, la propria scheda madre supporta
le scritture rapide.
Importante:
Ricordarsi che entrambe le informazioni della scheda video e della scheda
madre devono indicare FW+. Se anche solo uno dei due dispositivi mostra
la sigla FW- nella riga "Status", allora le scritture rapide non potranno
essere abilitate in xorg.conf.
|
Assumendo che tutto sia andato bene e che sia la propria scheda madre, sia la
propria scheda video supportino le scritture rapide, abilitare l'apposita
opzione in /etc/X11/xorg.conf per ottenere il massimodelle
prestazioni dal proprio hardware.
Codice 5.3: xorg.conf |
Section "Device"
Option "AGPMode" "4"
Option "AGPFastWrite" "True"
Option "EnablePageFlip" "True"
...
EndSection
|
Avvertenza:
Abilitando AGPFastWrite su un chipset VIA chipset molto probabilmente il
proprio computer si bloccherà. I chipset VIA non funzionano molto bene con le
scritture rapide: usare questa impostazione a proprio rischio e pericolo.
|
Nota:
Ricordarsi che per far funzionare correttamente le scritture rapide bisognerà
prima abilitare l'apposita opzione nel BIOS.
|
Se si desiderano altre opzioni, dare un'occhiata a matrice delle
caratteristiche sul sito del DRI o all'elenco delle
caratteristiche su Sourceforge.
6.
Risoluzione dei problemi
Non funziona il rendering diretto e non so perchè.
Provare modprobe radeon prima di avviare X (sostituire radeon con
il nome del proprio driver). Inoltre, provare anche a compilare agpgart nel
kernel anzichè come modulo.
Quando lancio startx, ricevo questo errore: "[drm] failed to load kernel
module agpgart"
Succede perchè agpgart è stato compilato staticamente nel kernel anzichè come
modulo, ignorare questo errore a meno che non si riscontrino problemi.
Ho una Radeon e voglio l'uscita TV
I driver sviluppati in origine dal progetto GATOS sono stati fusi assieme a quelli
sviluppati da Xorg. Non c'è bisogno di alcun pacchetto particolare per l'uscita
TV; è sufficiente x11-drivers/xf86-video-ati.
Non funziona. La mia scheda è così nuova e potente e incredibilmente non
è supportata...
Provare i driver binari. Per gli ati-drivers, una lista si trova su
http://ati.amd.com/support/drivers/linux/linux-radeon.html (per x86)
e su http://ati.amd.com/support/drivers/linux64/linux64-radeon.html
(per amd64). Se non funzionano neanche quelli, usare fbdev: sono lenti,
ma funzionano.
Ho una scheda PCI e non funziona! Aiuto!
Modificare /etc/X11/xorg.conf. Nella sezione "Device" attivare
ForcePCIMode.
Codice 6.1: Attivare ForcePCIMode |
Option "ForcePCIMode" "True"
|
7.
Ringraziamenti
-
Christopher Webber per il suggerimento di una domanda sul cambiare o
ricompilare i kernel
-
Steve, per il suggerimento sulla consistenza nell'uso delle maiuscole per
dri e DRI in XF86Config
8.
Riferimenti
- 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
I contenuti di questo documento sono rilasciati sotto la licenza Creative
Commons - Attribution / Share Alike.
|