Guida all'accelerazione hardware 3d
1.Introduzione
Cos'è l'accelerazione hardware 3d e perchè dovrei voler abilitarla?
Con l'accelerazione 3d hardware il rendering di immagini 3d usa il processore
grafico della vostra scheda video invece di sfruttare preziose risorse della
cpu nel disegnare. Si parla anche di accelerazione hardware piuttosto che di
accelerazione software perchè, senza questa accelerazione 3d, la vostra 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 attivo l'accelerazione 3d?
In molti casi, i driver esistono sia precompilati che opensource. I driver
opensource son preferibili, perchè stiamo usando Linux e l'opensource è uno
dei suoi principi chiave. A volte i precompilati sono però l'unica
scelta, come per le schede Nvidia. I driver precompilati includono
media-video/nvidia-kernel e media-video/nvidia-glx per le Nvidia,
media-video/mgavideo per le Matrox e media-video/ati-driver per le ATI. Altri
driver opensource sono media-video/kyro-kernel per le schede KyroII e
media-video/ati-gatos ancora per le schede video ATI, essi mirano a sfruttare
più a fondo le potenzialità video della scheda.
Cos'è il DRI?
Il
Direct Rendering Infrastructure, 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 ed al kernel. Lo
scopo primario del DRI è quello di creare una veloce implementazione delle
OpenGL.
Cos'è X11-DRM e cos'ha a che fare con Xorg?
X11-DRM è un miglioramento di Xorg che aggiunge l'accelerazione 3d per
le schede aggiungendo il necessario modulo del kernel per il direct rendering.
Destinatari
Questa guida è per coloro che non riescono ad abilitare il direct rendering
solamente con XFree. XFree-DRM funziona per i driver 3dfx, gamma, i8x0, matrox,
rage128, radeon, mach64 e sis300. Rimandiamo al
sito web di DRI per maggiori
informazioni e per la documentazione ufficiale.
Contatti
Per suggerimenti, domanda ecc ecc mandate un e-mail a
Donnie Berkholz.
2.Installare Xorg e configurare il kernel
Installare Xorg
Leggere Xorg Configuration Guide per
installare e eseguire Xorg.
Configurare il kernel
Verificate qual è il vostro chipset ed abilitate il supporto solo per quello.
Esempio 1: Controllate il vostro 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 vostro chipset non è supportato dal kernel, potete aggiungere
agp=try_unsupported come un parametro del kernel. Saranno usate le
procedure generiche di Intel per il supporto AGP. Per aggiungere questo
parametro, modificate il file di configurazione del vostro bootloader!
La maggior parte dei kernel, se non tutti, dovrebbe avere queste opzioni.
Nell'esempio si fa uso dei gentoo-sources-2.4.20-r5.
Esempio 2: Configurare il kernel |
# 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
|
Esempio 3: Opzioni del make menuconfig |
Processor type and features --->
<*> MTRR (Memory Type Range Register) support
Character devices --->
<M> /dev/agpgart (AGP Support)
[*] Intel 440LX/BX/GX and I815/I820/I830M/I830MP/I840/I845/I850/I860 support
[ ] Direct Rendering Manager (XFree86 4.1.0 e superiore DRI support)
|
Assicuratevi che il Direct Rendering Manager (DRM) sia
disattivato. Penserà a tutto il pacchetto X11-DRM.
Compilare ed installare il kernel
Esempio 4: Compilare e installare il kernel |
# make dep && make clean bzImage modules modules_install
# mount /boot
# cp arch/i386/boot/bzImage /boot
|
Se volete che il vostro kernel si chiami in modo diverso da
bzImage, assicuratevi di copiarlo in /boot/nomekernel. Non dimenticatevi di
aggiornare grub.conf o lilo.conf e di di lanciare /sbin/lilo se usate
LILO.
3.Installare X11-DRM ed abilitare il direct rendering
Installare X11-DRM
Esempio 5: Installare X11-DRM |
# emerge x11-drm
|
Configurare Xorg.conf
Alcuni chipset richiedono di compilare xorg-x11 con
USE="insecure-drivers". Si applica ai chipset mach64, unichrome e savage
su xorg-x11-6.8.2, e a mach64 e unichrome su org-x11-6.8.99.x. Gli utenti
Savage non dovrebbero provare xorg-x11-6.8.99.x poichè il supporto per savage
è rotto.
Esempio 6: Ricompilare xorg-x11 |
# vim /etc/portage/package.use
x11-base/xorg-x11 insecure-drivers
# emerge xorg-x11
|
Aprite /etc/X11/xorg.conf con il vostro editor preferito e
modificatelo per abilitare DRI e GLX.
Esempio 7: xorg.conf |
...
Section "Module"
Load "dri"
Load "glx"
...
EndSection
...
Section "Device"
Driver "radeon"
...
EndSection
...
Section "dri"
Mode 0666
EndSection
|
Se state usando un altro driver, sostituite "radeon" con la voce appropriata.
4.Verificare il funzionamento dell'accelerazione 3d
Riavviare con il nuovo kernel
Riavviate il sistema con il nuovo kernel, è ora di vedere se il direct
rendering è attivo e se funziona bene.
Esempio 8: Testare il rendering |
# startx
# glxinfo | grep rendering
direct rendering: Yes
# glxgears
|
5.Usare i sorgenti del CVS
Attenzione:
Non fatelo se è stato sufficiente xfree-drm.
|
Vi serve davvero il CVS?
Prima di tutto dovete controllare se il pacchetto x11-drm funziona. Se non lo
fa e avete controllato i log per verificare che non è un errore di
configurazione, potete prendere in considerazione il cvs. Ci sono anche driver
snapshot giornalieri disponibili se non desiderate costruire il completo CVS.
Il CVS supporta la vostra scheda?
Controllate sul sito del DRI la
lista dell'hardware supportato per vedere se il cvs supporta la vostra
scheda. Anche se non lo fa, ma ne supporta una simile, provatelo.
Seguire le istruzioni del CVS
Il progetto DRI ha un documento sulla compilazione dal CVS. Leggete questo
documento, e seguite
le istruzioni per Installazione per X.org.
Installare il CVS
Verificate che i moduli del kernel per il DRI del vostro sistema siano stati
compilati:
Esempio 9: Verifica |
# cd ~/DRI-CVS/build/xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel; ls
|
Per le 3dFX Voodoo, il file interessato è tdfx.o. Per le Matrox
G200/G400, dovrete cercare mga.o. Per le ATI Rage 128, invece,
r128.o. Per le ATI Radeon vi servirà radeon.o. Per
le Intel i810, infine, è necessario i810.o. Se i moduli del
kernel per il DRI non si son compilati, controllate di usare la giusta versione
del kernel di Linux. I kernel più recenti non sono sempre supportati.
Installate sopra la vostra installazione di X.org. Potreste voler fare un
backup di xorg-x11.
Esempio 10: Back up di Xorg |
# quickpkg xorg-x11
# make install
|
Seguite la sezione "Configurare Xorg"
Per caricare il modulo appropriato per il kernel in uso, copiatelo in
/lib/modules/`uname -r`/kernel/drivers/char/drm/, quindi
lanciate modules-update e riavviate il server X. Se non state
utilizzando il kernel che utilizzerete in futuro, invece di `uname -r`,
usate la versione di quel kernel.
Attenzione:
Assicuratevi che prima abbiate disattivato ogni vecchio modulo kernel DRI che
potrebbe essere caricato. Attenzione che alcuni moduli DRM richiedono prima il
caricamento del modulo agpgart.
|
6.Migliorare le prestazioni
Ottenere il massimo dal direct rendering
Alcune opzioni possono aumentare le prestazioni del 30 percento (e perfino di
più). Attivatele in /etc/X11/xorg.conf.
Esempio 11: xorg.conf |
Section "Device"
Option "AGPMode" "4"
Option "AGPFastWrite" "True"
Option "EnablePageFlip" "True"
...
EndSection
|
Se volete altre opzioni, date un'occhiata a
feature matrix
sul sito del DRI o
features listing su Sourceforge.
7.Risoluzione dei problemi
Non funziona, ho ricompilato il mio kernel o lo ho cambiato con uno nuovo.
Ogni volta che ricompilate il kernel o lo cambiate, dovrete ricompilare il
modulo. Notate che non avete bisogno di riemergere xorg-x11, ma avrete bisogno
di riemergere x11-drm.
Non funziona il direct rendering e non so perchè.
Provate insmod radeon prima di avviare X. Provate anche a compilare
agpgart nel kernel anzichè come modulo.
Quando lancio startx, ricevo questo errore: "[drm] failed to load kernel module agpgart"
E' perchè avete compilato agpgart nel kernel anzichè come modulo, ignoratelo
a meno che non avete problemi.
Il direct rendering non funziona ed in /var/log/Xorg.0.log c'è un'errore sulla versione troppo vecchia dei driver.
Non state usando x11-drm, controllate di aver compilato DRM ed i driver
adeguati nel kernel, probabilmente non l'avete fatto.
Ho una Radeon e voglio l'uscita TV
Provate i driver gatos. emerge -s gatos.
Non funziona, la mia scheda è così nuova e potente che non è supportata...
Provate i driver precompilati. Per quelli ati, una lista si trova su
http://www.schneider-digital.de/html/download_ati.php. Se non
funzionano neanche quelli, usate fbdev, son lenti, ma funzionano.
Ho una scheda PCI e non funziona! Aiuto!
Nella sezione "Device" attivate ForcePCIMode.
Esempio 12: Attivare ForcePCIMode |
Option "ForcePCIMode" "True"
|
8.Ringraziamenti
-
Christopher Webber per il suggerimento di una domanda sul cambiare o ricompilare i kernel
-
Steve, per il suggerimento tra i casi dri e DRI in XF86Config
9.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
|