Релиз Wayland 1.7
Увидел свет стабильный релиз протокола, механизма межпроцессного взаимодействия и библиотек Wayland 1.7, а также развиваемого параллельно композитного сервера Weston 1.7. Ветка 1.7 обратно совместима на уровне API и ABI с выпусками 1.x, но дополнительно содержит порцию улучшений, расширяющих возможности композитного сервера Weston. Следующий выпуск 1.8 запланирован на 29 мая. Работа над протоколом Wayland главным образом уже завершена и выпуск Wayland 1.7 в основном сосредоточен на оттачивании тестового комптекта, исправлении ошибок в коде и подготовке документации. Документация разделена на три части: вручную написанное руководство разработчика и автоматически сгенерированная из спецификаций и примечаний в коде эталонная документация по протоколу и коду библиотеки. Из улучшений отмечается увеличение до 128 размера очереди ожидающих обработки соединений и решение проблем с работой на платформе FreeBSD.
Основной прогресс в разработке наблюдается в композитном сервере Weston. Рассматривая вопрос постепенного превращения Weston из эталонной реализации в полноценное десктоп-окружение разработчики пришли к консенсусу, что задачей Weston не является подготовка окружения, пригодного для конечного пользователя. Вместо этого, главной целью Weston является содействие появлению полноценной поддержки протокола Wayland в Enlightenments, GNOME, KDE и других пользовательских окружениях, а также предоставление высококачественной кодовой базы и рабочих примеров для использования Wayland во встраиваемых решениях, таких как платформы для автомобильных информационно-развлекательных систем, смартфонов, телевизоров и прочих потребительских устройств.
Основные новшества Weston 1.7:
В число обязательных зависимостей включена библиотека libinput, которая также используется для работы с устройствами ввода в таких проектах, как Clutter и GNOME. Поддержка ранее развиваемой в Weston собственной реализации системы ввода прекращена в пользу libinput. Для работы требуется libinput 0.8 или более новые выпуски, так как в них решены проблемы с фокусом ввода, отображением курсора и обработкой событий от колеса мыши; Поддержка расширения протокола «Wayland presentation», предоставляющего средства для получения информации о фактическом отображении кадров и прикрепления своего обработчика к стадиям вывода очередного кадра. При установке обработчика поддерживаются следующие флаги: VSYNC, HW_CLOCK, HW_COMPLETION и ZERO_COPY. Использование расширения в видеопроигрывателях позволяет организовать более точную синхронизацию звука и видео, предотвращая забегание или запаздывание звука; Возможность определения ролей для поверхностей («surface roles»). Если поверхность представляет собой отображаемую на экране прямоугольную область, которую можно рассматривать как воплощение идеи клиентского окна, то роль определяет назначение данной области — позволяет привязать указатель курсора, пиктограмму для перетаскивания окна или подповерхность (например, для отображения видео в окне браузера). Роли могут задаваться клиентом только один раз и не могут изменяться; Реализация альтернативного варианта протокола пользовательской оболочки (shell-протокол) для автомобильных информационно-развлекательных систем (IVI Shell). Shell-протокол определяет общие методы взаимодействия человека и компьютера. Например, xdg-shell определяет общие для всех окружений рабочих столов операции с окнами, пиктограммами, меню и указателями. В свою очередь, ivi-shell определяет компоненты интерфейса для автомобильных информационных и развлекательных систем. Особенностью ivi-shell является прикрепление к каждой поверхности глобального уникального идентификатора, позволяющего сопоставить поверхность с определённым приложением. Запускаемые в ivi-shell приложения, как правило, являются узкоспециализированными программами, например, используются для отображения спидометра, вывода карты и показа изображения с парковочной камеры. Приложения могут быть реализованы по разному и рассчитаны на работу с модулями и компонентами от разных поставщиков, но использование единого протокола ivi-shell позволяет скомпоновать целостный графический интерфейс для их отображения и управления ими; Проведена подготовительная работа по модернизации тестовой инфраструктуры, которая позволит композитному серверу возвращать определённые пользователем коды возврата и участвовать в передаче кодов возврата от других компонентов. Композитный сервер может функционировать без экрана c формированием вывода в буфер при помощи Pixman, что может быть использовано для добавления различных автоматизированных проверок корректности отрисовки. События перерисовки могут сохраняться в лог, на основе которого могут строиться различные наглядные аналитические графики; Для компонента XWayland (Device-Dependent X), который позволяет обеспечить работу немодифицированых приложений X11 в окружении на базе композитного сервера Weston, добавлена поддержка кнопки раскрытия окна на весь экран; Для запуска Weston подготовлен специальный сеанс в дисплейном менеджере GDM; Пример текстового редактора расширен поддержкой режима multi-seat, который позволяет разным людям при подключении нескольких клавиатур и мышей одновременно работать над одним текстовым документом. Возможность работы поверх Wayland развивается практически во всех современных окружениях рабочего стола. Разработчики KDE развивают kwin_wayland, вариант оконного менеджера KWin для Wayland, а также библиотеку KWayland, в которую вынесен весь код, специфичный для поддержки Wayland. В GNOME поддержка Wayland доведена до состояния, пригодного для ежедневного использования. Решены почти все проблемы с запуском типовых приложений GNOME при работе поверх Wayland. В дистрибутиве Fedora 21 добавлен сеанс для запуска GNOME с использованием Wayland, обеспечивающий возможность запуска обычных X11-приложений через XWayland. В Fedora 22 на Wayland будет переведена работа экрана входа в систему, а в Fedora 23 ожидается переход по умолчанию на окружение GNOME, работающее поверх Wayland.
Возможность работы в окружении композитного сервера Weston недавно была добавлена в панель Cairo-Dock. Wayland уже используется в мобильных платформах Sailfish и Tizen 3, а также опционально поддерживается в Enlightenment E19. О планах обеспечения поддержки Wayland заявили разработчики рабочих столов LXQt и MATE. Кроме существующих систем активно развиваются новые десктоп-окружения, работающее только на базе технологий Wayland — Quantum Shell, Hawaii и Orbital. Для тестирования работы 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) графических карт, может производиться напрямую через модуль, работающий на уровне ядра, что позволяет обойтись без привилегий суперпользователя. Отмечается значительный прогресс в направлении поддержки Wayland в проприетарных драйверах NVIDIA — в ветку 346.x уже включена поддержка всех необходимых расширений EGL, но остаётся реализовать KMS API и KMS ioctl. Композитный сервер Weston может работать не только с использованием DRM-модуля ядра Linux, но и поверх X11 или поверх другого композитного сервера Wayland. Кроме того, развиваются проекты по обеспечению работы поверх графического стека платформы Android.
В рамках проекта Weston развивается одна из реализаций композитного сервера. В роли композитного сервера также может выступать любой другой продукт, поддерживающий протокол Wayland. Например, в настоящее время ведётся работа по обеспечению поддержки Wayland в KWin. В текущем виде Weston уже вышел за рамки набора примеров для тестирования протокола Wayland и может обрастать функциональностью через плагины и дополнения. Пользовательские оболочки и расширенные функций управления окнами предлагается реализовывать в форме внешних бэкендов к Wayland.
Для обеспечения выполнения обычных X11-приложений в окружении на базе Wayland используется DDX-компонент XWayland (Device-Dependent X), похожий по организации работы на Xwin и Xquartz для платформ Win32 и OS X. Поддержку запуска X11-приложений планируется встроить непосредственно в композитный сервер Weston, который при попытке выполнения X11-приложения будет инициировать запуск X-сервера и связанных с ним компонентов XWayland. При таком подходе процесс запуска X11-приложений будет бесшовным и неотличимым для пользователя от запуска приложений, работающих напрямую с Wayland.
© OpenNet