15

I finally have VSYNC ! (updated)

I often had issues with vertical synchronization with Linux : when there is a bit of travelling or fast movements in movies/series I watch, I see tearing lines. Very bothersome, when you know that this kind of issues are inexistant under Windumb.

Pire qu'avant

Intel HD3000 is still recent. Inclued in the Sandy Bridge platform, it is found in every recent laptop. But it has a bad reputation under Linux : its driver doesn't support well Vsync.

On my new laptop, I've decided to try Linux Mint because I was sick with maintenances and complexity of Gentoo. But I was decived by Gnome Shell and I'm currently trying Cinnamon, a Gnome3 forked to look more like Gnome2.

But under Cinnamon, based on compositing, I have very ugly Vsync issues ! With some movies I can somtimes see three tearing lines, very disturbing.

Solution pour Gnome 3/Gnome Shell et Cinnamon

Qui l'eut cru? De toutes les techniques que j'ai testées (mises à jour de driver, modifier Xorg, des paramètres OpenGL, ...) c'est une simple variable d'environnement qui m'a donné des résultats !

J'ai simplement ajouté dans /etc/environment :

CLUTTER_PAINT=disable-clipped-redraws:disable-culling

J'ai ensuite relancé X (ce qui recharge l'environnement adéquat) et voilà, à moi les vidéos sans tearing ! Je n'ai pas non plus remarqué de déchirements dans les effets et déplacements de mon WM.

Solution pour Compiz et Unity

Pour avoir de la Vsync avec Compiz (cette solution devrait donc aussi fonctionner sous Unity), il faut installer le paquet compizconfig-settings-manager et le lancer (Menu > Autre > Gestionnaire de configuration Compiz).

Aller dans le plugin "Workarounds" et cocher "Force full screen redraws (buffer swap) on repaint". Sous certaines configurations il serait nécessaire de cocher également "Don't wait for video sync" mais ça passe sans chez moi.

Tester

Si vous souhaitez tester si vous avez du Vsync, je vous recommande cette petite vidéo. Si la barre blanche se balade d'un côté à l'autre de l'écran sans se déchirer, c'est bon !

Vous pouvez même la tester sur YouTube voir si les paramètres affectent le rendu flash.

Autre piste

Comme je le disais cette variable d'environnement me suffit mais vous pouvez aussi tenter d'ajouter ces paramètres dans votre Xinitrc et lancer votre lecteur vidéo avec son module de sortie OpenGL :

export GL_SYNC_TO_VBLANK=1
export __GL_SYNC_TO_VBLANK=1
export GL_SYNC_DISPLAY_DEVICE="DFP-1"
export __GL_SYNC_DISPLAY_DEVICE="DFP-1"

Tenez-moi au courant si ça apporte des résultats. De plus, si vous utilisez une carte graphique NVidia, il est recommandé d'avoir ces lignes :

export VDPAU_NVIDIA_SYNC_DISPLAY_DEVICE="DFP-1"
export __VDPAU_NVIDIA_SYNC_DISPLAY_DEVICE="DFP-1"

Conclusion

Je ne suis pas expert en rendu graphique mais je crois comprendre que ces solutions ne sont pas réellement l'ajout de Vsync mais l'activation de ce qu'on appelle le Double Buffering. Le résultat pour vos yeux est évidemment le même qu'un Vsync bien propre mais selon certaines sources cela peut augmenter la consommation de ressources CPU/GPU.

Mais bon, je suis heureux de pouvoir regarder mes vidéos correctement et ce grâce à une simple variable d'environnement ! Je me demande pourquoi elle n'est pas activée par défaut dans la plupart des distributions... Mes performances à GLXgears n'ont pas changé.

Source de ma solution

