Linux системы прекрасны, но их пишут люди, которые тоже могут ошибаться и вносить баги. Есть два трудноуловимых бага, каждый из которых я огрёб в своё время, 1) баг 12309 и 2) тиринг (tearing). Кто-то даже шутит, что эти два бага разработчики нежно переносят из версию в версию, чтобы жизнь пользователей не казалась мёдом.
В данной статье речь пойдёт о таком графическом артефакте как тиринг. Тиринг - это разрывы экрана, которые явно видны на быстрых сменах изображения, например при просмотре видео или игре.
Почему этот баг до сих пор никто не отловил? В статьях часто давал вам материалы от профи по графической части:
Французский программист Julien Danjou, разработчик оконного менеджера Awesome, и его мысли вслух о протоколе X.
Jasper St. Pierre, разработчик GNOME Shell в статье Графический стек Linux.
Что кратко можно уяснить из них? Современный графический стек Linux на базе старого древнего Xorg (X11) очень сложен и состоит из массы компонент.
Наверху этого стека находятся наши с вами оболочки рабочего стола (DE). Часть оболочек типа Gnome, KDE используют композитинг (composite), а часть (типа LXDE или MATE) - нет и не используют аппаратное ускорение. Если вы схватите баг тиринг, то будете шаманить настройками в надежде избавиться от противных разрывов. Главный помощник для вас будет Вертикальная Синхронизация (V-sync), но она может и не помочь.
В самом внизу стека находятся драйвера и если вы используете Nvidia продукцию и проприетарные драйвера у вас относительно новые, то вам доступны опции ForceCompositionPipeline и ForceFullCompositionPipeline.
Прежде чем начать, стоит вас предупредить что вышеперечисленные опции могут привести к падению производительности OpenGL приложений и вам стоит промониторить сей момент.
Вначале в Терминале попробуйте команду nvidia-settings --assign CurrentMetaMode="nvidia-auto-select +0+0 { ForceCompositionPipeline = On }"
, если у вас единственный монитор. Если у вас многомониторная конфигурация, то +0+0 вам придётся изменить.
Если у вас чёрный экран или начались проблемы, то сделайте рестарт. Вам помогут магические кнопки Alt + SysRq + R,E,I,S,U,B.
Если всё в норме, то тестируйте. Прокрутка страниц в браузере, проигрывание видео в оконном и полноэкранном режиме, быстрое перемещение окон на экране не должны выявить что тиринг остался. Если тиринг исчез, то я вас искренне поздравляю и вам осталось лишь автоматизировать сей процесс. Раньше, когда по планете ходили динозавры, я дал бы совет внести строку
Option "metamodes" "nvidia-auto-select +0+0 { ForceCompositionPipeline = On }"
в секцию Screen в файле /etc/X11/xorg.conf, но уже давно файл отсутствует как класс и настройки формируются динамически. Сейчас проще добавить команду в Автозагрузку системы.
Запущен PPA с новыми закрытыми драйверами NVIDIA.
Ubuntu помогает NVIDIA в ускорении.
Зависания Compiz на картах nVidia.