Выпуск Wayland 1.15 и композитного сервера Weston 4.0

После восьми месяцев разработки сформирован стабильный релиз протокола, механизма межпроцессного взаимодействия и библиотек Wayland 1.15, а также развиваемого параллельно композитного сервера Weston 4.0. Ветка Wayland 1.15 обратно совместима на уровне API и ABI с выпусками 1.x и кроме исправления ошибок примечательна следующими изменениями:

  • Добавлен новый API wl_display_destroy_clients () для проведения чистки клиентов до разрушения связанного с ними вывода;
  • Документировано применение двойной буферизации в wl_subcompositor.get_subsurface;
  • В wayland-scanner добавлена возможность генерации как публичных, так и приватных идентификаторов. Добавлен вывод предупреждения при попытке использования старой опции «code». Представлена новая опция »--strict», обеспечивающая мгновенное прекращение работы в случае проблем при верификации DTD;
  • Функциональность библиотеки libwayland-egl включена в состав libwayland и скоро будет удалена из Mesa;
  • В переменной окружения WAYLAND_DISPLAY теперь допускаются только абсолютные пути.

В Weston развиваются технологии, содействующие появлению полноценной поддержки протокола Wayland в Enlightenment, GNOME, KDE и других пользовательских окружениях. Разработка Weston нацелена на предоставление высококачественной кодовой базы и рабочих примеров для использования Wayland в десктоп-окружениях и встраиваемых решениях, таких как платформы для автомобильных информационно-развлекательных систем, смартфонов, телевизоров и прочих потребительских устройств.

Смена номера версии Weston на 4.0 обусловлена изменениями ABI, нарушающими совместимость, например, удалена поддержка протокола xdg-shell-v5 (оставлен только xdg-shell-v6). В новой версии Weston добавлена поддержка протокола input-timestamps, позволяющего клиентам с высокой точностью получать информацию о времени наступлений событий ввода. Добавлена базовая поддержка атомарного изменения видеорежимов. Также представлена реализация протокола zwp_linux_dmabuf_v1, в gl-renderer добавлена поддержка EGL-расширения fence_sync (синхронизация формирования вывода), обеспечено кэширование свойств DRM (Direct Rendering Manager).


Статус поддержки Wayland в окружениях рабочего стола и дистрибутивах:

  • В GNOME сеанс на базе Wayland рекомендован в качестве основного. В композитном менеджере Mutter при использовании Wayland обеспечена поддержка систем с несколькими GPU и гибридных графических подсистем (GPU Intel + GPU NVIDIA или AMD). В GNOME для Wayland реализована поддержка удалённого рабочего стола;
  • В выпущенной компанией LG открытой платформе webOS Open Source Edition предложен новый композитный менеджер, основанный на протоколе Wayland;
  • В KDE продолжает наблюдаться прогресс в стабилизации и расширении поддержки Wayland. KDE Plasma 5.12 стал первым LTS-выпуском с поддержкой Wayland. В Kubuntu 18.04 реализован экспериментальный сеанс на базе Wayland;
  • В openSUSE Leap 15 будет предложен сеанс KDE на базе Wayland;
  • Использование по умолчанию сеанса на базе Wayland в Ubuntu 17.10. В LTS-выпуске Ubuntu 18.04 по умолчанию будет возвращён традиционный графический стек на основе X.Org Server, а сеанс на основе Wayland предложен в качестве опции. В выпуске Ubuntu 18.10, а также в следующем LTS релизе Ubuntu 20.04, планируется вернуться на использование Wayland по умолчанию;
  • Продолжатся работа по улучшению поддержки Wayland в Enlightenment. В версии 0.22 добавлена поддержка протокола xdg-shell v6, ограничений движения указателя и протокола для относительного позиционирования указателя, а также улучшена поддержка XWayland и повышена стабильность работы под управлением Wayland;
  • В медиаплеере VLC 3.0.0 представлена начальная поддержка Wayland;
  • В дисплейном сервере Mir обеспечена поддержка работы клиентов Wayland, что позволяет организовать запуск Wayland-приложений в окружении Mir, используя Mir в качестве композитного сервера для Wayland;
  • Система вывода в механизме для запуска виртуальных машин с Linux в ChromeOS предоставляет встроенную поддержку Wayland-клиентов (virtio-wayland) с выполнением композитного сервера на стороне основного хоста и возможностью эффективного использования GPU из гостевых систем;
  • Развиваемая проектом Qt платформ для автомобильных систем Qt Automotive Suite включает Qt Wayland Compositor, многопоточную систему отрисовки для встраиваемых устройств, использующую протокол Wayland;
  • Fedora 27 стал третим выпуском, в котором по умолчанию предложен сеанс GNOME на базе Wayland;


  • Для FreeBSD подготовлены порты, необходимые для сборки KDE с поддержкой Wayland;
  • Использующие Wayland пользовательские окружения papyros-shell и Hawaii объединились в новый проект Liri. Liri базируется на Qt 5 (QML) и продвигает оформление в стиле Material Design. Рабочий стол развивается командой дистрибутива LiriOS, примечательного использованием вместо традиционных пакетов готовых системных срезов на основе технологии OSTree, при которой системный образ атомарно обновляется из Git-подобного хранилища, позволяющего применять методы версионного контроля к компонентам дистрибутива;
  • В ОС DragonFly BSD развивается порт с Wayland и Weston, имеется поддержка XWayland;
  • Wayland задействован по умолчанию в мобильных платформах Plasma Mobile, Sailfish 2 и Tizen.
  • В панели Cairo-Dock предусмотрена возможность работы в окружении композитного сервера Weston.
  • В рамках проекта AsteroidOS развивается новая открытая ОС для умных часов, использующая Qt5 и Wayland;
  • Работа по добавлению поддержки Wayland ведётся для рабочих столов LXQt и MATE.
  • Развивается десктоп-окружение Orbital, работающее только на базе технологий Wayland;
  • Для тестирования работы GNOME, KDE и Enlightenment, Hawai и Orbital поверх Wayland выпускается специальный Live-дистрибутив Rebecca Black Linux.




0_1464763723.png0_1464763699.png

Напомним, что Wayland представляет собой протокол взаимодействия композитного сервера и работающих с ним приложений. Клиенты самостоятельно выполняют отрисовку своих окон в отдельном буфере, передавая информацию об обновлениях композитному серверу, который комбинирует содержимое буферов отдельных приложений для формирования итогового вывода с учётом возможных нюансов, таких как перекрытие окон и прозрачность. Иными словами, композитный сервер не предоставляет API для отрисовки отдельных элементов, а оперирует только с уже сформированными окнами, что позволяет избавиться от двойной буферизации при использовании высокоуровневых библиотек, таких как GTK+ и Qt, берущих на себя работу по компоновке содержимого окон. В настоящее время поддержка прямой работы c Wayland уже реализована для библиотек GTK3+, Qt 5, 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.

© OpenNet