Gros Tux

Aller au contenu | Aller au menu | Aller à la recherche

dimanche 14 juin 2009

Le compositing sans accélération 3D

L'accélération 3D n'est pas disponible pour votre carte graphique et vous aimeriez pouvoir bénéficier de la vrai transparence des fenêtres, des ombres portées, d'un dock à la MacOS X, ou encore d'un aperçu des fenêtres quand vous faites ALT+Tab ? Tout ceci est possible grâce à une technologie Xorg appelée le "compositing".

Et bien sachez qu'un certain nombre de gestionnaires de fenêtres permettent d'activer le compositing sans accélération 3D. C'est le cas d'Xfwm (XFCE), Metacity (Gnome) et KWin (KDE).

Selon votre matériel le compositing est activé ou non par défaut dans Xorg. Pour le vérifier :

grep Composite /var/log/Xorg.0.log

Sinon vous pouvez l'activer à la main en modifiant votre fichier /etc/X11/xorg.conf pour y rajouter l'option suivante :

Section "Extensions"
        Option "Composite" "Enable"
EndSection

Redémarrez le serveur X pour prendre en compte les changements.

Voilà il vous reste une étape : activer le compositing dans votre gestionnaire de fenêtre si ce n'est pas le cas par défaut. Pour Metacity :

gconftool-2 -t bool -s /apps/metacity/general/compositing_manager true

En plus d'effets graphiques sympathiques le mode composite permet d'exploiter d'avantage votre carte vidéo et moins votre CPU : l'utilisation des fenêtres de votre bureau (ouverture, menu, changement de fenêtre, ...) sera plus rapide.

Pour finir voici une petite vidéo du mode composite de Metacity :


Metacity Composite Manager

jeudi 11 juin 2009

Les drivers libres pour carte graphique ATI - 1

Introduction

Pour mon premier post sur les drivers libres pour cartes graphiques ATI une petite introduction s'impose. J'ai choisis de n'utiliser que du matériel pour lequel un driver libre officiellement maintenu dans le noyau Linux est disponible, et ce pour les raisons suivantes :

  1. Je ne veux pas de soucis à gérer lors des mises à jour du noyau.
  2. Les drivers libres s'intègrent parfaitement avec les nouveautés du noyau Linux.
  3. Les drivers libres sont de meilleur qualité que les drivers propriétaires dans leur ensemble.
  4. Par idéologie libriste pure et simple.

Dans ce contexte je me suis débarrassé de ma carte NVidia pour une ATI équivalente en performance. Certes il existe des drivers libres pour les cartes NVidia (nv et nouveau) mais NVidia ne joue pas le jeux du libre et ne fournit pas les spécifications de son matériel. Je me suis donc tourné vers ATI. Intel répond aussi à ces critères mais ne fournit pas de cartes PCI/PCI Express ...


Les drivers

Il existe 2 drivers libres pour les cartes ATI : radeon et radeonhd. Pourquoi deux ? Quand AMD a choisit de fournir les spécifications de ses cartes elle s'est associé avec Novell pour développer un driver libre rapidement et supportant les cartes récentes. Or il existait déjà un projet de driver libre, le driver radeon. Pour des raisons que j'ignore les gens de Novell et du driver radeon n'ont pas réussi à s'entendre et à travailler en commun.

Fort heureusement les diverses parties en question ont commencé à se rendre compte de la situation idiote vers laquelle ils allaient et ont commencé à travailler en commun sur les nouvelles fonctionnalités dont nous allons parler plus bas.

Le driver radeonhd supporte seulement les cartes récentes (chipset >= R500). De sont côté le driver radeon ne supportait, au début que les cartes anciennes (chipset < R500). Maintenant il supporte les mêmes cartes que le driver radeonhd.

Depuis que les deux projets travaillent ensemble sur les nouvelles fonctionnalités les différences entre les deux drivers deviennent quasi nulle. Si vous avez une carte ancienne vous n'avez pas le choix et c'est radeon qu'il vous faut. Si vous avez une carte récente et bien essayer les deux et gardez celui qui marche le mieux avec votre matériel et votre distro !

Concrètement la différence entre les deux c'est quoi ?

  • radeon support le "tear-free video playback" pour faire simple c'est un meilleur rendu des vidéos
  • radeon support la sortie TV.
  • radeonhd supporte l'audio HDMI.

En Bref : Les deux projets radeon et radeonhd convergent vers le meilleur des deux mondes. Le driver par défaut d'Xorg est le driver radeon (sous le doux nom de xf86-video-ati). C'est celui que j'essayerai en premier à votre place. Si vous n'êtes pas satisfait et que vous avez du matériel récent alors tentez le coup avec le driver radeonhd (xf86-video-radeonhd).


La 3D

