<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE guide SYSTEM "/dtd/guide.dtd">
<!-- $Header: /var/cvsroot/gentoo/xml/htdocs/doc/it/dri-howto.xml,v 1.29 2012/02/22 20:57:51 swift Exp $ -->

<guide lang="it">
<title>Guida all'accelerazione hardware 3D</title>

<author title="Autore">
  <mail link="dberkholz"/>
</author>
<author title="Redazione">
  <mail link="peesh"/>
</author>
<author title="Redazione">
  <mail link="nightmorph"/>
</author>
<author title="Traduzione">
  <mail link="ilmalcom@supereva.it">Stefano Calzavara</mail>
</author>
<author title="Traduzione">
  Stefano Pacella
</author>
<author title="Traduzione">
  <mail link="cristiano.chiucchiolo@gmail.com">Cristiano Chiucchiolo</mail>
</author>
<author title="Traduzione">
  <mail link="dark.knight.ita@gmail.com">Marco Leogrande</mail>
</author>


<abstract>
Questa è una guida per far funzionare l'accelerazione 3D sfruttando DRM con Xorg
in Gentoo Linux.
</abstract>

<!-- The content of this document is licensed under the CC-BY-SA license -->
<!-- See http://creativecommons.org/licenses/by-sa/2.5 -->
<license/>

<version>5</version>
<date>2011-09-11</date>

<chapter>
<title>Introduzione</title>
<section>
<title>Cos'è l'accelerazione hardware 3D e perchè abilitarla?</title>
<body>

<p>
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.
</p>

</body>
</section>
<section>
<title>Come attivare l'accelerazione 3D?</title>
<body>

<p>
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, specialmente se la
propria scheda video è così nuova che i driver opensource non sono ancora stati
scritti per supportare le sue caratteristiche. I driver precompilati 
includono <c>x11-drivers/nvidia-drivers</c> per
le schede nVidia e <c>x11-drivers/ati-drivers</c> per le schede AMD/ATI.
</p>

</body>
</section>
<section>
<title>Cos'è il DRI?</title>
<body>

