Table des matières

,

Le pilote libre Radeon

Le pilote libre Radeon est dédié au support de certaines cartes graphique AMD-ATI.

En effet, suite au rachat de ATI par AMD (en 2006), les spécifications techniques des cartes sont maintenant en accès libre. Cela a permis à la communauté d'accélérer la création de différents pilotes entièrement libres dont la famille Radeon.

Le pilote libre Radeon se charge par défaut, au moment du démarrage, lorsqu'une carte ATI/AMD supportée est détectée. Mais ce pilote peut facilement être remplacé par le pilote propriétaire fourni par le constructeur en allant dans les paramètres système → Pilotes additionnels. Effectivement, le pilote libre ne couvre pas encore la totalité des fonctionnalités fournies par le pilote ATI/AMD, notamment dans le domaine de la 3D. Le retard est variable en fonction du type de carte et de la version du pilote.

À noter que le développement des pilotes est très dynamique et que ce retard se comble rapidement. Et chaque nouvelle version d'Ubuntu apporte la dernière version du pilote stable et le lot de nouveautés et de corrections qui vont avec.

AMD a publié le code source de l'UVD (en:Unified Video Decoder) à la communauté Open source le 11 avril 2013. En conséquence, la prise en charge complète de l'accélération matérielle UVD est disponible à partir du noyau 3.10 (2013).

Connaître sa carte graphique

Identifier sa carte graphique avec lspci

Pour cela il suffit de taper dans votre terminal la commande suivante:

lspci -nn | grep VGA

La commande doit renvoyer quelque chose dans ce style:

01:00.0 VGA compatible controller [0300]: Advanced Micro Devices [AMD] nee ATI RV670 [Radeon HD 3870] [1002:9501]

Ici la carte est donc une Radeon HD 3870 équipée d'une puce RV670, le dernier nombre (9501) étant l'identifiant (ID) de la carte.

Pour savoir dans quelle famille de pilotes se trouve votre carte, reportez-vous à ce tableau. Ici il s'agit donc du pilote R600 qui s'occupe de la puce RV670. Et en fonction de cela, vous pouvez savoir quelles sont les fonctionnalités supportées par le tout dernier pilotes, en lisant la page Radeon Feature.

Plus d'informations sur les capacités supportées avec glxinfo

La commande glxinfo va aussi vous permettre de récupérer des infos intéressantes:

