13.06.2021

Доступен Wayland 1.19

Состоялся стабильный релиз протокола, механизма межпроцессного взаимодействия и библиотек Wayland 1.19. Ветка 1.19 обратно совместима на уровне API и ABI с выпусками 1.x и содержит в основном исправления ошибок и незначительные обновления протокола. Улучшена система сборки, для которой теперь требуется инструментарий Meson как минимум версии 0.52.1. Композитный сервер Weston, предоставляющий код и рабочие примеры для использования Wayland в десктоп-окружениях и встраиваемых решениях, развивается в рамках отдельного цикла разработки.

Изменения в приложениях, окружениях рабочего стола и дистрибутивах, связанные с Wayland:

  • В Fedora 34 запланирован перевод сборки с рабочим столом KDE на использование Wayland по умолчанию. Сеанс на базе X11 планируется перевести в разряд опции. Для работы KDE при использовании проприетарных драйверов NVIDIA задействован пакет kwin-wayland-nvidia.
  • В KDE ведётся работа по доведению сеанса на базе Wayland до готовности к повседневному использованию и достижению паритета в функциональности с режимом работы поверх X11. Решены проблемы с ведением скринкастов и вставкой средней кнопкой мыши. Устранены проблемы со стабильностью работы XWayland. Предоставлена возможность настройки скорости перемещения мыши и прокрутки. В KWin проведён большой рефакторинг кода, отвечающего за композитинг, что позволило добиться снижения задержек для всех операций, связанных со сведением разных объектов на экране. В KWin также реализована техника подрезки границ субповерхностей (subsurface clipping), решающая проблему с мерцанием во многих приложениях. Реализована возможность работы на системах с несколькими GPU и подключения мониторов с разной частотой обновления экрана.
  • Началось развитие KWinFT, форка KWin, сфокусированного на Wayland. Проект также развивает библиотеку wrapland с реализацией обвязки над libwayland для Qt/C++, продолжающей развитие KWayland, но избавленной от привязки к Qt.
  • В GNOME для Wayland исключена отрисовка всего экрана при использовании буферов dma-buf или EGLImage в пользу частичного обновления окон, снижающего объем данных, передаваемых между GPU и CPU. В сочетании с независимым обновлением элементов интерфейса указанная оптимизация позволила существенно снизить энергопотребление при автономной работе от аккумулятора. Добавлена возможность назначения разных частот обновления экрана для каждого монитора.
  • В GTK 4 программные интерфейсы GDK переработаны с оглядкой на использование протокола Wayland и связанных с ним концепций. Завязанные на X11 и Wayland возможности перемещены в отдельные бэкенды.
  • В Firefox для Wayland обеспечено аппаратное ускорение WebGL и видео. Добавлен новый бэкенд, использующего механизм DMABUF для отрисовки в текстуры и организации совместного использования буферов разными процессами. Данный бэкенд позволил реализовать в сборках Firefox на базе Wayland унифицированное рабочее GL-окружение, не привязанное к конкретным композитным серверам, таким как GNOME Mutter или KDE Kwin. При работе в окружении GNOME на базе Wayland включён по умолчанию движок композитинга WebRender.
  • В Chromium и Electron добавлена поддержка Wayland, основанная на прослойке ozone-wayland, предоставляющей адаптированный для работы с Wayland набор C++ классов Ozone, используемых в Chromium для абстрагирования вывода на различные оконные системы.
  • Началась работа по портированию NetBSD для поддержки графического стека на базе Wayland.
  • Основан проект по реализации полноценной поддержки управления цветом и HDR (High Dynamic Range) в протоколе Wayland.
  • Началась разработка Wayland-драйвера для Wine, который позволит запускать Windows-игры в окружениях на базе Wayland.
  • Дистрибутив Tails наметил перевод пользовательского окружения на использование протокола Wayland, что позволит повысить защищённость всех графических приложений за счёт улучшения контроля за тем, как приложения взаимодействуют с системой.
  • Продолжается работа по портированию приложений MATE для Wayland. Для работы без привязки к X11 в окружении Wayland адаптирован просмотрщик изображений Eye of MATE. Улучшена поддержка Wayland в панели MATE. Для использования с Wayland адаптированы апплеты panel-multimonitor и panel-background.
  • Для DDX-сервера XWayland подготовлены патчи, которые при наличии в системе проприератных драйверов NVIDIA позволят использовать аппаратное ускорение в OpenGL и Vulkan при запуске X-приложений в Wayland-окружениях.
  • В проприетарных драйверах NVIDIA продолжена реализация расширений, необходимых для полноценной работы окружений, использующих протокол Wayland.
  • Продолжается развитие Mir как композитного сервера для Wayland. В средствах для обеспечения запуска Wayland-приложений в окружении Mir реализовано корректное масштабирование на экранах HiDPI. Добавлена возможность масштабирования вывода Wayland-клиентов. Для каждого устройства вывода разрешено устанавливать отдельные настройки масштабирования, в том числе дробные значения масштаба. Добавлена возможность добавления и удаления расширений протокола Wayland. Добавлена поддержка экспериментальных протоколов: zwp_linux_dmabuf_unstable_v1 для создания буферов wl_buffers с использованием механизма DMABUF и wlr-foreign-toplevel-management для подключения собственных панелей и переключателей окон.
  • Сформированы новые выпуски пользовательского окружения Sway и композитного сервера Wayfire, использующих Wayland.
  • Продолжается работа над выпуском пользовательского окружения LXQt 1.0.0, в котором будет реализована полноценная поддержка работы поверх Wayland.
  • Wayland задействован по умолчанию в мобильных платформах Plasma Mobile, Sailfish 2, webOS Open Source Edition, Tizen и AsteroidOS;
  • Для тестирования работы KDE, GNOME, Enlightenment, Wayfire, Liri и Sway поверх Wayland выпускается специальный Live-дистрибутив Rebecca Black Linux.