<p>
Il <uri link="http://dri.freedesktop.org/wiki/">Direct Rendering
Infrastructure</uri> (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.
</p>

</body>
</section>
<section>
<title>Cos'è DRM e cos'ha a che fare con Xorg?</title>
<body>

<p>
DRM (Direct Rendering Manager, "Gestore del Rendering Diretto" ndT) è un
<e>miglioramento</e> 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").
</p>

</body>
</section>
<section>
<title>Destinatari</title>
<body>

<p>
Questa guida è per coloro che non riescono ad abilitare il rendering diretto
soltanto con Xorg. DRM funziona con i seguenti driver:
</p>

<ul>
  <li>3dfx</li>
  <li>intel</li>
  <li>matrox</li>
  <li>nouveau</li>
  <li>rage128</li>
  <li>radeon</li>
  <li>mach64</li>
  <li>sis300</li>
  <li>via</li>
</ul>

<p>
Si rimanda al <uri link="http://dri.freedesktop.org/">sito web di DRI</uri> per
maggiori informazioni e per la documentazione ufficiale.
</p>

</body>
</section>
</chapter>

<chapter>
<title>Installare Xorg e configurare il kernel</title>
<section>
<title>Installare Xorg</title>
<body>

<p>
Leggere la <uri link="/doc/it/xorg-config.xml">Guida alla configurazione di
X.Org</uri> per installare ed eseguire Xorg.
</p>

</body>
</section>
<section>
<title>Configurare il kernel</title>
<body>

<p>
Verificare qual è il proprio chipset ed abilitare il supporto solo per quello.
</p>

<pre caption="Controllare il proprio chipset AGP">
# <i>emerge pciutils; lspci | grep AGP</i>
# <i>00:01.0 PCI bridge: Intel Corp. 440BX/ZX/DX - 82443BX/ZX/DX AGP bridge (rev 03)</i>
<comment>(Ovviamente il proprio output può essere diverso a causa del diverso hardware.)</comment>
</pre>

<p>
Se il proprio chipset non è supportato dal kernel, provare ad aggiungere
<c>agp=try_unsupported</c> 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!
</p>

<p>
La maggior parte dei kernel, se non tutti, dovrebbero avere queste opzioni.
Nell'esempio si fa uso di un kernel <c>gentoo-sources</c> standard.
</p>

<pre caption="Configurare il kernel">
# <i>ls -l /usr/src/linux </i>
<comment>(Assicurarsi che /usr/src/linux punti al proprio kernel attuale.)</comment>
lrwxrwxrwx 1 root root 22 2007-02-14 20:12 /usr/src/linux -> linux-2.6.18-gentoo-r4
# <i>cd /usr/src/linux</i>
# <i>make menuconfig</i>
</pre>

<pre caption="Opzioni di make menuconfig">
Processor type and features ---&gt;
  &lt;*&gt; MTRR (Memory Type Range Register) support
Device drivers ---&gt;
  Graphics support --->
  &lt;M&gt; /dev/agpgart (AGP Support) --->
  <comment>(L'opzione agpgart non è presente sui kernel a 64-bit; in tal caso basta scegliere il supporto per il proprio chipset.)</comment>
  &lt;M&gt; Intel 440LX/BX/GX, I8xx and E7x05 support
    <comment>(Selezionare il proprio chipset, non quello dell'esempio.)</comment>
  &lt;M&gt; Direct Rendering Manager (XFree86 4.1.0 and higher DRI support)
    &lt;M&gt; <comment>(Selezionare la propria scheda grafica dall'elenco)</comment>
</pre>

</body>
</section>
<section>
<title>Compilare ed installare il kernel</title>
<body>

<pre caption="Compilare e installare il kernel">
# <i>make &amp;&amp; make modules_install</i>
</pre>

<p>
Non dimenticarsi di aggiornare <path>grub.conf</path> o <path>lilo.conf</path> e
di lanciare <c>/sbin/lilo</c> se si usa LILO.
</p>

</body>
</section>
<section>
<title>Aggiunta del proprio utente al gruppo video</title>
<body>

<p>Ora aggiungere il proprio utente al gruppo video, come spiegato
nell'<uri link="/doc/it/handbook">handbook</uri>:
</p>

<pre caption="Aggiungere un utente al gruppo video">
# <i>gpasswd -a username video</i>
</pre>

</body>
</section>
</chapter>

<chapter>
<title>Configurare il rendering diretto</title>
<section id="configure_xorg">
<title>Configurare Xorg</title>
<body>

<p>
Solitamente è sufficiente aggiungere il proprio utente al gruppo
<c>video</c> per abilitare l'accelerazione hardware. Ma in alcuni casi
potrebbe essere necessario creare un file in <path>/etc/X11/xorg.conf.d/</path>.
Lo si può nominare come si desidera; assicurarsi solo che termini con
<path>.conf</path>. Aprire il proprio editor di testo preferito e creare
un file con il seguente contenuto:

</p>

<pre caption="/etc/X11/xorg.conf.d/10-dri.conf">
Section "Device"
     Driver "radeon"
     <comment>(Sostituite radeon con il nome del proprio driver.)</comment>
EndSection
Section "dri"
     Mode 0666
EndSection
</pre>

</body>
</section>
<section>
<title>Modifiche a /etc/conf.d/modules</title>
<body>

<p>
Bisognerà aggiungere il nome del modulo usato dalla propria scheda nel file
<path>/etc/conf.d/modules</path>, per essere sicuri che il modulo
sia caricato automaticamente all'avvio del sistema.
</p>

<pre caption="Modificare /etc/conf.d/modules">
<comment>(Cambiare il nome del modulo come richiesto.)</comment>
modules="<i>intel-agp</i>"
</pre>

<note>
Se <c>agpgart</c> è stato compilato come modulo, aggiungere anch'esso a
<path>/etc/conf.d/modules</path>.
</note>

</body>
</section>
</chapter>

<chapter>
<title>Verificare il funzionamento dell'accelerazione 3D</title>
<section>
<title>Riavviare con il nuovo kernel</title>
<body>

<p>
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.
<c>glxinfo</c> e <c>glxgears</c> fanno parte del pacchetto <c>mesa-progs</c>,
accertarsi quindi che esso sia installato prima di lanciare questi comandi.
</p>

<pre caption="Testare il rendering">
$ <i>startx</i>
<comment>(Nessun bisogno di caricare moduli per il proprio driver o agpgart, anche se sono stati compilati come moduli.)</comment>
<comment>(Saranno caricati in automatico.)</comment>
$ <i>glxinfo | grep rendering</i>
direct rendering: Yes
<comment>(Se c'è scritto "No", l'accelerazione non è abilitata.)</comment>
$ <i>glxgears</i>
<comment>(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.)</comment>
</pre>

<note>
Considerare anche che gli FPS potrebbero essere limitati dalla frequenza di
aggiornamento del proprio schermo, se <c>glxgears</c> visualizza un valore di
70-100 FPS. <c>games-fps/ut2004-demo</c> o altri videogiochi 3D sono un migliore
strumento di benchmark, dato che riesono a dare dei risultati più realistici.
</note>

</body>
</section>
<section>
<title>Ottenere il massimo dal rendering diretto</title>
<body>

<p>
Se si desiderano altre opzioni, dare un'occhiata a <uri
link="http://dri.freedesktop.org/wiki/FeatureMatrix">matrice delle
caratteristiche</uri> sul sito del DRI o all'<uri
link="http://dri.sourceforge.net/doc/dri_driver_features.phtml">elenco delle
caratteristiche</uri> su Sourceforge.
</p>

</body>
</section>
</chapter>

<chapter>
<title>Risoluzione dei problemi</title>
<section>
<title>Non funziona il rendering diretto e non so perchè.</title>
<body>

<p>
Provare <c>modprobe radeon</c> prima di avviare X (sostituire <c>radeon</c> con
il nome del proprio driver). Inoltre, provare anche a compilare agpgart nel
kernel anzichè come modulo.
</p>

</body>
</section>
<section>
<title>Quando lancio startx, ricevo questo errore: "[drm] failed to load kernel
module agpgart"</title>
<body>

<p>
Succede perchè agpgart è stato compilato staticamente nel kernel anzichè come
modulo, ignorare questo errore a meno che non si riscontrino problemi.
</p>

</body>
</section>
<section>
<title>Ho una Radeon e voglio l'uscita TV</title>
<body>

<p>
I driver sviluppati in origine dal progetto <uri
link="http://gatos.sf.net">GATOS</uri> sono stati fusi assieme a quelli
sviluppati da Xorg. Non c'è bisogno di alcun pacchetto particolare per l'uscita
TV; è sufficiente <c>x11-drivers/xf86-video-ati</c>.
</p>

</body>
</section>
<section>
<title>Non funziona. La mia scheda è così nuova e potente e incredibilmente non
è supportata...</title>
<body>

<p>
Provare i driver binari. Per le schede AMD, utilizzare gli <c>ati-drivers</c>; 
una lista si trova su
<uri>http://support.amd.com/us/gpudownload/Pages/index.aspx</uri>s. Se non
funzionano neanche quelli, usare <c>fbdev</c>: sono lenti, ma funzionano.
</p>

</body>
</section>
<section>
<title>Ho una scheda PCI e non funziona! Aiuto!</title>
<body>

<p>
Creare un file di configurazione in <path>/etc/X11/xorg.conf.d/</path>;
chiamarlo come si desidera, è sufficiente che termini con <path>.conf</path>.
Aggiungere il contenuto seguente:
</p>

<pre caption="/etc/X11/xorg.conf.x/10-pcimode.conf">
Section "Device"
   Option "ForcePCIMode" "True"
EndSection
</pre>

</body>
</section>
</chapter>

<chapter>
<title>Riferimenti</title>
<section>
<body>

<ol>
  <li><uri>http://forums.gentoo.org/viewtopic.php?t=46681</uri></li>
  <li><uri>http://forums.gentoo.org/viewtopic.php?t=29264</uri></li>
  <li><uri>http://dri.freedesktop.org/</uri></li>
  <li><uri>http://www.retinalburn.net/linux/dri_status.html</uri></li>
</ol>

</body>
</section>
<section>
<title>Feedback</title>
<body>

<p>
Per suggerimenti, domande, etc., e-mail <mail link="dberkholz"/>.
</p>

</body>
</section>
</chapter>
</guide>
