Le pilote X11-intel (2.2.1) fournit en standard dans la Mandriva 2008 avait très bien fonctionné sur mon l'U810. Contrôle de luminosité, sortie VGA et même l'accélération 3D était au rendez-vous avec un glxgears affichant 655fps, ce qui était vraiment étonnant pour une si petite machine. Détail très pratique pour transformer la bestiole en petite console de jeu ou encore pour les amateurs du Regardez, je fais tourner mon bureau !!! cool, cool, cool...
;-).
Du coup, c'est avec la 2009.0 et la génération 2.4 de ce pilote, que les soucis ont commencés. Pour d'obscures raisons de câblage interne que je n'ai pas bien compris, la sortie vidéo n'était simplement plus reconnue comme VGA mais comme TV.... Détail quelque peu problématique pour une utilisation professionnelle, par exemple lors d'une présentation avec vidéo-projecteur. Et une plaie n'arrivant jamais seule, je me suis aussi aperçu que ces nouveaux pilotes souffraient en plus d'une énorme dégradation des performances.
Fort heureusement, Oui-Oui est au pays du libre, et l'équipe de développeurs est on ne peut plus réactive sur ce projet...
Le souci est en soit assez facile à mettre en évidence avec xrandr :
gaston$xrandrScreen 0: minimum 320 x 200, current 1024 x 768, maximum 2048 x 2048VGA disconnected (normal left inverted right x axis y axis)LVDS connected 1024x600+0+0 (normal left inverted right x axis y axis) 0mm x0mm1024x600 59.9*+800x600 85.1 72.2 75.0 60.3 56.2640x480 85.0 72.8 75.0 59.9720x400 85.0640x400 85.1640x350 85.1TV-1 connected 1024x768+0+0 (normal left inverted right x axis y axis) 0mm x0mm1280x1024@60.00 60.01024x768 60.0*1024x768@60.00 60.0920x766@60.00 60.0832x624@60.00 60.0800x600 60.3800x600@60.00 60.0720x576@60.00 60.0704x576@60.00 60.0720x540@60.00 60.0720x480@60.00 60.0640x480 59.9Sortie de xrandr avec le pilote buggé
On voit ici le petit malaise avec une sortie "TV-1" fantôme et "VGA-1" officiellement désactivée. Je me suis donc fendu d'une remonté d'anomalie, exercice rendu repoussant par essence de par la présence de l'immonde Bugzilla. Et en attendant une éventuelle réaction, la "solution" temporaire fût simplement de récupérer l'ancien pilote sur la 2008.1 (version 2.2.1). Ceci fait la sortie était à nouveau prise en charge mais avec un nouveau problème : un affichage est brouillé sur l'écran externe lors d'un retour de veille.
Mais assez rapidement, l'équipe de développement du pilote a commencé à trouver des solutions (encore merci à eux), se traduisant par une série de patchs que je me suis appliqué à tester. Et les deux derniers ont fait mouche.
La solution définitive consiste donc à compiler soi-même le pilote dans sa toute dernière version (2.6.99). Pour ce faire, il est cependant nécessaire de compiler aussi libdrm car la version en standard dans Mandriva 2009.0 est trop ancienne. Cela nous donne le process suivant :
# compilation de libdrmroot#git clone git://anongit.freedesktop.org/git/mesa/drmroot#cd drmroot#./autogen.shroot#./configure --prefix=/usrroot#make install# compilation du pilote Intelroot#git clone git://git.freedesktop.org/git/xorg/driver/xf86-video-intelroot#cd xf86-video-intelroot#wget -O 21225.patch http://bugs.freedesktop.org/attachment.cgi?id=21225root#patch -p1 < 21225.patchpatching file src/i830_sdvo.croot#make installcompilation de xorg-intel et libdrm
Et après redémarrage de X, la sortie VGA fonctionne très bien et ce de manière systématique, premier succès.
gaston$xrandrScreen 0: minimum 320 x 200, current 1280 x 1024, maximum 1280 x 1024VGA disconnected (normal left inverted right x axis y axis)LVDS connected (normal left inverted right x axis y axis)1024x600 59.9 +800x600 85.1 72.2 75.0 60.3 56.2640x480 85.0 72.8 75.0 59.9720x400 85.0640x400 85.1640x350 85.1VGA-1 connected 1280x1024+0+0 (normal left inverted right x axis y axis) 376mm x 301mm1280x1024 60.0*+ 74.9 75.0 71.9 59.91152x864 75.0 74.81024x768 75.1 70.1 60.0832x624 74.6800x600 72.2 75.0 60.3640x480 75.0 72.8 66.7 60.0720x400 70.1640x350 70.1Sortie de xrandr avec le pilote corrigé
Mais l'histoire ne s'arrête pas là. En effet le soucis d'affichage brouillé est lui aussi réglé car... il n'y a plus d'affichage... En réalité l'écran est bien allumé mais c'est son éclairage qui reste éteinte. Et j'ai eu beau essayer tous les quirks de pm-utils, rien n'y a fait.
La solution est venue de manière indirecte, en cherchant à régler cet autre problème de performances. En effet, depuis la version 2.5, je constate une nette dégradation avec plus de 4 secondes d'écart pour gtkperf entre la 2.2.1 (qui durait 26s) et la 2.5.1, et 9 secondes avec la 2.6.99...
Après avoir mouliné le net, j'ai découvert que le problème venait de la très nouvelle accélération 2D EXA qui vient remplacer l'ancienne XAA. La première option a donc été d'ajouter Option "AccelMethod" "XAA" à la section device dans /etc/X11/xorg.conf, ce qui a confirmé l'hypothèse avec des performances revenant à la normale.
En investiguant un peu plus, il semblerait que le problème viennent d'un souci lors de l'allocation de trop nombreux petits pixmaps en mémoire, ce qui semble confirmé par le fait que les tests les plus impactés sont ceux dessinant du texte. Une solution est de modifier la section device en ajoutant cette fois deux options aussi magiques que non documentées dans le man intel :
Option "AccelMethod" "EXA"
Option "ExaNoComposite" "false"
Option "MigrationHeuristic" "greedy"dans la section device de /etc/X11/xorg.conf
Et effectivement après redémarrage, les performances sont revenues à la normale avec 23s, comme le montre le graphique (2.6.99++ utilisant les options magiques).
Et pour terminer, effet de bord un peu surprenant, avec ces options, le retour de mise en veille se fait maintenant sans aucun problème... Allez comprendre...
Vos remarques et commentaires...
C'est le grand souci de x.org à mon avis, il n'y a pas assez de doc malheureusement (mais je pense que c'est plus un souci du site que de l'existence de doc :)), j'ai mis un temps fou à trouver qu'ils avait basculé vers exa entre le 2.2 et le 2.4 (sans parler de l'obligation d'aller voir les sources pour trouver les bonnes clés hal concernant l'auto détection du 1.5).
D'ailleurs, dans ce que j'ai pu lire, le composite est plutôt activé par:
ce qui est le cas sur la 945 du msi wind.
ou alors, c'est 2 fonctions différentes ?
Bref, ayant parfois un souci d'affichage brouillé, je vais aussi aller faire un tour du côté des 2.6, merci pour le détail de l'article ;)
L'affichage brouillé je pense que cela vient d'une mauvaise recalibration du pixel timing au retour de veille.
Pour le composite, l'option ExaNoComposite complète option composite en disant si on l'utilise avec EXE ou pas. Maintenant je crois que ce qui a surtout changé les perfs c'est le fameux "greedy".
Publier un nouveau commentaire