Здравейте! Вероятно използвате блокиращ рекламите софтуер. В това няма нищо нередно, много хора го правят.

     Но за да помогнете този сайт да съществува и за да имате достъп до цялото съдържание, моля, изключете блокирането на рекламите.

  Ако не знаете как, кликнете тук

How to: Linux накъсване на картината (tearing) при Nvidia. Решение

feed Актуални новини от IT сферата.
Информационни технологии, изчислителна техника, комуникационни мрежи, софтуер, хардуер, информатика.
Правила на форума
Поради реконструкция на сайта, за известно време няма да бъдат добавяни IT новини в раздела.
Аватар
Mozo
Skynet Cyber Unit
Skynet Cyber Unit
Мнения: 308737
Регистриран на: Пет Юни 01, 2007 14:18
Репутация: 388610
Местоположение: Somewhere In Time

How to: Linux накъсване на картината (tearing) при Nvidia. Решение

Мнение от Mozo »


Изображение

Много потребители изпитват проблеми с накъсване на картината или така неречения "tearing" при гледане на филми, при бързи движения, при играене на игри и пр. Това е проблем, който съществува както при Windows, така и при Linux. Тук ще ви обясня как да го преодолеем при Linux с Nvidia, като проблемът вече може да бъде решен изключително лесно, при това завинаги.

Драйвърът на Nvidia се подобрява активно почти ежедневно и често в много добър диалог с потребителите. В резултат на това са добавени много полезни функции, някои от които е Full Composition Pipeline и отговаря точно за премахване на накъсването на картината (tearing).

Ако сте с актуална дистрибуция на Linux и използвате нова версия на nvidia-settings, то включването на Full Composition Pipeline вече става много лесно, без да се налага да редактирате xorg.conf или друг конфигурационен файл, който използва вашата дистрибуция.

За да решите проблема с накъсването на картината, трябва да отворите контролния панел на Nvidia и да отидете на X Server Display Configuration. Ако имате включени повече от един монитор, изберете монитор, на който искате да премахнете тиъринга и натиснете бутона "Advanced":

Изображение

След като натиснете бутона "Advanced" ще ви се отворят допълнителни опции, едната от които е да изберете включването на Full Composition Pipeline настройка. Именно това е настройката, която ще премахне веднъж завинаги накъсването на картината.

Изображение

Има обаче една малка подробност - избрана по този начин функцията ще е активна само за текущата потребителска сесия и ще се изгуби при рестарт. Това е така, защото промяната трябва да се запише в xorg.conf или в конфигурационния файл на Nvidia, който използва вашата дистрибуция.

За да запаметите настройката имате два варианта:

Вариант 1:
Трябва да отворите контролния панел на Nvidia с администраторски права, което става по следния начин. Отворете терминал и въведете/копирайте и поставете:

Код за потвърждение: Избери целия код

sudo nvidia-settings
Отново ще ви се отвори контролният панел на Nvidia, но вече с администраторски права. Сега включете наново Full Composition Pipeline и изберете бутона "Save to X Configuration file" и в новоотворилия се прозорец изберете Save. Ако вашата дистрибуция използва друг конфигурационен файл, се възползвайте от бутона Browse, за да укажете къде да бъдат запазени настройките.

Например при Manjaro файлът не е xorg.conf, който се намира в /etc/X11, а е файл, който се казва nvidia.conf и се намира в /etc/X11/mhwd.d. Това означава, че ако използвате Manjaro, ще браузнете до /etc/X11/mhwd.d и ще посочите nvidia.conf като файл, в който да се запазят промените. При повечето дистрибуции, включително Debian, Ubuntu, Mint файлът, който се използва е именно /etc/X11/xorg.conf.

Ако поради някаква причинаямате xorg.conf в /etc/X11/, ще се наложи да го създадете, което също е много лесно. Това става просто със:

Код за потвърждение: Избери целия код

sudo nvidia-xconfig
След това вече можете да пристъпите към записването на промените за Full Composition Pipeline.

Вариант 2:

Вариант 2 включва ръчно редактиране на конфигурационния файл на Nvidia. Независимо дали вашата дистрибуция използва xorg.conf или nvidia.conf, промяната е една и съща навсякъде, защото въпреки разликите в местонахождението и имената на конфигурационните файлове, съдържанието им е еднакво. Отворете конфигурационния файл с администраторски права:

За Arch, Ubuntu, Debian, Mint и производни:

Код за потвърждение: Избери целия код

sudo kate /etc/X11/xorg.conf
За Manjaro:

Код за потвърждение: Избери целия код

sudo kate /etc/X11/mhwd.d/nvidia.conf
*Забележка:
kate замествате с текстовия редактор, който използвате вие - xed, leafpad, kwrite, tea и пр.


След като конфигурационният файл се е отворил, намерете секция Screen (Section "Screen") и добавете в нея следното:

Код за потвърждение: Избери целия код

Option         "metamodes" "nvidia-auto-select +0+0 {ForceCompositionPipeline=On, ForceFullCompositionPipeline=On}"
Пример как би изглеждала секцията с добавен Full Composition Pipeline:

Код за потвърждение: Избери целия код

Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
    SubSection     "Display"
        Depth       24
    Option         "metamodes" "nvidia-auto-select +0+0 {ForceCompositionPipeline=On, ForceFullCompositionPipeline=On}"
    EndSubSection
EndSection
Можете да укажете Full Composition Pipeline за определена резолюция като вместо горния ред, използвате този:

Код за потвърждение: Избери целия код

Option         "metamodes" "1920x1080 +0+0 { ForceFullCompositionPipeline = On }"
Тоест би трябвало да изглежда така:

Код за потвърждение: Избери целия код

Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
    SubSection     "Display"
        Depth       24
    Option         "metamodes" "1920x1080 +0+0 { ForceFullCompositionPipeline = On }"
    EndSubSection
EndSection
Запазвате промените, рестартирате и се радвате на картина без накъсване (tearing) :)

*Забележка:
Тук трябва да уточня, че синхронизирането на картината не работи за Nvidia при Optimus лаптопите. Когато сте избрали Intel видео картата няма да имате накъсване, но ако изберете външната Nvidia видео карта, накъсване ще има. Ако закачите обаче външен дисплей, за него все пак е възможно да изключите накъсването. Това е така, защото при използването на PRIME се сздава отделен дисплей с име PRIME, при който към момента не може да се приложи функцията Full Composition Pipeline. Има други начини за постигане на PRIME синхронизация, но това ще бъде обект на бъдещо ръководство.
Прочетено: 2580 пъти
Изображение
Аватар
тед
Пристрастéн
Пристрастéн
Мнения: 943
Регистриран на: Пон Май 08, 2017 18:33
Репутация: 10376
пол: Жена

Re: How to: Linux накъсване на картината (tearing) при Nvidia. Решение

Мнение от тед »

Имам един въпрос, трябва ли да обновя драйвера за да ми се покажи "Full Composition Pipeline" настройката ?
При мен не знам защо но тази настройка я няма
Изображение
Аватар
Mozo
Skynet Cyber Unit
Skynet Cyber Unit
Мнения: 308737
Регистриран на: Пет Юни 01, 2007 14:18
Репутация: 388610
Местоположение: Somewhere In Time

Re: How to: Linux накъсване на картината (tearing) при Nvidia. Решение

Мнение от Mozo »

Очевидно ти е стара версията на драйвъра, но така, без да си казала с коя версия си, няма как да сме сигурни :)
Изображение
Аватар
тед
Пристрастéн
Пристрастéн
Мнения: 943
Регистриран на: Пон Май 08, 2017 18:33
Репутация: 10376
пол: Жена

Re: How to: Linux накъсване на картината (tearing) при Nvidia. Решение

Мнение от тед »

Mozo написа: Пон Юли 16, 2018 22:05 Очевидно ти е стара версията на драйвъра, но така, без да си казала с коя версия си, няма как да сме сигурни :)
384.130
Но интересно е че в диспечера на драйверите не ми зикарва по нова версия ....
Аватар
Mozo
Skynet Cyber Unit
Skynet Cyber Unit
Мнения: 308737
Регистриран на: Пет Юни 01, 2007 14:18
Репутация: 388610
Местоположение: Somewhere In Time

Re: How to: Linux накъсване на картината (tearing) при Nvidia. Решение

Мнение от Mozo »

Не ти изкарва, защото си с Mint 18.3 :)

Код за потвърждение: Избери целия код

sudo add-apt-repository ppa:graphics-drivers
sudo apt-get update
Влизаш в драйвър мениджъра отново и ще има 396 :)
Изображение
Аватар
beggginer
Доктор
Доктор
Мнения: 6684
Регистриран на: Нед Апр 13, 2008 18:33
Репутация: 38324
пол: Мъж

