L`accélération 3D sous Linux

Transcription

L`accélération 3D sous Linux
L'accélération 3D sous Linux
Pré-requis
Vous devez avoir au préalable installé un serveur graphique et un environnement graphique
(KDE, gnome...). Pour plus d'informations, vous pouvez consulter cet article.
Problématique
Si vous utilisez une carte nvidia ou ati et que vous souhaitez bénéficier de l'accélération
matérielle 3D, vous devrez installer un driver spécifique. Malheureusement, ces constructeurs
n'ont pas dévoilé le fonctionnement de leurs cartes et les drivers libres ne permettent donc pas
de prendre pleinement en charge votre carte 3D.
Or pour jouer à des jeux utilisant de la 3D ou activer des effets composites (effets 3D) au niveau
de votre bureau graphique, le serveur X doit prendre en charge l'accélération matérielle de
votre carte vidéo.
On peut installer un driver 3D à n'importe quel moment. Il faudra simplement relancer le
serveur X après avoir chargé le module correspondant pour en bénéficier.
Comment tester si l'accélération 3D fonctionne ?
Lancez une session graphique (serveur X + environnement graphique). Lancez en root la
commande :
Mistra Formation - 19 rue Béranger 75003 Paris - Métro République - 01 82 52 25 25 - [email protected]
L'accélération 3D sous Linux
aptitude install mesa-utils
Ce paquet installe deux utilitaires (glxinfo et glxgears) que nous allons utiliser d'ici peu.
Ensuite, lancez un terminal utilisateur. Si par exemple vous avez lancé votre session graphique
avec le login mando, il faut que vous soyez loggué en tant que mando dans ce terminal, sinon
les commandes suivantes vont échouer. Ensuite lancez :
glxinfo | grep -i rendering
Si l'accélération 3D fonctionne, voici ce que vous devriez voir :
(mando@aldur) (~) $ glxinfo | grep -i render
direct rendering: Yes
OpenGL renderer string: GeForce 6600 GT/AGP/SSE/3DNOW!
GL_NVX_conditional_render, GL_SGIS_generate_mipmap, GL_SGIS_texture_lod,
Si vous voyez "No" et si votre carte est une carte offrant une accélération 3D, alors vous devez
installer un pilote propriétaire pour bénéficier d'effets 3D. Sinon, vous pouvez tester si celle-ci
est correctement prise en charge. Lancez la commande suivantes :
glxgears
Mistra Formation - 19 rue Béranger 75003 Paris - Métro République - 01 82 52 25 25 - [email protected]
L'accélération 3D sous Linux
Vous devriez voir apparaître des roues d'engrenages :
Au bout de quelques secondes, vous devriez voir apparaître dans votre console le nombre de
FPS (frame per second / nombre d'images par seconde).
4299 frames in 5.0 seconds = 859.385 FPS
7129 frames in 5.0 seconds = 1425.795 FPS
7101 frames in 5.0 seconds = 1420.197 FPS
7098 frames in 5.0 seconds = 1419.522 FPS
Mistra Formation - 19 rue Béranger 75003 Paris - Métro République - 01 82 52 25 25 - [email protected]
L'accélération 3D sous Linux
Si l'animation est saccadée et que le nombre de FPS est faible, c'est probablement que vous
devez installer un driver propriétaire.
Installation
Comment installer un driver propriétaire ?
Installation du pilote propriétaire
Ubuntu, Kubuntu, ...
On passe par des paquets propriétaires (jockey) : voir ici. La démarche est la même que l'on ait
une carte nvidia ou ati.
Debian (>= squeeze)
Pour les cartes nvidia, on utilise généralement dkms pour construire le pilote sur les debians
récentes. Il suffit d'installer le paquet xserver-xorg-video-nvidia pour l'installer.
aptitude update
aptitude safe-upgrade
aptitude install xserver-xorg-video-nvidia nvidia-kernel-dkms
Pour les cartes ati, le principe est le même. Vérifiez au préalable que le paquet
Mistra Formation - 19 rue Béranger 75003 Paris - Métro République - 01 82 52 25 25 - [email protected]
L'accélération 3D sous Linux
xserver-video-radeon ne convient pas. Sinon installez le paquet propriétaire (fglrx) :
aptitude update
aptitude safe-upgrade
aptitude install fglrx-driver fglrx-control fglrx-modules-dkms
Debian (< squeeze)
On utilisera dans ce cas module-assistant. La démarche est présentée en détail dans l'article
consacré à module-assistant.
Sinon
Pour n'importe quelle distribution on peut toujours télécharger le driver directement sur le site
du constructeur et on suit les instructions mentionnées sur son site. Ce n'est pas forcément la
méthode la plus simple.
Chargement du module
Une fois le module installé, pensez à le charger avec la commande modprobe. Si par exemple
vous utilisez une carte nvidia, ce module s'appelle nvidia (respectivement fglrx pour une carte
ati). On le charge en lançant en root la commande :
modprobe nvidia
Mistra Formation - 19 rue Béranger 75003 Paris - Métro République - 01 82 52 25 25 - [email protected]
L'accélération 3D sous Linux
Si une erreur apparaît, c'est probablement que vous n'avez pas encore installé le module pour
le noyau que vous utilisez.
Vérifiez que le chargement s'est bien déroulé en lançant les commandes suivantes :
lsmod | grep nvidia
dmesg | tail
Si le module est bien chargé, vous devriez voir apparaître une ou plusieurs lignes en résultat de
la première commande. Le cas échéant la seconde commande devrait vous donner des
informations complémentaires.
Configuration du serveur X
Comme nous allons utiliser un driver autre que celui fournit par xorg (et par conséquent un
driver autre que celui chargé par défaut), il faut dire à xorg de le charger. Ceci se fait par le biais
du fichier /etc/X11/xorg.conf. À ce stade ce fichier n'existe pas forcément et xorg se lance
implicitement avec les paramètres par défaut.
On peut générer automatiquement ce fichier.
Cartes nvidia
Mistra Formation - 19 rue Béranger 75003 Paris - Métro République - 01 82 52 25 25 - [email protected]
L'accélération 3D sous Linux
Si vous utilisez une carte nvidia, l'outil nvidia-xconfig permet de le faire. Fermez votre session
graphique si vous en avez ouvert une. Passez en mode texte (ctrl alt f1) et identifiez vous en
root. Lancez les commandes :
aptitude install nvidia-xconfig
nvidia-xconfig
Cartes ati
La correction de ce fichier peut se faire par l'outil graphique catalyst. Selon que vous êtes sous
KDE ou gnome, installez respectivement (kdesudo ou gksudo) l'une de ces deux commandes :
aptitude install kdesudo
aptitude install gksudo
Configurez votre utilisateur comme étant un sudoer, comme indiqué ici.
Puis, en fonction de ce que vous avez installé, lancez l'une de ces deux commandes :
kdesudo /usr/bin/amdcccle
gksudo /usr/bin/amdcccle
Mistra Formation - 19 rue Béranger 75003 Paris - Métro République - 01 82 52 25 25 - [email protected]
L'accélération 3D sous Linux
Dans l'interface graphique qui apparaît, déclenchez la correction de la configuration du serveur
graphique xorg.
Premiers tests
Relancez le mode graphique en relançant le gestionnaire de connexion graphiqueen lançant en
root l'une des commandes suivantes, en fonction de ce que vous avez installé (généralement
kdm avec KDE, gdm avec gnome, xdm sinon) :
service kdm restart
service gdm restart
service xdm restart
Notez que sur les anciennes distributions Linux, la commande service n'existe pas. Il faut alors
lancer l'une de ces commandes
/etc/init.d/kdm restart
/etc/init.d/gdm restart
/etc/init.d/xdm restart
Le mode graphique s'affiche correctement
Mistra Formation - 19 rue Béranger 75003 Paris - Métro République - 01 82 52 25 25 - [email protected]
L'accélération 3D sous Linux
Si le mode graphique fonctionne correctement, c'est bon signe. Prenez quelques minutes pour
vérifier qu'il est stable. Vous pouvez également commencer à tester si les effets composites
fonctionnent correctement (voir fin du tutoriel).
Vous pouvez ensuite automatiser le chargement du module propriétaire (voir section suivante).
Ceci vous évitera de lancer la commande modprobe à chaque fois que vous redémarrez la
machine.
Le mode graphique ne s'affiche plus (écran noir !)
Pour récupérer le mode graphique, il faudra utiliser un pilote libre. Actuellement le serveur
graphique se charge conformément au fichier /etc/X11/xorg.conf. Cela peut également arriver
lorsque votre noyau est mis à jour. Si vous avez installé votre pilote autrement que via dkms
(debian) ou le gestionnaire de pilote propriétaires (ubuntu), vous devrez reconstruire / réinstaller
le pilote à chaque fois que le paquets "linux-image-..." est mis à jour.
Pour retourner vers le pilote libre, il faut donc aller à l'encontre du fichier /etc/X11/xorg.conf
actuel qui charge un pilote graphique qui ne fonctionne pas (ou qui n'existe pas pour cette
version de noyau). La réparation doit se faire en mode texte.
De nos jours, ceci se fait simplement en supprimant le fichier /etc/X11/xorg.conf et le mode
graphique chargera par défaut un pilote libre.
Sous Debian, identifiez-vous en root et tapez :
mv /etc/X11/xorg.conf /etc/X11/xorg.conf.bak
Sous Ubuntu, identifiez-vous en utilisateur et lancez :
Mistra Formation - 19 rue Béranger 75003 Paris - Métro République - 01 82 52 25 25 - [email protected]
L'accélération 3D sous Linux
sudo mv /etc/X11/xorg.conf /etc/X11/xorg.conf.bak
Puis relancez gdm / xdm / kdm comme indiqué au début de ce paragraphe.
Automatiser le chargement du module propriétaire
Sous Debian et les distributions qui en dérivent, le chargement d'un module au démarrage se
fait en le rajoutant dans la liste de module contenue dans /etc/modules. Modifiez ce fichier par
exemple avec nano en lançant en root :
nano /etc/modules
Si le module que vous utilisez ne figure pas dans le fichier, ajoutez son nom dans ce fichier. Si
vous utilisez une carte nvidia, voici à quoi pourrait ressembler ce fichier :
# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.
# Parameters can be specified after the module name.
loop
nvidia
Mistra Formation - 19 rue Béranger 75003 Paris - Métro République - 01 82 52 25 25 - [email protected]
L'accélération 3D sous Linux
Activer les effets 3D
Sous KDE
Commencez par lancer le centre de configuration KDE (systemsettings). Pour cela, cliquez sur
le menu K et dans l'onglet favori, cliquez sur configuration du système. Vous pouvez également
le lancer en appuyant sur alt f2 et en tapant systemsettings dans le lanceur qui apparaît.
Mistra Formation - 19 rue Béranger 75003 Paris - Métro République - 01 82 52 25 25 - [email protected]
L'accélération 3D sous Linux
Allez ensuite dans la section "Bureau" :
Mistra Formation - 19 rue Béranger 75003 Paris - Métro République - 01 82 52 25 25 - [email protected]
L'accélération 3D sous Linux
Dans la rubrique "Effets de Bureau", activez les effets composites. Vous pourrez ensuite les
désactiver en cliquant sur "Suspendre l'affichage composite" :
Mistra Formation - 19 rue Béranger 75003 Paris - Métro République - 01 82 52 25 25 - [email protected]
L'accélération 3D sous Linux
Vous pouvez ensuite aller dans l'onglet "Tous les effets" pour activer et paramétrer les
différents effets 3D.
Remarque : si vous utilisez un ordinateur portable et que vous souhaitez désactiver les effets
composite quand vous êtes sur batterie (ou que son niveau devient faible), vous pouvez le
régler en allant dans "K > Centre de configuration > Avancé > Gestion de l'énergie". Vous
verrez apparaître différents profils de gestion de l'énergie (performance, powersave, ...) en
fonction des différents seuils de batterie. Vous pouvez ensuite régler leur comportement et
notamment désactiver les effets composites s'ils sont activés.
Carte nvidia : erreurs wine liées
Mistra Formation - 19 rue Béranger 75003 Paris - Métro République - 01 82 52 25 25 - [email protected]
L'accélération 3D sous Linux
À ce stade certains jeux prévus initialement pour Microsoft Windows peuvent ne pas se lancer
correctement via wine (ci-dessous nous allons traiter l'exemple de Warcraft III).
De manière générale, quand vous êtes confronté à ce genre de problème il faut lancer votre
jeux via les lignes de commandes pour récupérer les erreurs wine. À l'aide d'une recherche sur
votre moteur de recherche favori, vous devriez trouver les causes de ces erreurs. Celles-ci
peuvent être d'origine multiples (librairie manquante à installer avec winetricks...). Toutefois,
quand elles mettent en jeu d3d, il est probable que ce soit dû à une installation incomplète du
pilote.
Exemple : on ici essaye de lancer Warcraft III sur une machine utilisant une carte nvidia :
(mando@aldur) (~/Jeux/Warcraft III) $ wine war3.exe
err:alsa:ALSA_CheckSetVolume Could not find 'PCM Playback Volume' element
fixme:mixer:ALSA_MixerInit No master control found on Brooktree Bt878, disabling mixer
err:ole:CoCreateInstance apartment not initialised
fixme:advapi:SetSecurityInfo stub
err:d3d:WineD3D_CreateFakeGLContext Can't find a suitable iPixelFormat
err:d3d:InitAdapters Failed to get a gl context for default adapter
err:wine_d3d:WineDirect3DCreate Direct3D8 is not available without opengl
fixme:dbghelp:dump_system_info fill in CPU vendorID and feature set
Mistra Formation - 19 rue Béranger 75003 Paris - Métro République - 01 82 52 25 25 - [email protected]
L'accélération 3D sous Linux
Sous Debian, ce problème se règle en installant le paquet libgl1-nvidia-glx-ia32 (pour une
architecture 64 bits) ou libgl1-nvidia-glx (pour une architecture 32 bits). En root :
aptitude update
aptitude safe-upgrade
aptitude install libgl1-nvidia-glx
aptitude install libgl1-nvidia-glx-ia32
# pour une architecture 32 bits
# pour une architecture 64 bits
Note : Pour les versions récentes de debian 64 bits, vous devrez ajouter le support multi-arch et
installer ce paquet comme suit :
dpkg --add-architecture i386
aptitude update
Mistra Formation - 19 rue Béranger 75003 Paris - Métro République - 01 82 52 25 25 - [email protected]
L'accélération 3D sous Linux
aptitude install libgl1-nvidia-glx:i386
Remarque : souvenez-vous que si vous utilisez des bureaux avec effects composites (bureaux
3d), ceci va considérablement dégrader les performances de votre jeu, voire l'empêcher de se
lancer. Aussi il est recommandé de les désactiver au préalable. Ceci se fait sous KDE via "K >
Configuration du système > Bureau > Désactiver les effets de bureau".
.
Mistra Formation - 19 rue Béranger 75003 Paris - Métro République - 01 82 52 25 25 - [email protected]
Powered by TCPDF (www.tcpdf.org)