Gentoo Logo

Guida all'accelerazione hardware 3d

Indice:

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)
(Ovviamente il proprio output può essere diverso a causa del diverso hardware.)

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 
(Assicurarsi che /usr/src/linux punti al proprio kernel attuale.)
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 --->
  (L'opzione agpgart non è presente sui kernel a 64-bit; in tal caso basta scegliere il supporto per il proprio chipset.)
  <M> /dev/agpgart (AGP Support)
  (Selezionare il proprio chipset, non quello dell'esempio.)
  <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"
     (Sostituite radeon con il nome del proprio driver.)
     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

(Cambiare il nome del modulo come richiesto.)
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
(Nessun bisogno di caricare moduli per il proprio driver o agpgart, anche se sono stati compilati come moduli.)
(Saranno caricati in automatico.)
$ glxinfo | grep rendering
direct rendering: Yes
(Se c'è scritto "No", l'accelerazione non è abilitata.)
$ glxgears
(Verificare i frame per secondo (FPS). Il numero dovrebbe essere significativamente più alto rispetto
a prima della configurazione di DRM. Eseguire quest'operazione con la cpu il più possibile a riposo.)

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"
  (Questo ha aumentato i FPS da 609 a 618.)
  Option     "AGPFastWrite" "True"
  (Questo non ha avuto effetti misurabili, ma può aumentare l'instabilità del sistema.)
  (Può anche essere necessario attivarlo nel BIOS)
  Option     "EnablePageFlip" "True"
  (Questo ha aumentato i FPS da 618 a 702. E' anche un po' rischioso, ma poche persone hanno riportato problemi.)
  ...
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

  1. Christopher Webber per il suggerimento di una domanda sul cambiare o ricompilare i kernel
  2. Steve, per il suggerimento sulla consistenza nell'uso delle maiuscole per dri e DRI in XF86Config

8.  Riferimenti

  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


Stampa

Aggiornato il 23 agosto 2007

Oggetto: Questa è una guida per far funzionare l'accelerazione 3d sfruttando DRM con Xorg in Gentoo Linux.

Donnie Berkholz
Autore

Jorge Paulo
Redazione

Joshua Saddler
Redazione

Stefano Calzavara
Traduzione

Stefano Pacella
Traduzione

Cristiano Chiucchiolo
Traduzione

Marco Leogrande
Traduzione

Donate to support our development efforts.

Support OSL

Support OSL

Gentoo Centric Hosting: vr.org

VR Hosted

Tek Alchemy

Tek Alchemy

SevenL.net

SevenL.net

Global Netoptex Inc.

Global Netoptex Inc.

Bytemark

Bytemark

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