Чому відео зриває таку проблему в Linux?


101

Я використовую багато варіантів Linux (в основному похідні Debian) вже більше десяти років. Одна з проблем, яку я не бачив вирішити задовільно, - це питання горизонтального розриву, або Vsync не належним чином реалізований.

Я говорю це тому, що використовую 5 різних дистрибутивів на 4 різних комп'ютерах з різними моніторами та відеокартами Nvidia / AMD / ATI / Intel; щоразу виникає проблема з розривом відео з навіть незначним рухом.

Це велика проблема, тим більше, що навіть Windows XP не має цих проблем на сучасному обладнанні. Якщо хтось збирається використовувати Linux для чого-небудь, чому б він хотів з'являтися постійні дефекти, роблячи щось, що не є CLI?

Я здогадуюсь, що або мало розробників знають про цю проблему або достатньо дбають, щоб її виправити. Я намагався майже кожен композитор там, і, як правило, найкраще, що вони можуть зробити, це мінімізувати проблему, але не усунути її. Чи не повинно бути це так просто, як синхронізація зі швидкістю оновлення монітора? Чи є якась політика серед спільноти OSS, яка заважає комусь вводити код, який виправляє це?

Кожен раз, коли я звертався за допомогою щодо цього питання в минулому, він або трактується як крайній випадок (у який мені важко повірити, що він отримує кількість разів, коли я повторив проблему), або я отримую потенційні рішення, які щонайбільше мінімізувати сльозотечу.


2
Ви не згадуєте, який DE ви використовуєте. KDE вже близько року перебуває в порядку зі сльозами.
Sparhawk

1
Як можна легко повторити проблему? На комп'ютері Debian / Ubuntu / Mint?
Xen2050

50
Цей XKCD, здається, тут так добре вписується ...
Angew

Мій досвід зі сльозами був зовсім іншим. Я дуже задоволений іграми та переглядом фільмів на Linux. Steam справді зробив Linux життєздатною платформою для чудових ігор. Останнім часом я граю у Witcher 2 та Talos Principle, і не бачив жодного розриву протягом 50 годин гри. Це з картою Nvidia з власними драйверами на Arch. Я погоджуюся з Xen2050, що це питання було б кориснішим, якби для ваших побудов були дані точні характеристики. Я не заперечую, що є проблема, я просто мав дуже хороший досвід.
лабіринт

Коли композиція Nvidia вирішила проблему для мене, коли я використовував Nvidia ще в 2007 році. Не в повноекранному режимі, хоча через повноекранні вікна вимикається композитор, це передбачає, що ви збираєтеся запустити гру OpenGL, я думаю. З Intel ви спробували встановити розділ "Пристрій" Варіант "TearFree" "true" в X? Він подвоює використання відео оперативної пам’яті, але я думаю, це буде працювати.
Зан Лінкс

Відповіді:


92

Все це пов’язано з тим, що сервер X застарілий, непридатний для сучасного графічного обладнання та в основному весь прямий зв'язок відеокарти здійснюється як розширення ("патч") над стародавнім роздутим ядром. X-сервер не забезпечує вбудованих засобів синхронізації між користувачем, що надає вікно, і екраном, на якому відображається вікно, тому вміст змінюється в середині візуалізації. Це одне з відомих питань X-сервера (його багато, вся модель того, що сервер робить і застаріла - обробка подій у підвіконних системах, метадані про вікна, графічні примітиви для прямого малювання ...). Набори інструментів віджетів переважно хочуть промальовувати все це, але розривання все ще є проблемою, оскільки не існує механізму впоратися з цим. Додаткові проблеми виникають, коли у вас є кілька карт, для яких потрібні різні драйвери,

Wayland, який дещо з ентузіазмом намагається замінити X, підтримує педантичну синхронізацію vsync в своїй основі, і кожен рекламний кадр рекламується таким, що ідеально ідеальний.

Якщо ви швидко "google" "wayland video tearing", ви знайдете більше інформації про все.


