Rendu Compiz fluide sous Ubuntu (Feisty, Gutsy, Hardy) avec pilote Nvidia propriétaire
Cette
petite astuce est probablement valable pour la plupart des
distributions du moment. Une conjonction de négligeances assez peu
compréhensibles (surtout au vu de la qualité, de la robustesse et
de la vocation d'accessibilité non usurpée de la distribution) mènent à
un rendu désastreux, par défaut, lorsque les effets visuels, en
l'occurrence Compiz Fusion, sont activés, en particuliers avec les
cartes Nvidia.
J'ai posé la question sur le forum nvidia, sans réponse franchement probante, cf. Why does it take 6 steps to get nvidia + compiz running smooth, fast and not torn ?
Ce qui ne va pas par défaut
L'animation
est lente et saccadée, les animations sont "déchiquetées" (effet
"tearing", ou encore, "non synchronisation à la VBL").
Les causes sont les suivantes
Les
options de Compiz par défaut sont mauvaises : pas de détection de la
fréquence de rafraîchissement, pas de synchronisation à la VBL (l'image
est modifiée dans la mémoire de la carte graphique alors qu'elle est en
train d'être affichée).
Les options du pilote nvidia par
défaut sont mauvaises : pas de synchronisation à la VBL. De plus,
Nvidia utilise une astuce pour différencier plusieurs modes écrans aux
mêmes caractéristiques sur plusieurs affichages (si j'ai bien compris)
et renvoie (via xrandr) une fréquence incorrecte qui correspond à un
identifiant "virtuel". Enfin, les réglages utilisateurs ne sont pas
restaurés automatiquement, il faut lancer manuellement nvidia-settings
au démarrage de session.
Les options du serveur X par défaut
sont inadaptées : pas de triple buffering (qui nécessite cependant plus
de mémoire vidéo...).
Comment s'en sortir, en 6 étapes
- Ajouter manuellement l'option : Option "TripleBuffer" "True" dans son fichier /etc/X11/xorg.conf
- Ajouter également Option "DynamicTwinView" "false" dans xorg.conf (carte nvidia seulement)
- Installer le paquet ccsm via Synaptic (advanced desktop effects settings)
- Exécuter
le programme fraîchement installé, dans les réglages généraux, onglet
affichage, cocher la synchronisation à la VBL et la détection de la
fréquence de l'écran
- Installer le paquet nvidia-settings
- Exécuter nvidia-settings. Cochet l'option Sync to VBlank pour les applications OpenGL
- Sous Gnome, dans les préférences Sessions, ajouter au démarrage la ligne de commande nvidia-settings -l pour appliquer le réglage précédent à chaque démarrage
Remarques pour les utilisateurs de deux écrans X distincts
Je
ne suis plus dans les conditions de vérifier l'utilité de cette astuce
sous Hardy Heron. En tout cas avec les versions précédentes, déclarer
deux écrans X distincts (pour une même carte vidéo) avec Compiz pose
des problèmes. Je ne parle pas du cas d'un écran splitté (Xinerama -
Twinview).
J'avais contourné le problème de la façon suivante :
- Désactiver Compiz dans les paramètres d'apparence
- Le lancer manuellement en ajoutant une entrée dans les préférences de session via la ligne suivante : compiz --replace
--only-current-screen
- Ainsi qu'avec la ligne suivante pour exéctuer Metacity (ou compiz) sur l'écran secondaire : metacity --display=:0.1
Toutefois j'imagine que ce problème n'est plus d'actualité. Il était dû à des erreurs de jeunesse du projet ;)
Conclusion
Rien
de franchement sorcier là-dedans. Mais il y a clairement un manque de
maturité / concertation / finition concernant Compiz. Certains
problèmes s'expliquent par le fait que les valeurs par défaut ne
doivent pas porter préjudice aux personnes disposant de petites
configurations. Mais alors, pourquoi les distributions activent-elles
désormais Compiz par défaut, si elles ne prennent pas les mesures
nécessaires pour qu'il fonctionne convenablement ? Les gens ne
remarquent-ils pas l'animation affreuse ?
Certains de ces
problèmes ne concernent que les utilisateurs de cartes nvidia (pilotes
propriétaires, ce qui peut expliquer les problèmes de cohérence /
intégration ?) et il est vraisembable que certaines distributions (je
pense à Mandriva) configurent correctement par défaut le serveur X...
Finalement, je n'utilise pas Compiz :)
15/05/08