Re: How to: Linux накъсване на картината (tearing) при Nvidia. Решение

Мнение от beggginer »

Както всички знаем, за тези с KDE това не е достатъчно и докато премахва почти цялото накъсване на картината, остава refresh rate проблема и vsync никога не работи оптимално, освен когато не е форсирана (синхронизацията) в игра, където обичайно композитора е блокиран. Следвайки тази логика, снощи съвсем случайно открих защо.. Kwin Compositor-ът и nvidia proprietary драйвъра имат конфликт при две настройки, които едновременно влияят на OpenGL rendering-а. Това са Max fps/refresh rate и Triple buffering. Знаете, че създателят на kwin не поддържа proprietary драйвъра на нвидия от доста време насам. Какво мислите става с конфигурацията на kwin, когато се активира FullCompositionPipeline или Allow flipping в nvidia-settings. Дали се променя? :) Не.

Знаейки това, има два начина да използваме едновременно драйвъра и да нямаме vsync проблеми:

1. Първо ви давам НЕоптималното решение за потребители с по-слаб хардуер, които искат да извлекат повече кадри с минимално накъсване на картината. Много е просто.. Първо спирате Full Composition Pipeline от конфигурационния файл в nvidia xorg.conf.d , който вече сте създали. (създавате нов от nvidia-settings и го заменяте или просто задавате ForceFullCompositionPipeline = Off, запазвайки останалите линии). Може да експериментирате, спирайки и ForceCompositionPipeline (ще ви донесе някой друг допълнителен кадър).

После създавате kwin.sh скрипт файл, флагнат като изпълним файл (executable) и го слагате в /etc/profile.d/
Най-лесно, това става като създадем kwin.sh с touch в домашна папка по избор, след което го редактираме с текстови редактор:

Код за потвърждение: Избери целия код

#!/bin/sh

export KWIN_TRIPLE_BUFFER=1
Запаметявате и маркирате "is executable" в Properties > permissions на готовия файл. Накрая копирате със sudo cp (например) в /etc/profile.d/

и сте почти готови.

2. Сега към оптималното решение, за тези с по-мощен хардуер или такива, които не играят игри (не гонят висок framerate), по-накратко. :) Запазвате FullCompositionPipeline с предложените от Мозо настройки и създавате същия kwin.sh скрипт в /etc/profile.d/ , но този път със стойност =0

Код за потвърждение: Избери целия код

#!/bin/sh

export KWIN_TRIPLE_BUFFER=0
Това спира вграденият kwin triple buffer и този на nvidia работи ексклузивно, което ви отърва от vsync артефактите. Почти.. :lol:

Сега последно и много важно. И при двата случая трябва да зададете коректния FPS и refresh rate за kwin compositor-a. Иначе настройките на нвидия се игнорират от kwin, въпреки че mhwd извежда коректния refresh rate, ако проверите.. Това става чрез редактиране на kwinrc в home/името-на-акаунта-ви/.config. В Compositing раздела добавяте:

Код за потвърждение: Избери целия код

[Compositing]
MaxFPS=60
OpenGLIsUnsafe=false
RefreshRate=60
MaxFPS и RefreshRate трябва да са с еднаква стойност и да отговарят на работната честота на опресняване на монитора ви. 144 например. За G-sync монитори трябва Allow Flipping да е активно в OpenGL раздела в nvidia-settings.

Дерзайте ;)
Как да си върнем контрола над Windows 10 Home :violent1:
Изображение
Валсо написа: Съб Яну 21, 2023 12:28 Знам какво правя.
Аватар
Mozo
Skynet Cyber Unit
Skynet Cyber Unit
Мнения: 308737
Регистриран на: Пет Юни 01, 2007 14:18
Репутация: 388610
Местоположение: Somewhere In Time

Re: How to: Linux накъсване на картината (tearing) при Nvidia. Решение

Мнение от Mozo »

Refresh рейта на kwin ще повлияе ли нещо в игрите? Всъщност аз нямам никакви проблеми с накъсване само със стъпките от първия пост и не търся подобрения, просто питам.
Изображение
Аватар
beggginer
Доктор
Доктор
Мнения: 6684
Регистриран на: Нед Апр 13, 2008 18:33
Репутация: 38324
пол: Мъж

Re: How to: Linux накъсване на картината (tearing) при Nvidia. Решение