La 3D c'est le Saint Graal que tout geek cherche à obtenir pour bénéficier des derniers effets graphique à la mode de son bureau préféré, ou plus simplement pour pouvoir jouer à des jeux en 3D sous Linux ou avec Wine.

Le statut est assez clair :

  • Si vous avez une carte de génération < R500 (Radeon 9500 – Radeon X1950) alors vous avez le support de la 3D stable et accélérée via le driver radeon. Comme ça fait un moment que ça existe vous n'avez pas besoin d'une version particulièrement récente du noyau ou de Xorg.
  • Si vous avez une carte de génération >= R600 alors vous n'avez pas la 3D ... sauf si vous voulez tenter le support très expérimental et très instable (que je n'ai pas testé) tout juste codé par nos amis de chez radeon et radeonhd (qui ont travaillé en commun sur le coup).

Je vous laisse à la documentation, je cite, "not ready yet, don't use it! " du site officiel.


La 2D

Et oui, surprise, là aussi il y a des fonctionnalités particulières supportées ou non. Si tous les drivers libres sont capables d'afficher correctement vos applications en 2D et ce pour toutes les cartes (c'est le minimum quand même), ils ne sont pas, en revanche, capable d'exploiter au maximum les capacités d'accélération de certaines cartes graphiques (au hasard les plus récentes ...) et laissent le soin à votre processeur de se débrouiller au lieu d'utiliser la carte graphique. Résultat l'affichage peut ramer pour des vidéos ou du traitement d'images lourdes avec The Gimp par exemple.

L'accélération 2D c'est la technologie EXA dans Xorg. Elle est supporté pour les anciens modèles de cartes (< R500) depuis un moment et depuis très récemment pour les nouvelles cartes (R600, R700).

Si vous avez une carte récente et que vous voulez l'accélération 2D (pour regarder des vidéos en plein écran ...) alors il vous faut la dernière version du driver radeon (ou radeonhd) et le noyau Linux tout chaud 2.6.30. Si comme moi vous êtes sous Fedora 11 (noyau 2.6.29) alors vous avez les patchs noyaux nécessaires et vous avez aussi l'accélération 2D. L'accélération 2D est activée par défaut si votre modèle le supporte. Pour vérifier c'est assez simple :

grep EXA /var/log/Xorg.0.log


KMS - Kernel Modesetting

Je vais laisser le fameux patrick_g vous expliquer dans sa news sur le sortie du noyau 2.6.29 ce qu'est le kernel modesetting :

Après l'entrée du gestionnaire de mémoire pour cartes graphiques GEM dans le noyau précédent c'est maintenant KMS (kernel-based mode-setting) qui arrive dans le nouveau noyau 2.6.29. Le mode-setting c'est tout simplement la configuration de la carte graphique pour qu'elle puisse afficher correctement les données graphiques sur l'écran. KMS permet d'effectuer ce travail dans le noyau ce qui apporte de nombreux avantages.

On peut citer tout d'abord le fait que le mode setting, puisqu'il est unifié dans le noyau, se retrouve donc partagé entre tous les pilotes. C'est la fin d'une multitude de lignes de codes redondantes au profit d'une seule implémentation plus robuste.

KMS permet également de pouvoir enfin faire tourner le serveur X sans les droits root ce qui est un énorme avantage sur le plan de la sécurité du système.

Enfin avec KMS le changement rapide d'utilisateur (fast user switching) est facilité puisqu'il n'y a plus besoin de changer de terminal virtuel, les phases de mise en veille/réveil sont plus simples donc plus fiables, le boot de la machine est plus agréable (plus de bascules des modes d'affichage) et les messages de panique du noyau peuvent éventuellement être graphiques.

KMS est disponible depuis le noyau linux 2.6.29. Si vous êtes sous Fedora 10 les patches ont été backportés dans le noyau 2.6.28, normal étant donné que ce sont ces messieurs de chez Redhat qui ont développé KMS. En ce qui concerne les drivers ATI le KMS a été implémenté. Mais pour être franc la technologie est assez récente et sur ma radeon HD 3450 (chipset RV620) c'est pas super stable, je l'ai désactivé sur ma Fedora en passant 'nomodset' au démarrage du noyau. En fait tout dépend de votre carte graphique. Tentez le coup et si ça marche bien tant mieux pour vous ! Dans tous les cas ça n'ira quand s'améliorant !


Conclusion

Ça bouge vite du côté des drivers libres ATI ainsi que du côté d'Xorg et du noyau. En quelques mois on a vu arriver l'accélération 2D, KMS et maintenant la 3D expérimentale pour les cartes récentes. Il est clair que la libération des spécifications par AMD et le dynamisme des développeurs de Novell et Redhat a donné une réelle impulsion à ces projets.

Je ferais bien sûr un nouveau point sur les drivers libres ATI dès qu'il y a du nouveau.