Избавляемся от тиринга в Linux

Большинство пользователей Линукс систем, конечно же знают о существовании такой проблемы, как разрыв экрана или  tearing. Основной, и наиболее вероятной причиной данного «недуга», является X-сервер. Да, Wayland уже вполне себе работоспособен, но от Иксов пока ещё способны отказаться не все. Но не одним X-сервером жив тиринг. Следующей причиной оного может послужить драйвер GPU. Наиболее частым виновником разрывов является, как ни странно, самый популярный производитель видеокарт — NVIDIA и его видеодрайвера. Третьим виновником возниковения тиринга в Linux является окружение рабочего стола, со своими багами и фичами. Ну вот мы вкратце разобрались с классическим вопросом: «Кто виноват?», далее попробуем разобраться с не менее класическим: «Что делать?».

Небольшое видео с нашего Техноджем канала

Тиринг NVIDIA

Сразу обращу ваше внимание, что это не единственное решение для NVIDIA, и, конечно, найдутся десятки ситуаций, в которых этот метод не поможет, но это один из наиболее часто спасающих вариантов, и он не полагается на графическую утилиту NVIDIA, которая иногда ломает конфигурацию среды рабочего стола.

Coming Soon Избавляемся от тиринга в Linux
Нужны ли подобные статьи о Linux?
Нужны ли подобные статьи о Linux?
Нужны ли подобные статьи о Linux?

Для начала вам нужно включить настройку модуля NVIDIA DRM (modsetting). Начните с создания файла конфигурации в каталоге modprobe:

sudo touch /etc/modprobe.d/nvidia-nomodset.conf

Предлагаю вашему вниманию так же статью Клиенты Google drive (google disk) linux webdav: Ubuntu, Mint

Затем правим его в любом удобном вам текстовом редакторе, и добавляем там следующую строку:

options nvidia-drm modset=1

Затем чтобы ядро получило информацию о наших манипуляциях делаем в терминале:

sudo update-initramfs -u

После перезагрузки разрывы должны пропасть. Радуемся но это не точно. Если не исчезло то попробуйте в /etc/X11/xorg.conf.d/20-nvidia.conf в разделе «Device», добавить такие строки:

Section "Device"
   Identifier "Nvidia Card"
   Driver "nvidia"
   VendorName "NVIDIA Corporation"
   Option "NoLogo" "true"
   Option      "metamodes"  "nvidia-auto-select +0+0 { ForceCompositionPipeline = On }"
EndSection

Тиринг Intel

Графика Intel в Linux обычно не составляет больших проблем. Вероятно, это связано с тем, что интегрированная графика обычно имеет меньше функций, а стек драйверов Intel вообще поставляется с открытым исходным кодом. Для устранения тиринга на Intel найдите и исправьте у себя конфигурационный файл, примерно по такому пути /etc/X11/xorg.conf.d/20-intel.conf (в различных системах он может находиться в различных каталогах).  Исправьте в нём раздел «Device» таким образом:

Section "Device"
     Identifier "Intel Graphics"
     Driver "intel"
     Option "TearFree" "true"
EndSection

 После чего сохраните и перезагрузитесь.

Тиринг AMD

Тиринг на видеокартах от AMD в Linux тоже хоть и не так часто, но бывает. Этот способ подходит как для проприетарных, так и для свободных драйверов. К сожалению этот способ не подходит для окружения рабочего стола KDE. Итак создайте или, если он есть, исправьте файл /etc/X11/xorg.conf.d/20-radeon.conf , доведя раздел «Device», до следующего сосостояния:

Section "Device"
    Identifier "Radeon"
    Driver "radeon"
    Option "TearFree" "on"
EndSection

xfce тиринг

<шутка>XFCE славится своим замечательным тирингом</шутка>. Это всегда было проблемой данного рабочего окружения, благодаря своему композитному менеджеру. Поэтому для решения этой проблемы заменим дефолтный композитор на Compton.

Для начала отключим стандартный композитный менеджер «Крыски» для этого выполним в терминале:

xfconf-query -c xfwm4 -p /general/use_compositing -s false

Или пройдём в настройки XFCE, в настройки менеджера окон, и снимем чекбокс с Enable display compositing, как на изображении ниже. 

Избавляемся от тиринга в Linux

далее установим Compton, независимый композитор, который очень хорошо работает с легковесными окружениями рабочего стола. Дам команды для двух веток Linux, но думаю что ни для кого ни составит труда установить пакет в свой дистрибутив.

Debian и производные

sudo apt install compton

Arch linux и производные

sudo pacman -S compton

Вернёмся к настройкам XFCE. На этот раз нажмите “Сеанс и запуск.” (Session and Startup) Добавить Compton в автозапуск, для этого добавим в атвозапуск комптон со следующим ключем:

usr/bin/compton --backend glx

как на скрине:

Избавляемся от тиринга в Linux

После чего перезагружаемся и проверяем работает ли Compton:

pgrep -l compton

Если всё норм, проверяем работает ли тиринг =)
Если тиринг в XFCE не пропал, то пробуем отредактировать файл ~/.config/compton.conf, в моём случае он такой:

backend = "glx";
paint-on-overlay = true;
glx-no-stencil = true;
vsync = "opengl-swc";

# Shadow
shadow = true; # Enabled client-side shadows on windows.
no-dock-shadow = true; # Avoid drawing shadows on dock/panel windows.
no-dnd-shadow = true; # Don't draw shadows on DND windows.
clear-shadow = true; # Zero the part of the shadow's mask behind the window (experimental).
shadow-radius = 7; # The blur radius for shadows. (default 12)
shadow-offset-x = -7; # The left offset for shadows. (default -15)
shadow-offset-y = -7; # The top offset for shadows. (default -15)
shadow-exclude = [
  "n:e:Notification",
  "n:e:Docky",
  "g:e:Synapse",
  "g:e:Conky",
  "n:w:*Firefox*",
  "n:w:*Chromium*",
  "n:w:*dockbarx*",
  "class_g ?= 'Cairo-dock'",
  "class_g ?= 'Xfce4-notifyd'",
  "class_g ?= 'Xfce4-power-manager'",
  "class_g ?= 'Notify-osd'",
  "_GTK_FRAME_EXTENTS@:c"
];

# Opacity
detect-client-opacity = true;

# Window type settings
wintypes:
{
  tooltip = { shadow = false; };
};

По идее разрывы должны пропасть, если не пропали, значит что-то пошло не так. Ищите дальше, ведь это Линукс, за всё нужно платить=)

kde тиринг

KDE, является моим любим рабочим окружением. В нём есть такое огромное количество, так нужных пользователям, элементов управления, что с помощью GUI Панели управления можно настроить практически всё. Откройте приложение Настройки и найдите «Display and Monitor». Там выберите «Compositor». Найдите параметр «Предотвращение разрыва vsync»(Tearing prevention «vsync» и установите для него значение «Перерисовка всего экрана” (Full screen repaints). После этого нажмите «Применить» (Apply).

Избавляемся от тиринга в Linux

Нередко Kwin, оконный менджер KDE, тоже становится причиной тиринга. Если не после предыдущих манипуляци разры картинки не пропал, то создалим файл /etc/profile.d/kwin.sh следующего содержания:

export KWIN_TRIPLE_BUFFER=1

Перелогиньтесь и всё должно стать гладко.

Firefox тиринг

Удостоверьтесь, что тиринг у вас присутствует только в браузере Firefox, с помощью данного видео выполните проверку на тиринг просмотрев в 1080p60:

 если при просмотре видео, изображение будет рваться то переходите к следующим манипуляциям:
1) Откройте about:config в Firefox
2) Найдите layers.acceleration.force-enabled
3) Измените значение(Value) на true.
4) Перезагрузите браузер 

5 thoughts on “Избавляемся от тиринга в Linux

  1. Спасибо за руководства. Избавился от тиринга в фаерфокс. Как поменять настройки для AMD не понял. Не хватает информации.

  2. Думал, что дело именно в firefox но менять настройки в about:config ничем успешным не закончились, решил попробовать compton и вся система стала супер плавно скролиться. Автору огромное спасибо!

  3. Debian 10 stable и KDE, видюха Nvidia RTX 2060, монитор 144 гц. В общем имеется полный набор этих проблем: тиринг и тормозной фпс интерфейса (окон и анимаций). Но, вроде как починил (думаю по поводу тормозного фпс способ поможет и на Intel с AMD). Чтобы фиксануть тиринг, все как в статье, ставим дрова нвидиа, ставим там ForceCompositionPipeline, после этого в принципе тиринга нет, но полоска на этом видео (Video tearing and smoothness test @60fps) как будто бы дергается, ну и интерфейс тормозной все равно. Если в KDE включить в эффектах «График производительности», то он показывает 72 фпс. В общем, чтобы интерфейс стал плавным на 144 гц, нужно отредактировать файл оконного менеджера KWin от рута (например через sudo nano) по адресу /home/user/.config/kwinrc (разумеется вместо user имя вашего пользователя), и там в конец секции [Compositing] добавить следующие строки: MaxFPS = 200, RefreshRate = 200. Наверное фпс можно и больше, но я разницы с 500 не заметил, а 200 поставил чтоб заведомо было больше частоты монитора. В любом случае, этот график kdeшный показывает 100 фпс максимум, так что я не знаю, мб выше 100 он и не становится, но плавнее в разы становится, как на 10 винде (и ролик тоже стал плавным).

  4. Спасибо. Избавился от тиринга в играх на карте Nvidia вторым способом.
    Fedora 37.

Leave a Comment