Мнение от beggginer »

Mozo написа: Чет Авг 30, 2018 11:05 Refresh рейта на kwin ще повлияе ли нещо в игрите? Всъщност аз нямам никакви проблеми с накъсване само със стъпките от първия пост и не търся подобрения, просто питам.
Само си мислиш, че нямаш :p

Приложи настройките и виж колко мазно започва да работи композитора и всички програми в него. ;)

Рефреш рейта ще повлияе само на десктопа, поради това че игрите отварят нова инстанция на OpenGL или вулкан, стига да работят на цял екран. Но ако не е правилния, ще има регресия при алт+таб и borderless апликации, но най-вече в браузъри. При мен беше особено осезаемо, поради това че мониторът ми е с по-висока честота на опресняване.

Единственото, което правиш по гореописания начин, е да дадеш приоритет (пълни права за разполагане с ресурсите) на nvidia драйвъра пред kwin. Някъде прочетох пост на Мартин (разработчика), в който описваше как kwin работи с nouveau драйвъра, изземайки приоритета при Triple buffering. Предполагам, същият е случая и при Mesa драйвърите. Единственото изключение е нвидия драйвъра със затворен код. Оттам идват и артефактите.

При мен специално, най-висока производителност без накъсване и vsync проблеми, се получава с използване на:
Option "metamodes" "nvidia-auto-select +0+0 {ForceCompositionPipeline=On, ForceFullCompositionPipeline=Off}"
Option "AllowIndirectGLXProtocol" "off"
Option "TripleBuffer" "on"
комбинирано с експортиране на KWIN_TRIPLE_BUFFER=0 и задаване на правилния refresh rate. Ти с 1080Ti можеш да си позволиш и пълния pipeline (много е трудно да се види някаква разлика на просто око, освен че губиш няколко кадъра при Full)

__GL_YIELD="USLEEP" също работи добре в десктоп среда и браузъри, апликации, стига пускането на скрипта да се забави достатъчно при логване спрямо самостартиращите процеси, защото иначе чупи Х. НО за игри не става. Нарушава производителността и създава артефакти.

А иначе, всички тези проблеми имат своя корен и истината е някъде там, но не може да се коментира от позицията на краен потребител.. https://mail.kde.org/pipermail/plasma-d ... 86117.html
Как да си върнем контрола над Windows 10 Home :violent1:
Изображение
Валсо написа: Съб Яну 21, 2023 12:28 Знам какво правя.
Аватар
Mozo
Skynet Cyber Unit
Skynet Cyber Unit
Мнения: 308737
Регистриран на: Пет Юни 01, 2007 14:18
Репутация: 388610
Местоположение: Somewhere In Time

Re: How to: Linux накъсване на картината (tearing) при Nvidia. Решение

Мнение от Mozo »

Чакай сега, предлагаш ми вариант, който не е за играене на игри, а аз правя точно това :lol: Иначе наистина нямам проблеми. Имах дълго време, докато ръчках, но го наръчках и сега всичко е тип-топ :)
Изображение
Аватар
Mozo
Skynet Cyber Unit
Skynet Cyber Unit
Мнения: 308737
Регистриран на: Пет Юни 01, 2007 14:18
Репутация: 388610
Местоположение: Somewhere In Time

Re: How to: Linux накъсване на картината (tearing) при Nvidia. Решение

Мнение от Mozo »

Айде, пробвах го, че ми стана любопитно, никаква разлика няма. не, че не я виждам, виждам много - просто няма такава. Явно на 60 херца е малко все тая :)
Изображение
Аватар
beggginer
Доктор
Доктор
Мнения: 6684
Регистриран на: Нед Апр 13, 2008 18:33
Репутация: 38324
пол: Мъж

Re: How to: Linux накъсване на картината (tearing) при Nvidia. Решение

Мнение от beggginer »

__GL_YIELD="USLEEP" не го предлагам на никого, само коментирам че и с него става.

60 херца е стандарта, няма каква разлика да видиш точно там. :) В частно твоя случай, ако пуснеш само {ForceCompositionPipeline=On}" с "AllowIndirectGLXProtocol" "off" и "TripleBuffer" "on" заедно с kwin.sh експорта =0, ще извлечеш няколко кадъра повече в игрите, без да губиш нищо.

