Guide de l'accélération 3D matérielle
1.
Introduction
Qu'est-ce que l'accélération 3D matérielle et pourquoi en voudrais-je ?
Avec l'accélération 3D matérielle, le rendu tri-dimensionnel utilise le
processeur graphique de votre carte vidéo au lieu de consommer de précieuses
ressources processeur pour afficher des images en 3D. On appelle également cela
« accélération matérielle » par opposition à « accélération
logicielle », car sans accélération matérielle, votre processeur est
obligé de tout calculer lui-même en utilisant les bibliothèques de rendu Mesa,
ce qui consomme une quantité non négligeable de puissance. Alors qu'Xorg
supporte de façon standard l'accélération matérielle 2D, il lui manque souvent
son équivalent 3D. L'accélération 3D matérielle est appréciable dans des
situations qui requièrent le rendu d'objets 3D comme les jeux, la CAO 3D ou la
modélisation.
Comment disposer de l'accélération 3D matérielle ?
Dans de nombreux cas, il existe à la fois des pilotes binaires et des pilotes
libres. Les pilotes libres sont préférables puisque nous utilisons Linux et que
le logiciel libre est l'un de ses principes sous-jacents. Parfois, les pilotes
binaires sont les seuls disponibles, comme pour les cartes nVidia. Les pilotes
binaires sont x11-drivers/nvidia-drivers pour les cartes nVidia et
x11-drivers/ati-drivers pour les cartes ATI.
Qu'est-ce que DRI ?
L'Infrastructure de Rendu Direct,
ou DRI (« Direct Rendering Infrastructure »), est une architecture
qui permet d'accéder aux fonctions matérielles des cartes graphiques de
manière sûre et efficace. Il inclut des changements au serveur X, à plusieurs
bibliothèques clientes et au noyau. La première grande utilisation de DRI est
la création d'implémentations rapides d'OpenGL.
Qu'est-ce que le DRM et quelle est sa relation avec l'Xorg
normal ?
Le DRM (« Direct Rendering Manager ») est une amélioration
d'Xorg qui ajoute l'accélération 3D aux cartes en fournissant le module noyau
nécessaire au Rendu Direct.
Objectif
Ce guide est destiné aux personnes qui ne peuvent faire fonctionner le
Rendu Direct avec seulement Xorg. Le DRM fonctionne avec les pilotes suivants :
- 3dfx
- i8x0
- matrox
- rage128
- radeon
- mach64
- sis300
- via
Visitez le site DRI
pour plus d'informations et de documentation.
Retour d'expériences
Envoyez vos suggestions ou questions à Donnie Berkholz.
2.
Installez Xorg et configurez votre noyau
Installez Xorg
Veuillez lire notre guide de configuration
d'Xorg pour installer et lancer Xorg.
Configurez votre noyau
Trouvez le nom/modèle de votre jeu de composants (chipset) et activez
seulement celui-ci.
Exemple de code 2.1 : Trouvez le nom/modèle de votre jeu de composants AGP |
# emerge pciutils; lspci | grep AGP
# 00:01.0 PCI bridge: Intel Corp. 440BX/ZX/DX - 82443BX/ZX/DX AGP bridge (rev 03)
|
Si votre jeu de composants n'est pas supporté par le noyau, vous devriez
essayer de lui passer le paramètre agp=try_unsupported de sorte que le
noyau utilise les routines génériques d'Intel pour le support d'AGP. Pour
ajouter ce paramètre, modifez le fichier de configuration de votre chargeur de
démarrage.
La plupart des noyaux, sinon tous, devraient avoir ces options. Ceci a été
configuré en utilisant un noyau standard gentoo-sources.
Exemple de code 2.2 : Configuration du noyau |
# 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
|
Exemple de code 2.3 : Les options de 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)
|
Compilez et installez votre noyau
Exemple de code 2.4 : Compilation et installation noyau |
# make && make modules_install
|
N'oubliez pas de configurer votre fichier grub.conf ou
lilo.conf et de lancer /sbin/lilo ensuite si vous
utilisez LILO.
3.
Configurez le Rendu Direct
Configurez xorg.conf
Ouvrez /etc/X11/xorg.conf et modifiez-le pour activer DRI et GLX.
Exemple de code 3.1 : Extrait du fichier xorg.conf |
...
Section "Module"
Load "dri"
Load "glx"
...
EndSection
...
Section "Device"
Driver "radeon"
...
EndSection
...
Section "dri"
Mode 0666
EndSection
|
Chargez le module pour votre carte graphique automatiquement
Vous devez ensuite ajouter le nom du module noyau pour votre carte au fichier
/etc/modules.autoload.d/kernel-2.6 pour que ce module soit chargé
automatiquement au démarrage.
Exemple de code 3.2 : Modifier /etc/modules.autoload.d/kernel-2.6 |
intel-agp
|
Note :
Si vous avez compilé agpgart en tant que module, il vous faudra
également l'ajouter dans le fichier
/etc/modules.autoload.d/kernel-2.6.
|
4.
Testez l'accélération 3D
Redémarrez avec votre nouveau noyau
Redémarrez avec votre nouveau noyau et connectez-vous en tant qu'utilisateur
normal. Il est temps de voir si vous disposez du Rendu Direct et quel en est le
bénéfice. glxinfo et glxgears se trouvent dans le paquet
mesa-progs, donc veillez à ce qu'il soit installé avant de pouvoir
exécuter ces commandes.
Exemple de code 4.1 : Test du rendu |
$ startx
$ glxinfo | grep rendering
direct rendering: Yes
$ glxgears
|
Note :
Votre nombre d'images par seconde peut être limité par le taux de
rafraîchissement de votre écran, donc gardez ceci en tête si glxgears ne
vous donne seulement que 70-100 FPS. games-fps/ut2004-demo est une
meilleure référence, puisqu'il peut vous donner vos performances réelles.
|
5.
Ajustez vos réglages
Obtenez le maximum du Rendu Direct
Quelques options peuvent améliorer les performances jusqu'à 30% (voire plus)
par rapport aux réglages par défaut. Réglez-les dans
/etc/X11/xorg.conf. Cependant, il vous faudra d'abord vérifier
que votre carte mère et carte vidéo supportent ces options
D'abord, voyons si votre carte supporte l'écriture rapide (fast writes). Cela
se fait en inspectant le résultat de la commande lspci. Plus
particulièrement, on s'intéresse à la partie « VGA compatible
controller ».
Exemple de code 5.1 : Vérification de la carte vidéo |
# 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
|
Même si beaucoup d'informations sont affichées, nous nous préoccuperons
seulement des lettres FW sur la ligne « Status » de la section
« Capabilities ». Si FW+ est présent sur la ligne
« Status », alors votre carte vidéo supporte l'écriture rapide. Nous
pouvons maintenant vérifier si votre carte-mère le supporte également.
Important :
Si vous voyez FW-, à la place de FW+, vous ne pouvez pas activer
l'écriture rapide dans xorg.conf car votre carte ne le supporte
pas.
|
Vérifions maintenant que votre carte-mère supporte l'écriture rapide. Cette
fois, regardez dans la section « Host Bridge » de lspci.
Exemple de code 5.2 : Vérification de la carte-mère |
# 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
|
Encore une fois, vérifiez la ligne « Status » de la section AGP
« Capabilities ». Cherchez FW. Si vous voyez FW+,
alors votre carte-mère supporte l'écriture rapide.
Important :
Retenez bien qu'il faut que votre carte-mère et votre carte graphique
supportent toutes les deux l'écriture rapide. Si au moins une des deux affiche
FW-, vous ne pourrez pas activer l'écriture rapide dans
xorg.conf.
|
En supposant que tout va bien et qu'à la fois votre carte-mère et votre carte
vidéo supportent l'écriture rapide, nous allons activer cette option dans
xorg.conf pour obtenir les meilleures performances de votre
matériel.
Exemple de code 5.3 : Extrait du fichier xorg.conf |
Section "Device"
Option "AGPMode" "4"
Option "AGPFastWrite" "True"
Option "EnablePageFlip" "True"
...
EndSection
|
Attention :
Activer l'option AGPFastWrite sur un chipset VIA causera probablement le
gel complet de votre machine. Les chipsets VIA ne fonctionnent pas très bien
avec l'écriture rapide, aussi n'utilisez cette option qu'à vos risques et
périls.
|
Note :
N'oubliez pas que si vous voulez que l'écriture rapide fonctionne correctement,
vous devrez d'abord l'activer dans le BIOS.
|
Si vous souhaitez régler encore plus d'options, consultez la page feature matrix sur
le site Web du DRI, ou encore la page features
listing sur Sourceforge.
6.
Dépannage
Cela ne fonctionne pas. Je n'ai pas de DRI et ne peux expliquer
pourquoi.
Essayez modprobe radeon avant de démarrer le serveur X (remplacez
radeon par le nom de votre pilote). Essayez aussi de compiler agpgart
directement dans le noyau au lieu d'un module.
Quand je lance startx, j'ai cette erreur : « [drm] failed to
load kernel module agpgart »
C'est parce que vous avez compilé agpgart dans le noyau au lieu de le
mettre en module. Ignorez ce message sauf si vous avez des problèmes.
J'ai une Radeon et je veux la sortie TV.
Les pilotes développés au sein du projet GATOS ont été intégrés au code source de Xorg.
Il n'y a donc rien à faire de spécial pour avoir la sortie TV,
x11-drivers/xf86-video-ati suffira.
Cela ne fonctionne pas. Ma carte est tellement nouvelle qu'elle n'est
pas supportée du tout !
Essayez les pilotes binaires. Pour les pilotes ati-drivers, une liste
est disponible sur
http://ati.amd.com/support/drivers/linux/linux-radeon.html (pour
x86) et sur
http://ati.amd.com/support/drivers/linux64/linux64-radeon.html (pour
amd64). Si ceux-ci ne supportent pas votre carte, utilisez fbdev. C'est lent,
mais ça marche.
J'ai une carte PCI et cela ne fonctionne pas. A l'aide !
Editez le fichier /etc/X11/xorg.conf. Dans la section
« Device », activez ForcePCIMode.
Exemple de code 6.1 : Activer de l'option ForcePCIMode |
Option "ForcePCIMode" "True"
|
7.
Remerciements
-
Christopher Webber qui a suggéré une question de dépannage
à propos du changement et de la recompilation des noyaux.
-
Steve qui a suggéré la consistance entre dri et DRI dans
XF86Config.
8.
Références
- 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
Ce document est protégé par la licence Creative
Commons : Paternité - Partage des Conditions Initiales à
l'Identique 2.5.
|