38
+1для "X проблема, погляньте на Wayland". Мертвий серйозно, це правильна відповідь.
HalosGhost

2
@HalosGhost wayland evangelism на ходу :) все ще не підтримується мережевий сеанс?
kagali-san

3
@ kagali-san Я не сказав, що Wayland був ідеальним (це не так). Але це, безумовно, краще, ніж X. :)
HalosGhost

8
@ kagali-san: У Вестона було створено резервний пакет RDP об'єднаний лише рік тому, якщо ви вважаєте, що так чи інакше стосується питання про відрив відео.
grawity

3
@orion: і завдяки вам на цій самій сторінці зараз результат №1 для wayland video tearing: P
Tobia Tesan

16

Зривання екрана з'являється в основному з двох причин - драйверів, яких ще немає, і відсутності vsync з певними менеджерами вікон.

Що стосується драйверів, і безкоштовні, і власні драйвери підтримують безперервне складання (nvidia та amd обидва). Пам’ятайте, що, наприклад, включення робочого столу без каталогів у каталізаторі ( fglrx) може спричинити падіння кадру та відставання, тому його зазвичай вимкнено за замовчуванням. Що стосується відкритого драйвера, vsync повинен бути включений за замовчуванням. Таким чином, проблему з розірванням екрана можна вирішити шляхом випробування різних драйверів та їх налаштування.

Що стосується віконних менеджерів, відомо, що Openbox, Awesome та інші легкі телевізори не підтримують без сліз. XFCE (xfwm, якщо бути конкретним) виправив це в останніх випусках, 4.11 / 12 тепер мають Vsync. У великих середовищах на робочому столі також немає проблем зі сльозами, включаючи GNOME, KDE, Unity та Cinnamon.

Якщо ви все ще відчуваєте розривання екрана, ваш варіант - спробувати іншого менеджера з композицій, наприклад Комптона або Квіна. Kwin - менеджер вікон для KDE, і я маю досвід використання kwin в XFCE, коли він не підтримував vsync, і він працював дуже добре.

Тож рішення тут - експерименти, те, що порушено в одній комбінації драйвер / wm, може працювати в іншій. Я вірю, що ситуація незабаром покращиться, оскільки драйвери з відкритим кодом стають все більш досконалими, і перехід на шлях може позбутися старих проблем з Xorg.


5
Не зовсім. KDE (разом з Квіном чи іншим композитором) все ще сльози, як пекло, з NVidia або Intel.
Іван

1
Openbox тощо працює без сліз - просто потрібно запустити окремий композитор, наприклад, compton чудово працює.
wingedsubmariner

1
@wingedsubmariner, якщо ви, хлопці, посилаєтесь на openbox, ви також маєте на увазі fluxbox?
nass

також надзвичайно корисно, що ви зазначаєте, який стан WM в різних віконних середовищах.
nass

@nass Абсолютно. Менеджер вікон ніколи не є обмежуючим фактором.
wingedsubmariner

14

Якщо ви використовуєте драйвер nvidia> = 365.20, спробуйте увімкнути опцію "Примусовий конвеєрний конвеєр" у nvidia-settings.

введіть тут опис зображення


nVidia Quadro на Lenovo W520, Fedora 25, і це спрацювало :)
Jerther

4
також якщо у вас немає такої опції, натисніть "розширені налаштування" внизу вікна, і воно з’явиться. чому цей "повноцінний конвеєр" не включений за замовчуванням? ..
Раст

1
@Rast Тому, що раніше були деякі проблеми з продуктивністю.
Руслан

До речі, виявляється, що принаймні драйвери Intel також мають TearFreeможливість перейти у відповідний Deviceрозділ. Я щойно спробував це, і це дає результати, дуже схожі на повний композиційний конвеєр nvidia.
Руслан

Я не можу отримати налаштування для економії при перезавантаженнях. Я спробував створити файл ~ / .xinitrc і помістити в нього "nvidia-settings - load-config & only. / Etc / X11 / xinit / xinitrc", але це не здавалося,
FragmentalStew

