Я использую много вариантов Linux (в основном производных от Debian) уже более десяти лет. Одна проблема, которую я не видел, решена удовлетворительно, это проблема горизонтального разрыва или неправильной реализации Vsync.
Я говорю это потому, что использую 5 разных дистрибутивов на 4 разных компьютерах с различными мониторами и видеокартами Nvidia / AMD / ATI / Intel; каждый раз была проблема с разрывом видео даже с небольшим движением.
Это большая проблема, особенно если учесть, что даже Windows XP не имеет этих проблем на современном оборудовании. Если кто-то собирается использовать Linux для чего-либо, зачем им хотеть обнаруживать постоянные дефекты при выполнении чего-либо не-CLI?
Я предполагаю, что или немногие разработчики знают об этой проблеме или заботятся достаточно, чтобы решить ее. Я пробовал почти каждый композитор, и обычно лучшее, что они могут сделать, это минимизировать проблему, но не устранить ее. Разве это не должно быть так просто, как синхронизация с частотой обновления монитора? Есть ли какая-то политика в сообществе OSS, которая мешает кому-либо делать код, исправляющий это?
Каждый раз, когда я в прошлом обращался за помощью по этому вопросу, он либо рассматривается как крайний случай (в который мне трудно поверить, учитывая количество раз, которое я повторил проблему), либо я получаю потенциальные решения, которые максимально уменьшить разрыв.
Ответы:
Это все из-за того, что X-сервер устарел, плохо подходит для современного графического оборудования, и в основном вся прямая связь с видеокартой осуществляется как расширение («патч») поверх древнего раздутого ядра. X-сервер не предоставляет встроенных средств синхронизации между пользователем, отображающим окно, и экраном, отображающим окно, поэтому содержимое изменяется в середине воспроизведения. Это одна из известных проблем X-сервера (у него много, вся модель того, что сервер делает и устарела - обработка событий в подокнах, метаданные об окнах, графические примитивы для прямого рисования ...). Наборы инструментов виджета в основном хотят затушевать все это, но разрыв все еще остается проблемой, потому что нет механизма, чтобы справиться с этим. Дополнительные проблемы возникают, когда у вас есть несколько карт, которые требуют разных драйверов,
Wayland, который без особого энтузиазма пытается заменить X, поддерживает педантичную синхронизацию vsync в своем ядре и рекламируется, чтобы каждый кадр был абсолютно идеальным.
Если вы быстро включите Google «Wayland Video Learing», вы найдете больше информации обо всем.
источник
+1
потому что «Х - это проблема, взгляни на Вейланда». Смертельно серьезно, это правильный ответ.wayland video tearing
: PРазрыв экрана появляется в основном по двум причинам: драйверов, которых еще нет, и отсутствия vsync с некоторыми оконными менеджерами.
Что касается драйверов, то как бесплатные, так и проприетарные драйверы поддерживают беспроигрышную компоновку (nvidia и amd оба). Имейте в виду, что, например, включение рабочего стола без катализаторов в катализаторе (
fglrx
) может привести к падению кадра и зависанию, поэтому по умолчанию оно обычно отключено. Что касается открытого драйвера, vsync должен быть включен по умолчанию. Таким образом, проблема с разрывом экрана может быть решена с помощью различных драйверов и их настройки.Что касается оконных менеджеров, то известно, что Openbox, Awesome и другие легковесные wms не поддерживают слезоточивость. XFCE (точнее, xfwm) исправил это в последних выпусках, 4.11 / 12 теперь имеет Vsync. Основные среды рабочего стола также не имеют проблем с разрывом, включая GNOME, KDE, Unity и Cinnamon.
Если вы по-прежнему сталкиваетесь с разрывом экрана, попробуйте другой менеджер композитинга, например Compton или Kwin. Kwin является оконным менеджером для KDE, и у меня есть опыт использования kwin в XFCE, когда он не поддерживает vsync и работает очень хорошо.
Таким образом, решение здесь заключается в эксперименте, что сломано в одной комбинации драйвер / wm может работать в другой. Я верю, что ситуация скоро улучшится, так как драйверы с открытым исходным кодом становятся более продвинутыми, и переключение на Wayland может избавить от старых проблем с Xorg.
источник
Если вы используете драйвер nvidia> = 365.20, попробуйте включить опцию «Force Full Composition Pipeline» в
nvidia-settings
.источник
TearFree
опцию, которую вы можете поместить в соответствующийDevice
раздел. Я только что попробовал, и это дает результаты, очень похожие на полный состав конвейера nvidia.У меня был сильный разрыв здесь и теперь это решено.
Прочитав это ( замечательное объяснение ) о том, как работает сервер Xorg, я понял, что сервер X рисует обновления окна непосредственно на карту памяти в любое случайное время, если вы не используете менеджер окон с включенным композитингом.
Когда композитинг включен, оконный менеджер объединяет все изменения из разных буферов памяти окон, создает результирующее изображение для всего экрана и выдает его на карту памяти за один снимок.
В большинстве современных дистрибутивов есть менеджер окон композитинга. KWin для KDE, Mutter для Gnome, Muffin для Cinnamon, Marco для Mate, xfwm для XFCE и т. Д. Однако композитинг может быть отключен для экономии ресурсов.
В моем случае композитинг был отключен в KDE4. После включения слезы ушли. РЕДАКТИРОВАТЬ : Мне также нужно было изменить в опциях KWin стратегию VSync с « Автоматически» на « Повторное использование содержимого экрана» , чтобы избавиться от разрывов, как описано в этом специальном отчете об ошибках kwin .
Варианты драйвера могут быть также фактором. В моем случае параметры по умолчанию работают нормально. Arch Wiki имеет отличную документацию по опциям для различных видеокарт, таких как карты Intel или NVIDIA .
Чтобы проверить, включена ли опция в вашей текущей конфигурации xorg, вы можете проверить журнал. Например, чтобы проверить, включен ли DRI:
источник
xfwm4-tweaks-settings
команду, чтобы показать приложение твикера, и на вкладке Compositor вы можете найти вышеуказанную опцию. Его включение имело огромное значение, и его можно проверить здесь: vsynctester.com/index.html (включить / выключить эту функцию во время отображения анимации). Он не идеален, хотя есть некоторые пропущенные кадры, но гораздо лучше, чем когда он выключен.Решение здесь: Linux Mint 17.3 MATE теперь поставляется с Compton .
Просто зайдите в
Desktop Settings
->Windows
->Window Manager
и выберитеMetacity + Compton
. Вот и все.У меня есть видеокарта AMD, и она работает из коробки для драйвера с открытым исходным кодом.
Для проприетарного драйвера AMD, когда видео HTML5 развернуто на весь экран, вы можете увидеть синий цвет, который заполнит весь экран. Чтобы это исправить, создайте и
chmod +x
скрипт ниже:Запускайте его всякий раз, когда вы перезапускаете систему, но не пытайтесь добавить его
Startup Applications
- по какой-то причине он может прервать запуск.источник
В Peppermint Linux перейдите в «Настройки»> «Центр управления Peppermint», выберите «Эффекты рабочего стола» и включите «Включить эффекты рабочего стола» и «Синхронизировать рисунок с вертикальным пробелом».
источник
Я использую Linux Mint XFCE, и эта проблема довольно долго меня расстраивала. Я нашел решение для своего ноутбука с интегрированной графической картой Intel, и это решило проблему . Для моего рабочего стола с картой NVIDIA этот трюк не может работать. Но я только что нашел виновника.
Я сразу почувствовал прирост производительности, когда отключил компоновку окон. Вот как вы можете это сделать:
Перейдите во Все настройки / Настройки менеджера окон / Композитор и отключите все это.
Имейте в виду, что это специфичный для дистрибутива мой Mint с XFCE, и я понятия не имею, как найти похожую вещь в других дистрибутивах.
источник