Напомним, что Wayland представляет собой протокол взаимодействия композитного сервера и работающих с ним приложений. Клиенты самостоятельно выполняют отрисовку своих окон в отдельном буфере, передавая информацию об обновлениях композитному серверу, который комбинирует содержимое буферов отдельных приложений для формирования итогового вывода с учётом возможных нюансов, таких как перекрытие окон и прозрачность. Иными словами, композитный сервер не предоставляет API для отрисовки отдельных элементов, а оперирует только с уже сформированными окнами, что позволяет избавиться от двойной буферизации при использовании высокоуровневых библиотек, таких как GTK+ и Qt, берущих на себя работу по компоновке содержимого окон.

Wayland решает многие проблемы с безопасностью X11, так как в отличие от последнего изолирует ввод и вывод для каждого окна, не позволяет клиенту получить доступ к содержимому окон других клиентов, а также не допускает перехват связанных с другими окнами событий ввода. В настоящее время поддержка прямой работы c Wayland уже реализована для библиотек GTK, Qt, SDL (начиная с выпуска 2.0.2), Clutter и EFL (Enlightenment Foundation Library). Начиная с Qt 5.4 в состав включён модуль QtWayland с реализацией компонентов для работы Qt-приложений в окружении композитного сервера Weston, развиваемого проектом Wayland.

Взаимодействие с аппаратным обеспечением в Wayland/Weston, например, проведение инициализации, переключение видеорежимов (drm modesetting) и управление памятью (GEM для i915 и TTM для radeon и nouveau) графических карт, может производиться напрямую через модуль, работающий на уровне ядра, что позволяет обойтись без привилегий суперпользователя. Композитный сервер Weston может работать не только с использованием DRM-модуля ядра Linux, но и поверх X11, другого композитного сервера Wayland, фреймбуфера и RDP. Кроме того, развиваются проекты по обеспечению работы поверх графического стека платформы Android.

В рамках проекта Weston развивается одна из реализаций композитного сервера. В роли композитного сервера также может выступать любой другой продукт, поддерживающий протокол Wayland. Например, в настоящее время ведётся работа по обеспечению поддержки Wayland в KWin. В текущем виде Weston уже вышел за рамки набора примеров для тестирования протокола Wayland и может обрастать функциональностью через плагины и дополнения. Пользовательские оболочки и расширенные функций управления окнами предлагается реализовывать в форме внешних бэкендов к Weston.

Для обеспечения выполнения обычных X11-приложений в окружении на базе Wayland используется DDX-компонент XWayland (Device-Dependent X), похожий по организации работы на Xwin и Xquartz для платформ Win32 и OS X. Поддержку запуска X11-приложений планируется встроить непосредственно в композитный сервер Weston, который при попытке выполнения X11-приложения будет инициировать запуск X-сервера и связанных с ним компонентов XWayland. При таком подходе процесс запуска X11-приложений будет бесшовным и неотличимым для пользователя от запуска приложений, работающих напрямую с Wayland.

Источник.