Disponible également en : Français

  1. Archy69 dit :

    Yo

    Merci bien pour ta soluc marche super chez moi

    j'ai failly retourner sur unity ou gnome classic a cause du tearing sur cinnamon (vu que les deux autres fonctionnent sous compiz facile a regler mais cinnamon non)

    yop

  2. Le gars trop déçu par linux dit :

    Pas de résultat probant pour moi, je me retrouve encore et toujours avec une synchro verticale nulle. Ce qui me fout hors de moi c'est que sous Windows ce genre de problème c'était dans les années 90...

    • tuxy dit :

      Franchement, tu mélanges tout.
      Adresse toi aux vrais coupables, les constructeurs de cartes et laisse linux en dehors de ça stp ...

  3. Tito dit :

    Désolé de l'entendre. C'est vrai que Linux a parfois un peu de retard mais il faut comprendre que sous Linux beaucoup est développé par des volontaires sur leur temps libre. Contrairement aux drivers Windows qui sont développés par l'industrie.

    D'ailleurs si tu as une carte graphique ATI ou nVidia essaye de voir si ça fait une différence d'utiliser le driver prioriétaire ou libre.

  4. tuxy dit :

    Merci !
    Ta soluce fonctionne aussi pour le problème de vsync & le dernier driver proprio nvidia...
    Franchement j'ai cherché une bonne journée et pourtant j'ai vraiment l'habitude de jongler avec ce genre de paramètres.

    J'ai cru que c'était mort pour debian cinnamon, j'ai essayé un nombre incalculables de possibilités avec xrandr.
    J'ai épluché les forums mplayer,nvidia, debian, gentoo sur le tearing, pas moyen de trouver.

    Encore merci de partager cette solution à travers ce billet 🙂

  5. Jota dit :

    Merci bcp! tellement simple en plus 🙂

  6. Chris dit :

    Salut!!!
    J'ai besoin de tes lumières. Attention ça fait que 15 jours que je me débats avec Linux. Très content de m'être débarrassé de Windaube. Mais Linux a son petit côté enfer... Il y a des forums partout mais il y a des particularités sur chaque distri et parfois sur chaque environnement si j'ai bien compris... Bref j'avais commencé sous Mate Cinnamon que j'ai planté et là JE CROIS que je suis sous Mate XFCE . Mon problème est aussi ce fichu tearing (et pas que le mien si j'en crois les 500 posts que j'ai lus).
    Avec joie j'ai réussi à faire ce que tu recommandais avec compiz mais ça n'a pas marché.
    Pour remarque quand je lance nvidia settings, c'est vide, pas d'options.... (j'en parle car dans un de tes liens je crois qu'ils disent de mettre le Vsync dans nvidia settins)
    J'aimerais essayer ta première piste (Clutter paint) mais je comprends pas comment faire pour ajouter dans /etc/environnement (c'est avec nano c'est ça , j'ai réussi une fois lors d'une autre galère mais plus depuis)
    Merci d'avance!!!

    • Tito dit :

      Il faudrait que tu sois sûr de l'environnement graphique que tu utilises pour avoir la bonne solution.

      Il faut peut-être aussi essayer avec différents logiciels vidéos pour être sûr de chasser le problème au bon endroit : peut-être que sous ton navigateur internet tu auras du tearing mais sous VLC pas.

      • Chris dit :

        Merci de t'intéresser à mon cas. Je suis sous Linuxmint 18.1 Cerena (avec un environnement XFCE). J'ai essayé tes deux vidéos (plus haut). J'ai du tearing dans chaque cas (Firefox) , VLC et lecteur média

  7. Chris dit :

    Ah et puis relancer X, alors là!!!!! prrrt (bruit de prout avec ma bouche)

  8. Chris dit :

    Dernière info si ça peut éclairer, je n ai pas eu à installer compiz, il était déjà là... Pas la même gueule que le toi... donc un petit 5mn pour trouver les trucs à cocher (le mien en Français en plus même si je parle très bien Anglais)

  9. Chris dit :

    J'ai résolu mon tearing... Je file l'info pour ceux qui comme moi... n'ont pas lancé compiz!!! En effet les mods que tu proposes dans compiz fonctionnent mais il faut lancer compiz ensuite avec : compiz --replace (il faut penser un peu plus aux newbees les gars!)
    Il ne me reste plus que 10 autres heures pour trouver comment on le lance automatiquement au démarrage. En me baladant sur les fofos, j'ai vu que compiz était très décrié. J'ai désactivé un max d'options (pour l'instant le cube m'intéresse pas). Il reste toutefois une zone d'ombre : s'il se lance pas au démarrage, qui gère l'affichage? le pilote , OK, mais je comprends pas comment marche compiz) ou bien XFCE (j'ai cru à un miracle en me baladant dans les settings de XFCE ,il y avait une case VSYNC... sans résultat). Bref ça me fait chier d'utiliser un logiciel tiers pour faire fonctionner l'affichage . J'ai pas de ralentissement mais franchement j'aime pas!!!

    • Tito dit :

      En fait c'est plus complexe que ça parce que sous Linux il y a l'environnement graphique ("Desktop Environement") et le gestionnaire de fenêtres ("Window Manager").

      Ce sont deux logiciels séparés, même si en général un environnement graphique utilise "son" window manager. Par exemple Unity utilise Compiz, Gnome utilise Mutter, KDE utilise Kwin...

      Mais sous XFCE tu peux utiliser un autre gestionnaire de fenêtres. Si je comprend bien tu lances Compiz après le démarrage de XFCE, et donc tu remplaces le gestionnaire de fenêtres par défaut de XFCE (Xfwm).

      C'est le gestionnaire de fenêtres qui est responsable du tearing (enfin c'est le compositeur pour être précis, mais la plupart des gestionnaires de fenêtre incluent leur propre compositeur)

      Dans mon blog je donne la solution pour Compiz donc, et tu dis qu'elle fonctionne. Si tu ne veux pas utiliser Compiz tu dois déterminer quel gestionnaire de fenêtre/compositeur tu utilises et le configurer correctement pour éviter ça. Une rapide recherche sur internet propose ceci:

      open xfwm4-tweaks-settings, navigate to the compositor tab and tick the Synchronize drawing to the vertical blank option.

      https://fr.wikipedia.org/wiki/Environnement_de_bureau
      https://fr.wikipedia.org/wiki/Gestionnaire_de_fen%C3%AAtres
      https://wiki.archlinux.org/index.php/Xfwm#Video_tearing

  10. Clément dit :

    Alors là !!!! chapeau !

    pour info sur HP Zbook Studio 3, sous MINT 17, j'avais un problème de VSync sur le HDMI uniquement.
    Après avoir simplement changé la variable d'environnement comme indiqué dans /etc/environment un simple redémarrage, et miracle : problème résolu !!

    Merci encore !