А като изявен геймър, защо ти се свиди да дадеш някой лев за добър монитор? Айде G-sync са наистина безбожно скъпи, но прилични freesync такива са напълно достъпни. И с горепосочените tweek-ове работят, та се късат. При все че се кьоравим в тия монитори по цял ден, поне да са качествени! :lol:
Как да си върнем контрола над Windows 10 Home :violent1:
Изображение
Валсо написа: Съб Яну 21, 2023 12:28 Знам какво правя.
Аватар
Mozo
Skynet Cyber Unit
Skynet Cyber Unit
Мнения: 308737
Регистриран на: Пет Юни 01, 2007 14:18
Репутация: 388610
Местоположение: Somewhere In Time

Re: How to: Linux накъсване на картината (tearing) при Nvidia. Решение

Мнение от Mozo »

Ем, то аз съм си така, само добавих сега export KWIN_TRIPLE_BUFFER=0, но не виждам абсолютно никаква разлика :)

Иначе херцовете при LCD-тата са без значение за здравето на очите. Тук ни интересува подсветката и да няма ШИМ. Моят монитор има ШИМ, но при усилване на яркостта и контраста на максимални стойности изчезва напълно. След това цветовата корекция я извършвам от драйвъра и съм готов. Не ми трябва повече :)
Изображение
Аватар
beggginer
Доктор
Доктор
Мнения: 6684
Регистриран на: Нед Апр 13, 2008 18:33
Репутация: 38324
пол: Мъж

Re: How to: Linux накъсване на картината (tearing) при Nvidia. Решение

Мнение от beggginer »

Под качествени, нямам предвид да не вредят на очите. А да отстраняваш PWM по тоя начин, за сметка на осветяване на макс от подсветката, е меко-казано спорно. :lol: Надявам се, че не работиш в тъмно помещение! Също при ползване на макс, има шанс да ти изгори пиксел. Както и да е, исках да кажа че с добър монитор виждаш повече. И понеже се кьоравиш в него по цял ден, е по-добре и в игрите и при нормална десктоп консумация. Ако е и IPS, си направо супер!



И пак ти казвам, няма как да видиш разликата, при положение че при теб е все тая, но това не означава, че я няма. Някой тук с freesync монитор, да ме подкрепи? :mrgreen:
Как да си върнем контрола над Windows 10 Home :violent1:
Изображение
Валсо написа: Съб Яну 21, 2023 12:28 Знам какво правя.
Аватар
Mozo
Skynet Cyber Unit
Skynet Cyber Unit
Мнения: 308737
Регистриран на: Пет Юни 01, 2007 14:18
Репутация: 388610
Местоположение: Somewhere In Time

Re: How to: Linux накъсване на картината (tearing) при Nvidia. Решение

Мнение от Mozo »

Работя във всякакво помещение, но това няма значение - намалил съм си доста яркостта и контраста от драйвъра - обичам задимени настройки :) Иначе мониторът кара така вече шеста или седма година - нищо не му е изгоряло :)
Изображение
Аватар
beggginer
Доктор
Доктор
Мнения: 6684
Регистриран на: Нед Апр 13, 2008 18:33
Репутация: 38324
пол: Мъж

Re: How to: Linux накъсване на картината (tearing) при Nvidia. Решение

Мнение от beggginer »

Само да добавя нещо към обясненията по-горе. При минимална разлика между native refresh rate (ако резолюцията е зададена автоматично) и стойността зададена в kwinrc, остават артефактите. Трябва да са напълно еднакви. Изглежда просто, но на тази машина съм накачил една камара допълнителни монитори и се усетих, че някои от тях нейтив работят на 59.94 или 74.55. (проверявате с xrandr -q)

Например:

59.94 нейтив резолюция трябва да или да е форсирана на 60 с Option "metamodes" "1920x1080_60_0 +0+0", или стойностите в kwinrc да са променени на:

Код за потвърждение: Избери целия код

MaxFPS=59.94
OpenGLIsUnsafe=false
RefreshRate=59.94
По гореописания начин успявам да мина всички тестове с мулти-монитори:

https://www.testufo.com

и

https://www.vsynctester.com/

в сивичко без грешка :booty:

А вие, можете ли с един?
Как да си върнем контрола над Windows 10 Home :violent1:
Изображение
Валсо написа: Съб Яну 21, 2023 12:28 Знам какво правя.
Нова тема Публикувай отговор

  • Подобни теми
    Отговори
    Преглеждания
     Последно мнение

Обратно към “IT Новини”