glxinfo
direct rendering: Yes  \\(support de l'accélération graphique Oui)
OpenGL vendor string: X.Org \\(notre bienfaiteur, la fondation X.org)
OpenGL renderer string: Gallium 0.4 on AMD RV670 \\(Gallium embarque le pilote radeon)
OpenGL version string: 2.1 Mesa 8.0.2 \\(la version de Mesa et le support complet de OpenGL 2.1)
OpenGL shading language version string: 1.20 \\(La version de glsl supportée) 

Ainsi qu'un détail des extensions OpenGL utilisables par votre carte:

OpenGL extensions:
    GL_ARB_multisample, GL_EXT_abgr, GL_EXT_bgra, GL_EXT_blend_color, 
    GL_EXT_blend_minmax, GL_EXT_blend_subtract, GL_EXT_copy_texture ......

Certaines font déjà partie des spécifications d'OpenGL 3, mais comme il en manque quand même, le support complet n'est valable que pour la version 2.1.

À noter que certains logiciels ou jeux peuvent ne pas se charger parce qu’il manque une extension OpenGL. La liste ci-dessus vous aidera peut être à comprendre laquelle.

Et aussi

Installer une version plus récente des pilotes

Attention, la suite comporte des risques et peut provoquer des crashs.

Configuration de l'affichage

À une époque il était courant de modifier le fichier /etc/X11/xorg.conf pour activer une option ou ajouter un second moniteur. Mais depuis quelques versions d'Ubuntu ce fichier de configuration de Xorg est divisé en plusieurs morceaux et de nombreuses options ne sont plus fonctionnelles.
Il est maintenant conseillé d'utiliser la bibliothèque xrandr qui permet d'ajouter un moniteur ou de tourner l'affichage de son écran en quelques commandes.

Purger une installation non fonctionnelle

Vues les difficultés que posent encore les cartes graphiques, difficultés qui se contournent souvent par des manipulations à la main, il arrive régulièrement que l'on se retrouve à nouveau dans une situation graphique non fonctionnelle. Cela arrive en particulier lors de migration d'une version d'Ubuntu à une autre. Le pilote libre radeon offrant des performances de plus en plus satisfaisantes, il est intéressant de l'essayer à nouveau dans une telle situation, puisqu'il est libre, maintenu par la communauté et se mettra donc à jour automatiquement via le gestionnaire de paquets. Le paragraphe suivant propose de purger toutes les tentatives d'installations de pilotes précédentes, de configurer correctement le pilote radeon et de relancer le serveur graphique. Les commandes supposent que vous utilisez lightdm comme fenetre_de_connexion, ce qui est le cas par défaut. Le fichier de configuration du Display Manager est /etc/X11/default-display-manager que l'on peut afficher avec la commande

 cat /etc/X11/default-display-manager

Si votre fenetre_de_connexion n'est pas lightdm, remplacer les lignes correspondantes en conséquence.

Pour réaliser cette opération, voici la démarche. Passer en session terminale tty1 en appuyant simultanément sur <ctrl>+<alt>+<F1>. Renseignez votre login et mot de passe. À partir de là, vous pouvez stopper votre serveur graphique qui se trouve lui en <ctrl>+<alt>+<F7> :

sudo service lightdm stop

Supprimer toutes les possibles installations préalables de drivers pour votre carte AMD-ATI. Avant de lancer la première commande, vérifier que le dossier /usr/share/ati/ existe par

cd /usr/share/ati/

Si tel n'est pas le cas, alors vous n'avez pas besoin de lancer cette commande.

sudo sh /usr/share/ati/fglrx-uninstall.sh
sudo apt-get remove --purge fglrx*
sudo apt-get remove --purge xserver-xorg-video-ati xserver-xorg-video-radeon  
sudo apt-get install xserver-xorg-video-radeon
sudo apt-get install --reinstall libgl1-mesa-glx libgl1-mesa-dri xserver-xorg-core 
sudo dpkg-reconfigure xserver-xorg

Nous allons maintenant générer un nouveau xorg.conf. Pour cela, commencer par sauvegarder la version courante de ce fichier (on ne sait jamais) :

sudo mv /etc/X11/xorg.conf /etc/X11/xorg.conf.bak

puis déplacez vous dans un endroit où vous avez tous les droits, par exemple votre /home

cd 

et lancer la commande de configuration du xorg.conf

sudo Xorg -configure

En cas de message d'erreur ne permettant pas d'exécuter cette commande, supprimer le fichier à l'origine de ce blocage:

sudo rm /tmp/.X0-lock

Puis réexécuter la commande précédente, qui devrait vous avoir généré un fichier nommé xorg.conf.new à l'endroit même, même si la commande a terminé par une erreur. Il vous faut maintenant éditer ce fichier pour vous assurer qu'il n'y a qu'une seule section "Device" qui pointe vers le driver radeon

[...]
Section "Device"
    [...]
    Driver        "radeon"
EndSection

Enfin, placez le nouveau fichier xorg.conf au bon endroit

sudo cp xorg.conf.new /etc/X11/xorg.conf

et relancer le serveur graphique

sudo service lightdm start

Gestion de l'énergie/performance

Il y a maintenant moyen d'avoir une gestion de l'énergie assez efficace et comparable à celle du pilote propriétaire grâce au KMS (Kernel-based mode-setting).

Trois méthodes s’offrent à vous:

Gestion dynamique matérielle

Attention, vous avez besoin du noyau linux 3.11 et de firmwares récents pour utiliser cette méthode (donc Ubuntu 13.10 ou plus récent)

Cette méthode ne fonctionne qu'à partir des cartes HD2000 (r600) et plus récentes. Elle utilise la gestion de l'énergie au niveau matériel, ce qui peut entraîner un gain de performance et une baisse de la consommation énergique. Cette méthode permet quelques fois d'obtenir des températures équivalentes à celle du pilote propriétaire, mais aussi plus basses que dans le cas des autres méthodes utilisées.

Pour activer le DPM (Dynamic power management), il faut activer son support dans le noyau Linux.

Le DPM est activé par défaut avec le noyau linux 3.13 (donc Ubuntu 14.04) sur les cartes radeon HD 4000 (sauf 4200), HD 5000, HD 6000 (sauf HD 6900), HD 7000 (sauf HD 7790), HD 8000 (sauf HD 8770), R7 250X et inférieur, R7 265, R9 280X et supérieur (sauf R9 295X2). Aucune manipulation n'est nécessaire avec cette version d'Ubuntu avec ces cartes. Le DPM n'est pas activé avec l'IGP intégré Radeon HD 3450

Pour vérifier si DPM est déjà activé, il suffit de taper :

sudo cat /sys/kernel/debug/dri/64/radeon_pm_info

S'il apparaît des lignes semblables à celles-ci :

uvd    vclk: 0 dclk: 0
power level 0    sclk: 11000 mclk: 25200 vddc: 900

Cela veut dire que DPM est déjà activé.

Attention, on modifie ici des options de démarrage, une manipulation non compatible risque d'empêcher votre machine de démarrer.

Vous pouvez faire cela en ajoutant la commande "radeon.dpm=1" au fichier de configuration /etc/default/grub:

Ouvrez le fichier /etc/default/grub avec des droits d'administration.

Repérez la ligne

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

Modifiez la en:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash radeon.dpm=1"

Puis enregistrez.

Il reste alors à mettre Grub à jour:

sudo update-grub

L'effet sera actif au prochain démarrage.

Au cas où ubuntu ne démarre plus, il est conseillé de tester auparavant avec :

GRUB_CMDLINE_LINUX_DEFAULT="radeon.dpm=1"

Gestion dynamique logicielle

La méthode dynamique "dynpm" est plus moderne et plus efficace que celle par profils. Elle ne fonctionne pas sur toutes les cartes graphiques. Elle modifie dynamiquement les fréquences (RAM + core) et le voltage de la carte.

Pour le rendre automatique au démarrage, vous pouvez commencer par créer un fichier dans init.d:

Créez le fichier /etc/init.d/ati-power-save avec des droits d'administration.

Vous ajoutez ces lignes dans le fichier:

#!/bin/sh
 
# ATI power save
echo dynpm > /sys/class/drm/card0/device/power_method

Vous l'enregistrez puis le rendez exécutable:

sudo chmod +x /etc/init.d/ati-power-save 

Il reste à créer les liens qui permettront au script d'être exécuté à chaque démarrage:

sudo update-rc.d ati-power-save defaults 99 

Gestion de l'énergie par profils

La méthode par profils est basée sur 5 profils de gestion plus basiques mais qui fonctionne sur une gamme de matériel plus large.

Les 5 profils sont:

Pour le rendre automatique au démarrage, vous commencer par créer un fichier dans init.d:

Créez le fichier /etc/init.d/ati-power-save avec des droits d'administration.

Vous y ajoutez ensuite les lignes:

#!/bin/sh
 
# ATI power save
echo profile > /sys/class/drm/card0/device/power_method
echo low > /sys/class/drm/card0/device/power_profile

(remplacez low par le mode voulu).

Vous l'enregistrez puis le rendez exécutable:

sudo chmod +x /etc/init.d/ati-power-save 

Il reste à créer les liens qui permettrons au script d'être exécuté à chaque démarrage:

sudo update-rc.d ati-power-save defaults 99 

Les commandes contenues dans les scripts peuvent êtres utilisées seules pour un effet jusqu'à extinction de la machine.

Sources pour l’économie d'énergie:

Vitesse du ventilateur

Bien que les fonctionnalités de gestion de l'énergie ci-dessus devraient suffire à gérer les vitesses du ventilateur, certaines cartes graphiques peuvent rester trop bruyantes au repos (idle). Dans ce cas, si votre carte le supporte, vous pouvez changer la vitesse du ventilateur manuellement.

Attention :
  • Gardez à l'esprit que la méthode suivante configure la vitesse du ventilateur à une valeur fixe, et donc qu'elle ne s'ajustera pas automatiquement en fonction de la sollicitation du GPU, ce qui peut entraîner une surchauffe en cas de forte charge d'utilisation.
  • Vérifiez (observez) la température du GPU lorsque vous appliquez des valeurs inférieures à la norme.

Procédez comme suit pour activer le réglage manuel de la vitesse du ventilateur de votre carte graphique (ou du premier GPU dans le cas d'une configuration multi GPUs).

sudo sh -c "echo 1 > /sys/class/drm/card0/device/hwmon/hwmon0/pwm1_enable"

Ensuite, réglez la vitesse souhaitée du ventilateur de 0 à 255, ce qui correspond à 0-100% de la vitesse du ventilateur (la commande suivante le règle à environ 25%):

sudo sh -c "echo 64 > /sys/class/drm/card0/device/hwmon/hwmon0/pwm1"

Source

Décodage vidéo matériel

Voir le chapitre Radeon de la page VA-API.

Problèmes connus

Démarrage sur live-CD impossible

Certaines cartes anciennes empêchent le démarrage du CD d'installation de Ubuntu 14.04 ou font rebooter en permanence le support d'installation de Ubuntu 16.04.3

C'est par exemple le cas de la carte ATI Mobility Radeon 4650 HD ou de la carte ATU Trinity HD7480D, mais d'autres cartes de la même famille souffrent du même problème de gestion de DPM.

Il faut dans ce cas passer le paramètres "nomodeset" au démarrage du CD d'installation puis "radeon.dpm=0" à Grub après installation pour activer correctement le pilote radeon.

Dans d'autres cas (*buntu 16.04 et plus récentes), le mode "radeon.dpm=0" est nécessaire mais pas suffisant car l'accélération graphique peut être mal prise en charge et être responsable de plantages plus ou moins graves (écran subitement noir sans possibilité de retrouver une interface graphique, démarrage incomplet…). Il s'agit alors de forcer l'inactivation de l'accélération graphique en éditant le fichier /usr/share/X11/xorg.conf.d/10-radeon.conf.

sudo nano /usr/share/X11/xorg.conf.d/10-radeon.conf

En théorie, il contient ceci :

Section "OutputClass"
	Identifier "Radeon"
	MatchDriver "radeon"
	Driver "radeon"
EndSection

Il faut ajouter la ligne

        Option "NoAccel" "true"

avant la ligne EndSection puis sauvegarder avec la combinaison de touches Ctrl + O (la lettre, pas le chiffre) et enfin quitter avec la combinaison de touches Ctrl + X. Ensuite, redémarrez votre machine.

Problème de tearing (décalage de l'image par bandes horizontales)

Ce problème a été expérimenté avec Xubuntu 20.04 et une carte graphique AMD Radeon Vega.

Une solution est de modifier la configuration de Xorg:

sudo nano /usr/share/X11/xorg.conf.d/10-amdgpu.conf

et d'ajouter l'option Tearfree:

Section "OutputClass"
	Identifier "AMDgpu"
	MatchDriver "amdgpu"
	Driver "amdgpu"
        Option "TearFree" "true"
EndSection

Liens externes


Contributeurs : Stemp, Id2ndR, Neothor, _Enchained, Smarter, quent57, mAx0r1311 , Réécriture compléte juillet 2012: kao_chen, olivier_v