• Разработки
  • Заметки
  • Музыка
  • Обратная связь
  • Как победить тиринг (tearing) XFCE

    Многих (в т.ч. и меня) сильно бесит тиринг в linux (windows тоже этим балуется). Лечить это можно и нужно. Это влияет на плавность картинки при перетаскивании окон, просмотре видео. Итак, у каждой видеокарты это лечиться по особенному. В этой статье рассмотрим исправление тиринга в Linux Mint XFCE (Xubuntu). Поехали!


    AMD (ATI)

    Для начала, не мешало бы включить композитинг и эффекты рабочего стола в настройках XFCE, ежели Вы их конечно отключали ;)

    Включим вертикальную синхронизацию:

    Тут всё просто, AMD приходится догонять nvidia, потому они более ответственно относятся к пользователям. Их софт удобнее, на русском и содержит всё необходимое для лёгкого подключения телика и избавления от тиринга. Обожаю видеокарты от AMD!

    Думаю, на картинке всё видно. Отключается это через настройки catalist. Как правило этого достаточно, чтобы проблема тиринга Вас больше не беспокоила.


    В последнее время AMD забросили catalist для Linux и сосредоточились на свободном драйвере + AMD GPU Pro.

    Тиринг в этом случае устраняется ещё проще. Нужно создать файл /usr/share/X11/xorg.conf.d/20-radeon.conf

    Пример содержания файла:
    Section "Device"
    Identifier "Radeon"
    Driver "radeon"
    Option "TearFree" "true"
    Option "DRI" "3"
    EndSection

    После перезагрузки, тиринг Вас оставит в покое. Так же можно воспользоваться моим скриптом преднастройки Xubuntu, который делает это автоматически :)



    Intel

    Делаем по аналогии с AMD.

    Нужно создать файл /usr/share/X11/xorg.conf.d/20-intel.conf

    Пример содержания файла:
    Section "Device"
    Identifier "Intel Graphics"
    Driver "intel"
    Option "TearFree" "true"
    EndSection


    Nvidia

    Тут всё намного хуже. Nvidia карточки значительно производительнее AMD-шных при той же цене (в дешёвом сегменте, разумеется. Всё что более $150 лучше брать AMD). Но эти п...болы зажрались и даже простейшее изменение типа пикселизации в настройках ничего хорошего не приносит. К примеру в Linux драйверах отсутствует режим Ycbcr 422, а в windows он хоть и имеется, но не работает. Так же в nvidia клали на Ваши проблемы тиринга, и исправлять его в 2D режиме совершенно не чешутся.

    В общем, вернёмся к нашим "баранам". Для начало стоит выключить композитинг:

    Заменим композитинг на compton, который будем запускать вручную. По умолчанию он в Mint уже есть, но лучше его обновить из сторонних репозиториев:


    #apt-add-repository ppa:richardgv/compton
    #apt-get update
    #apt-get install compton

    Теперь можно просто запустить в консоли "$compton --vsync opengl" и всё станет красиво! Никакого тиринга. Но если хочется ещё красивее, т.е. лучшей плавности и теней, то можно замутить файлик настроек для compton, где малость его сконфигурировать.

    Файл настроек положите в домашнюю дирректорию и обзовите: ~/.compton.conf (файл будет скрытым).

    Пример содержания файла:
    backend = "glx"; # Включает OpenGL бэкенд
    paint-on-overlay = true; # Эти три может повысить производительность, хорошо работают в большинстве случаев
    glx-no-stencil = true;
    glx-no-rebind-pixmap = true;
    xrender-sync = true;
    xrender-sync-fence = true;
    #vsync = "opengl-swc"; # Включает один из методов VSync. Проверьте здесь для получения дополнительной информации: https://github.com/chjj/compton/wiki/vsync-guide
    vsync = "opengl"; # Включает один из методов VSync. Проверьте здесь для получения дополнительной информации: https://github.com/chjj/compton/wiki/vsync-guide

    # Тени
    shadow = true; # Enabled стороне клиента тени на окнах.
    no-dock-shadow = true; # Избегайте нанесения теней на док / панельных окон.
    no-dnd-shadow = true; # Не рисовать тени на ДНА окон.
    clear-shadow = true; # Ноль часть маски тени позади окна (экспериментальный).
    shadow-radius = 7; # Радиус размытия теней. (По умолчанию 12)
    shadow-offset-x = -7; # Левый смещение для теней. (По умолчанию -15)
    shadow-offset-y = -7; # Верхняя смещение для теней. (По умолчанию -15)
    shadow-exclude = [
    "! name~=''",
    "n:e:Notification",
    "n:e:Plank",
    "n:e:Docky",
    "g:e:Synapse",
    "g:e:Kupfer",
    "g:e:Conky",
    "n:w:*Firefox*",
    "n:w:*Thunderbird*",
    "n:w:*Chrome*",
    "n:w:*Chromium*",
    "n:w:*VirtualBox*",
    "class_g ?= 'Notify-osd'",
    "class_g ?= 'Cairo-dock'",
    "class_g ?= 'Xfce4-notifyd'",
    "class_g ?= 'Xfce4-power-manager'"
    ];

    # Из-за того, как Compton рисует тени, некоторые приложения будут иметь "Glitchy" тени. Я добавил все проблемные приложения я столкнулся здесь.
    # "! Название ~ = ''" исключает тени на "Unkown" Окна, который фиксирует теневой глюк с XFWM в закладке Alt коммутатора.

    # выцветания
    fading = true; # Fade окна при изменении непрозрачности.
    fade-delta = 4; # Время между шагами в исчезать в миллисекундах. (По умолчанию 10).
    fade-in-step = 0.03; # Непрозрачность изменение между стадиями пока происходит. (По умолчанию 0.028).
    fade-out-step = 0.03; # Непрозрачность изменение между стадиями во время выведении. (По умолчанию 0.03).
    no-fading-openclose = true; # Fade окна в / из при открытии / закрытии

    detect-client-opacity = true; #Fixes Непрозрачности в некоторых приложениях, таких как xfce4-notifyd

    # настройки типа окна
    # Отключение теней на подсказках и позволяет замирания на подсказках

    wintypes:
    {
    tooltip = { fade = true; shadow = false; };
    };

    Достаточно просто запустить $compton
    Если не прокатит, попробуйте указать файл настроек вручную:
    $compton --config ~/.compton.conf
    Всё! Думаю то, что запуск этого дела можно внести в автозагрузку, объяснять не нужно ;)


    Ссылки:
    Настройка compton


    Nvidia. Второй вариант

    Устанавливаем драйвер nvidia через "Настройки --> Дополнительный драйверы"

    Запускаем nvidia-settings

    Далее нужно создать файл xorg.conf. Для этого в nvidia-settings в разделе "X Server Display Configuration" давим кнопку "Save to X Configuration file" и прописываем путь /etc/X11/xorg.conf

    Закрываем nvidia-settings и открываем файл /etc/X11/xorg.conf. Там нужно найти секцию Section "Screen"
    И в ней подправить опцию Option "metamodes"
    прописав после +0+0 строчку:
    {ForceFullCompositionPipeline=On}
    Например, моя строчка выглядит так:
    Option "metamodes" "DVI-D-0: 1920x1080_60 +0+0 {ForceFullCompositionPipeline=On}, HDMI-0: 1920x1080_60 +0+0 {ForceFullCompositionPipeline=On}"

    У меня есть монитор, он сидит на DVI-D-0 и есть телик, сидит на HDMI-0. "Антитиринг" я прописал дважды на каждое устройство.

    Такой вариант работает, но есть косяк. Если включать комп только с монитором, а затем запускать телик (фильмец, например захотелось глянуть), то тиринг есть не телике. Если запускать комп сразу с включенным монитором и теликом, то тиринга нету, нигде!
    PS если после загрузки с теликом, телик выключить а затем включить, то всё работает. Тиринга нет. Видимо на этапе загрузки чё-то срабатывает.

    19.02.2016. 19:32

    Комментарии

    Сергей 27.09.2016. 09:48

    запустить в консоли "$compton --vsync opengl" Скажите, это полная команда или перед ней еще что то?
    Ответ: Цитата: "Но если хочется ещё красивее, т.е. лучшей плавности и теней, то можно замутить файлик настроек для compton..."

    Написать комментарий

    * - обязательное поле

    :

    :


    Обновить

    Меню

    Статьи

    Закладки

    Комментарии

    RSS Feed

    Реклама

  • AnyDesk для Linux и Win
  • Магазин Complex. Комплексные решения.
  • Не хотите полить мобилу? Виртуальные СМС номера. Стоит копейки!
  • ... То же самое и с почтой! Временная и бесплатная.