Xorg-Intel, écran externe et performances
Le 17 décembre, 2008 - 23:34 | Ulhume

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$xrandr
Screen 0: minimum 320 x 200, current 1024 x 768, maximum 2048 x 2048
VGA disconnected (normal left inverted right x axis y axis)
LVDS connected 1024x600+0+0 (normal left inverted right x axis y axis) 0mm x
0mm
1024x600 59.9*+
800x600 85.1 72.2 75.0 60.3 56.2
640x480 85.0 72.8 75.0 59.9
720x400 85.0
640x400 85.1
640x350 85.1
TV-1 connected 1024x768+0+0 (normal left inverted right x axis y axis) 0mm x
0mm
1280x1024@60.00 60.0
1024x768 60.0*
1024x768@60.00 60.0
920x766@60.00 60.0
832x624@60.00 60.0
800x600 60.3
800x600@60.00 60.0
720x576@60.00 60.0
704x576@60.00 60.0
720x540@60.00 60.0
720x480@60.00 60.0
640x480 59.9
Sortie 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 libdrm
root#git clone git://anongit.freedesktop.org/git/mesa/drm
root#cd drm
root#./autogen.sh
root#./configure --prefix=/usr
root#make install
 
# compilation du pilote Intel
root#git clone git://git.freedesktop.org/git/xorg/driver/xf86-video-intel
root#cd xf86-video-intel
root#wget -O 21225.patch http://bugs.freedesktop.org/attachment.cgi?id=21225
root#patch -p1 < 21225.patch
patching file src/i830_sdvo.c
root#make install
compilation 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$xrandr
Screen 0: minimum 320 x 200, current 1280 x 1024, maximum 1280 x 1024
VGA 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.2
640x480 85.0 72.8 75.0 59.9
720x400 85.0
640x400 85.1
640x350 85.1
VGA-1 connected 1280x1024+0+0 (normal left inverted right x axis y axis) 376mm x 301mm
1280x1024 60.0*+ 74.9 75.0 71.9 59.9
1152x864 75.0 74.8
1024x768 75.1 70.1 60.0
832x624 74.6
800x600 72.2 75.0 60.3
640x480 75.0 72.8 66.7 60.0
720x400 70.1
640x350 70.1
Sortie 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...

tuxce, le 18 décembre, 2008 - 15:32

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:

Section "Extensions"
    Option "Composite" "enable"
EndSection

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 ;)

Ulhume, le 18 décembre, 2008 - 19:20

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

Le contenu de ce champ sera maintenu privé et ne sera pas affiché publiquement. If you have a Gravatar account associated with the e-mail address you provide, it will be used to display your avatar.
  • To highlight piece of code, just surround them with <code type="language"> Your code &tl;/code>>. Language can be java,c++,bash,etc... Everything Geshi support.
  • Tags HTML autorisés : <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <blockquote> <div> <p> <br>
  • Les lignes et les paragraphes vont à la ligne automatiquement.
  • Les adresses de pages web et de courriels sont transformées en liens automatiquement.

Plus d'informations sur les options de formatage

CAPTCHA
Cette question est là pour déterminer si vous êtes humain ou pas...