9

У мене тут було сильне сльозотеча і зараз це вирішено.

Прочитавши це ( чудове пояснення ) того, як працює сервер Xorg, я зрозумів, що X-сервер малює оновлення вікон безпосередньо на картці пам'яті в будь-який випадковий час, якщо ви не використовуєте диспетчер вікон, увімкнутий композицію.

Коли композиція включена, менеджер вікон збирає всі зміни з різних буферів віконної пам'яті, створює отримане зображення на весь екран і скидає його на карту дисплея на одному знімку.

Більшість сучасних дистрибутивів мають композиційний віконний менеджер. KWin для KDE, Mutter для Gnome, Muffin для Кориці, Marco для Mate, xfwm для XFCE тощо. Однак композицію можна відключити для економії ресурсів.

У моєму випадку композиція була відключена в KDE4. Як тільки ввімкнули сльозотечу. EDIT : Мені також потрібно було змінити в параметрах KWin стратегію VSync з автоматичного на повторне використання вмісту екрана , щоб позбутися від розриву так, як це пояснено в цьому звіті про помилки kwin .

Параметри драйвера також можуть бути фактором. У моєму випадку параметри за замовчуванням справні. Arch Wiki має чудову документацію щодо варіантів різних дисплейних карт, таких як картки Intel або NVIDIA .

Щоб перевірити, чи включена опція у вашій поточній конфігурації xorg, ви можете перевірити журнал. Наприклад, щоб перевірити, чи ввімкнено DRI:

cat /var/log/Xorg.0.log | grep DRI

1
На XFCE (у Xubuntu 16.04) композиція включена за замовчуванням, але синхронізація з вертикальним порожнім не є . Використовуйте xfwm4-tweaks-settingsкоманду, щоб показати програму твікера, і на вкладці Композитор ви можете знайти вищевказаний варіант. Увімкнення його зробило величезну зміну , і його можна перевірити тут: vsynctester.com/index.html (увімкніть / вимкніть функцію під час відображення анімації). Це не ідеально, хоча є якісь пропущені кадри, але набагато краще, ніж коли вимкнено.
karatedog

1

Рішення тут: Linux Mint 17.3 MATE тепер поставляється з Compton .

Просто перейдіть до Desktop Settings-> Windows-> Window Managerі виберіть Metacity + Compton. Це воно.

У мене є відеокарта AMD, і вона працює з коробки для драйвера з відкритим кодом.

Для фірмового драйвера AMD, коли відео HTML5 буде максимально збільшено до повного екрану, ви можете побачити синій колір, який заповнить весь екран. Щоб виправити це, створіть і chmod +xсценарій нижче:

#!/bin/bash
killall compton 2> /dev/null
compton -b --unredir-if-possible

Запускайте його щоразу, коли ви перезавантажуєте систему, але не намагайтеся додавати її до Startup Applicationsякоїсь причини, можливо, з-за причини може порушитися запуск.


0

У Peppermint Linux перейдіть у меню Налаштування> Центр управління Peppermint, виберіть Ефекти робочого столу та увімкніть "Увімкнути ефекти робочого столу" та "Синхронізувати малюнок до вертикального поля".


0

Я використовую Linux Mint XFCE, і ця проблема мене досить довго засмучувала. Я знайшов рішення для свого ноутбука з інтегрованою графічною карткою Intel, і це вирішило проблему . Для мого робочого столу з картою NVIDIA, яка не може працювати. Але я просто знайшов винуватця.

Я відчув негайне підвищення продуктивності, коли відключив композицію вікон. Ось як це можна зробити:

Перейдіть у розділ Усі налаштування / Налаштування вікон / Композитор та вимкніть цю справу.

Майте на увазі, що це специфічно для distro, і моє Mint з XFCE, і я не знаю, як знайти подібну річ на інших дистрибутивах.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.