Gentoo Logo

Guide de l'accélération 3D matérielle

Table des matières :

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)
(L'affichage sera probablement différent pour votre matériel.)

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
(Faites en sorte que /usr/src/linux pointe vers votre noyau.)
# 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)
(L'option agpgart n'est pas présente sur les noyaux 64 bits ; choisissez juste le support de votre jeu de composants.)
<M> Intel 440LX/BX/GX, I8xx and E7x05 support
(Activez le support de votre jeu de composants.)
<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"
(Remplacez radeon par le nom de votre pilote.)
  ...
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

(Spécifiez le nom du module.)
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
(Inutile de charger les modules pour votre pilote ou pour agpgart si 
vous avez compilé agpgart comme module.)
(Ils seront chargés automatiquement.)
$ glxinfo | grep rendering
direct rendering: Yes
(S'il est indiqué "No", vous ne disposez pas de l'accélération 3D.)

$ glxgears
(Testez votre nombre d'images par seconde (FPS - Frames Per Second) 
pour la taille par défaut. Ce nombre devrait être significativement plus élevé 
qu'avant la configuration du DRM. Faites ce test lorsque le processeur est en 
train de faire le moins de traitements possibles.)

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"
  (Ceci a augmenté les FPS de 609 à 618.)
  Option     "AGPFastWrite" "True"
  (Ceci n'a pas eu d'effet mesurable, mais peut accroître l'instabilité de votre ordinateur.)
  (Vous pourriez avoir également besoin de le régler dans votre BIOS.)
  Option     "EnablePageFlip" "True"
  (Ceci a augmenté les FPS de 618 à 702.)
  (C'est également "risqué" mais peu de personnes ont eu des problèmes.)
  ...
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

  1. Christopher Webber qui a suggéré une question de dépannage à propos du changement et de la recompilation des noyaux.
  2. Steve qui a suggéré la consistance entre dri et DRI dans XF86Config.

8.  Références

  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


Imprimer

Dernière mise à jour le 23 août 2007

Résumé : Ce guide vous aidera à faire fonctionner l'accélération matérielle avec le DRM et Xorg sur Gentoo Linux.

Donnie Berkholz
Auteur

Jorge Paulo
Correcteur

Joshua Saddler
Correcteur

Vincent Rubiolo
Traducteur

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

Linux World Expo

Linux World Expo

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