24.09.2020

Доступен Wayland 1.18


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

Основные улучшения в Wayland 1.18:

  • Добавлена поддержка сборочной системы Meson. Возможность сборки при помощи autotools пока сохранена, но будут удалена в одном из будущих выпусков;
  • Добавлен API для разделения прокси-объектов на основе тегов, дающий возможность проиложениям и тулкитам совместно использовать одно Wayland-соединение;
  • Обеспечено отслеживание таймеров сервера wayland в пространстве пользователя, что позволило исключить создание слишком большого числа файловых дескрипторов;
  • Добавлена функция wl_global_remove(), отправляющая событие удаления глобального объекта без его очистки. Новая функция позволяет исключить возникновение состояния гонки (race conditions) при удалении глобальных объектов. Подобные состояния гонки могли возникать так как клиенты не имели возможности подтвердить получение события удаления. Функция wl_global_remove() даёт возможность вначале отправить событие удаления и лишь после определённой задержки очистить объект.

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

  • В Fedora обеспечена поставка по умолчанию сборки Firefox на базе Wayland. Решены проблемы с использованием проприетарных бинарных драйверов NVIDIA с Wayland. Реализована экспериментальная возможность автоматического запуска XWayland при попытке выполнения приложения на базе протокола X11. В Wayland-окружении добавлена возможность запуска X11-приложений с правами root под управлением XWayland. В SDL для Wayland решены проблемы с масштабированием при запуске старых игр, работающих в низких разрешениях экрана. Библиотека Qt для использования в окружении GNOME собрана по умолчанию с поддержкой Wayland;
  • В Red Hat Enterprise Linux 8 качестве рабочего стола предложен GNOME с применением по умолчанию дисплейного сервера на базе Wayland;
  • В предварительном выпуске GTK 4 в GDK продолжено внедрение API, разработанных с оглядкой на использование протокола Wayland. В GDK-бэкенд для Wayland добавлена поддержка portal-интерфейса для доступа к настройкам GtkSettings, а для работы с методами ввода предложена поддержка расширения протокола text-input-unstable-v3;
  • Запущен проект по избавлению GNOME от ошибок и недоработок, проявляющихся при работе поверх Wayland;
  • В XWayland добавлен GLX-обработчик на базе программного интерфейса EGL, который позволит исключить применение программного растеризатора swrast;
  • В числе целей разработки KDE на ближайшие два года упомянут перевод KDE на Wayland. Окружение KDE, работающее поверх Wayland, планируется сделать первичным, а окружение на базе X11 перевести в разряд опций и необязательных зависимостей. За отчётный период в KDE реализована поддержка дробного масштабирования при работе поверх Wayland. Cеанс KDE на базе Wayland адаптирован к работе с проприетарными драйверами NVIDIA. Появилась возможность перетаскивания в режиме drag&drop окон приложений, использующих XWayland и Wayland. В KWin обеспечена корректная прокрутка колесом мыши в окружении на базе Wayland;
  • В GNOME добавлена возможность автоматизировать запуск XWayland при попытке выполнения приложения на базе протокола X11 (ранее XWayland должен был выполняться постоянно);
  • Стартовала работа по портированию приложений пользовательского окружения MATE для Wayland. В MATE 1.24 для Wayland адаптирован просмотрщик изображений Eye of MATE и улучшена поддержка Wayland в панели MATE;
  • В Qt Wayland Compositor обеспечена поддержка протоколов linux-dmabuf-unstable-v1 и wp_viewporter. В компонентах платформы Qt для Wayland добавлена поддержка протокола fullscreen-shell-unstable-v1;
  • Опубликован Waypipe — прокси для протокола Wayland, позволяющий запускать приложения на другом хосте;
  • В пользовательском окружении Enlightenment 0.23 значительно улучшена поддержка работы под управлением Wayland;
  • Для Firefox реализован новый бэкенд для Wayland, использующий механизм DMABUF для отрисовки в текстуры;
  • В Ubuntu в окружении на базе Wayland обеспечена возможность запуска X11-приложений с правами root под управлением Xwayland;
  • Подготовлен набор патчей Wine-wayland и драйвер winewayland.drv, которые позволяют использовать Wine в окружениях на базе протокола Wayland, без применения XWayland и компонентов, связанных с X11;
  • Продолжается развитие Mir как композитного сервера для Wayland. В средствах для обеспечения запуска Wayland-приложений в окружении Mir увеличено число поддерживаемых расширений протокола Wayland. Проведена оптимизация производительности кода, связанного с Wayland, и добавлена новая графическая платформа «wayland», позволяющая запускать Mir в качестве клиента под управлением другого композитного сервера Wayland. Предложена экспериментальная поддержка динамического запуска X11-приложений в окружении на базе Wayland.
  • Сформированы новые выпуски пользовательского окружения Sway, использующего Wayland;

  • Дистрибутив Lubuntu наметил переход на Wayland на 2020 год. Поддержку Wayland планируется реализовать через портирование оконного менеджера Openbox на использование дисплейного сервера Mir, применяемого в качестве композитного сервера для Wayland;
  • Развивается Cage, композитный сервер на базе Wayland для запуска отдельных приложений в режиме киоска;
  • Продолжается работа над выпуском пользовательского окружения LXQt 1.0.0, главной задачей при разработке которого является доведение до полной готовности возможности работы поверх Wayland;
  • Система вывода в механизме для запуска виртуальных машин с Linux в ChromeOS предоставляет встроенную поддержку Wayland-клиентов (virtio-wayland) с выполнением композитного сервера на стороне основного хоста и возможностью эффективного использования GPU из гостевых систем;
  • Для FreeBSD развиваются порты, необходимые для сборки KDE с поддержкой Wayland;
  • В ОС DragonFly BSD развивается порт с Wayland и Weston, имеется поддержка XWayland;
  • Использующие Wayland пользовательские окружения papyros-shell и Hawaii объединились в новый проект Liri. Liri базируется на Qt 5 (QML) и продвигает оформление в стиле Material Design;
  • Wayland задействован по умолчанию в мобильных платформах Plasma Mobile, Sailfish 2, webOS Open Source Edition, Tizen и AsteroidOS;
  • В мультимедийном центре Kodi представлена поддержка Wayland;
  • В панелях Latte Dock и Cairo-Dock реализована поддержка Wayland;
  • Для тестирования работы GNOME, KDE и Enlightenment, Hawai и Orbital поверх Wayland выпускается специальный Live-дистрибутив Rebecca Black Linux.

Напомним, что 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.

Источник: https://www.opennet.ru/opennews/art.shtml?num=52354

Добавить комментарий