URL: https://linuxfr.org/users/rictus/journaux/bug-de-rendu-video-xv-lors-dune-migration-du-driver-xorg-i810 Title: Bug de rendu video (xv) lors d'une migration du driver xorg-i810 vers xorg-intel Authors: rictus Date: 2009年04月29日T18:08:35+02:00 Tags: debian et mplayer Score: 7 Contexte : migration de debian etch vers lenny, chip graphique 945GM (GMA950). Je parle de debian, mais c'est transposable à d'autres distribs, le problème rencontré est lié au nouveau pilote xorg-intel. En bref : le rendu de video accéléré par XV fait apparaître des bugs d'affichage sur la video ressemblant à un problème de Vsync : de temps en temps une ligne horizontale de décalage balaye l'image de haut en bas (il me semble qu'on parle de "tearing" en anglais). Comme j'ai cherché pas mal de temps l'origine et la solution de ce bug, je vous fais un petit journal, si ça peut être utile à quelqu'un... Sur etch, le pilote video utilisé était xorg-video-i810 1.7.2, et le rendu video par défaut de XV utilisait l'overlay qui fonctionnait nickel par défaut avec vlc ou mplayer. Sur lenny, le pilote xorg-video-i810 n'existe plus bien sûr au profit du nouveau pilote xorg-intel (2.3.2). Après recherches, le bug vient du fait que le pilote xorg-intel n'utilise plus par défaut les "fonctions overlay" du GMA950 mais des 'textured video' et que ces dernières ne me semblent pas encore top-moumoutes (au moins sur la version 2.3.2). Plus par défaut les "fonctions overlay", c'est-à-dire que XV présente désormais 2 sorties, la première (donc utilisée par défaut), la 'textured video', la seconde la 'Video Overlay'. Ci-dessous un extrait de la sortie de xvinfo : X-Video Extension version 2.2 screen #0 £spaces£ £/spaces£Adaptor #0: "Intel(R) Textured Video" £spaces£ £/spaces£number of ports: 16 £spaces£ £/spaces£port base: 116 £spaces£ £/spaces£operations supported: PutImage [...] £spaces£ £/spaces£number of attributes: 2 £spaces£ £/spaces£"XV_BRIGHTNESS" (range -128 to 127) £spaces£ £/spaces£client settable attribute £spaces£ £/spaces£client gettable attribute (current value is 0) £spaces£ £/spaces£"XV_CONTRAST" (range 0 to 255) £spaces£ £/spaces£client settable attribute £spaces£ £/spaces£client gettable attribute (current value is 0) £spaces£ £/spaces£maximum XvImage size: 1920 x 1088 £spaces£ £/spaces£Number of image formats: 5 [...] £spaces£ £/spaces£Adaptor #1: "Intel(R) Video Overlay" £spaces£ £/spaces£number of ports: 1 £spaces£ £/spaces£port base: 132 £spaces£ £/spaces£operations supported: PutImage [...] £spaces£ £/spaces£number of attributes: 12 [...] On voit donc les deux sorties (Adaptor #0 et Adaptor #1) avec certaines caractéristiques en faveur de la 'Textured Video' (16 ports contre 1 seul pour le 'Video Overlay') et d'autres en faveur de la 'Video Overlay' (12 attributs contre 2 pour la 'Textured Video'). Quoi qu'il en soit, le bug de vsync est bien remonté sur le bugtrack de xorg-intel [[https://bugs.freedesktop.org/show_bug.cgi?id=19635](https://bugs.freedesktop.org/show_bug.cgi?id=19635)]. Il semble qu'il ait été corrigé sur la version 2.7.0 mais pour l'heure je suis en 2.3.2... Pas grâve, on a des solutions de contournement pour demander à ses players préférés (en ce qui me concerne vlc et mplayer) d'utiliser l'adapter #1 au lieu du #0 par défaut : - pour mplayer, il faut lui donner le numéro du port XV à utiliser, donc cf la sortie de xvinfo, dans mon cas pour le video overlay, c'est le port 132 (il n'y en a qu'un) et appeler mplayer comme suit : mplayer -vo xv:port=132 ou ajouter vo=xv:port=132 à votre fichier ~/.mplayer/config . - pour vlc, Divers -> Préférences -> Video -> Modules de sortie -> XVideo -> Numéro de l'adaptateur de XVideo, mettre 1 au lieu de -1. Pour être complet, je mets aussi un extrait de mon xorg.conf (alors que par défaut il est désormais quasi vide, tout devant être "autodétecté" au démarrage de X...). J'ai en effet rencontré 2 autres problèmes avec le pilote xorg-intel (mais dont la solution fut plus facile pour moi à trouver), à savoir : - le serveur X démarrait par défaut en 1024x768 alors que je suis en 1680x1050... en fait le pilote me détectait un écran "LVDS" principale en 1024x768, en plus du TMDS (HDMI). Or je n'ai qu'un écran en HDMI... La release note indique que cela peut arriver aussi pour un écran VGA fictif... Solution bourrine, forcer le mode "1680x1050" dans la section Screen. Solution élégante : créer une section Monitor, Identifier "LVDS" et mettre Option Disable true. Cela doit faire gagner un peu de mémoire vue qu'on n'a plus à gérer un écran qui n'existe pas... - Rendu 2D médiocre (particulièrement visible dans le rafraichissement de mes terminaux urxvt lors de changements de bureaux) et crashs (certes peu fréquents, mais quand même...) complet de X (écran gris brouillé ou gribouillé ;-) ). Contourné en basculant sur l'ancien module d'accélération XAA (Option "AccelMethod" "XAA"). Section "Device" £spaces£ £/spaces£Identifier "Configured Video Device" £spaces£ £/spaces£Driver "intel" £spaces£ £/spaces£Option "AccelMethod" "XAA" £spaces£ £/spaces£#Option "PageFlip" "true" £spaces£ £/spaces£Option "TripleBuffer" "true" EndSection Section "Monitor" £spaces£ £/spaces£Identifier "Configured Monitor" EndSection Section "Monitor" £spaces£ £/spaces£Identifier "LVDS" £spaces£ £/spaces£#Option "Ignore" "true" £spaces£ £/spaces£Option "Disable" "true" EndSection Section "Monitor" £spaces£ £/spaces£Identifier "TMDS-1" £spaces£ £/spaces£Option "PreferredMode" "1680x1050" EndSection Section "Screen" £spaces£ £/spaces£Identifier "Default Screen" £spaces£ £/spaces£Monitor "Configured Monitor" £spaces£ £/spaces£SubSection "Display" £spaces£ £/spaces£Depth 24 £spaces£ £/spaces£##Modes "1680x1050" £spaces£ £/spaces£EndSubSection EndSection