Увидел свет Wayland 1.8
Представлен стабильный релиз протокола, механизма межпроцессного взаимодействия и библиотек Wayland 1.8, а также развиваемого параллельно композитного сервера Weston 1.8. Ветка 1.8 обратно совместима на уровне API и ABI с выпусками 1.x, но дополнительно содержит порцию улучшений, расширяющих возможности композитного сервера Weston. Следующий выпуск 1.9 запланирован на конец сентября. Работа над протоколом Wayland главным образом уже завершена и выпуск Wayland 1.8 в основном сосредоточен на реструктуризации кодовой базы и исправлении ошибок. В новой версии произведено разделение заголовочных файлов для клиента и сервера на базовые компоненты и генерируемые протоколы. К базовым заголовочным файлам отнесены wayland-client-core.h и wayland-server-core.h. В scanner добавлена опция »--include-core-only», при указании которой генерируемый код, используется только базовые заголовки, что удобно при разработке биндингов и для пользователей libwayland, генерирующих собственный код протоколов на основе новых файлов wayland.xml.
В композитном сервере Weston представлена достаточно большая порция улучшений. Основной задачей разработки Weston является не подготовка окружения, пригодного для конечного пользователя, а содействие появлению полноценной поддержки протокола Wayland в Enlightenments, GNOME, KDE и других пользовательских окружениях, а также предоставление высококачественной кодовой базы и рабочих примеров для использования Wayland во встраиваемых решениях, таких как платформы для автомобильных информационно-развлекательных систем, смартфонов, телевизоров и прочих потребительских устройств.
Основные новшества Weston 1.8:
В состав приняты подготовленные компанией Collabora изменения, касающиеся модернизации EGL и создания тестового фреймворка. В частности, улучшена реализация EGL в gl-renderer и добавлен тестовый режим рендеринга без экрана («headless rendering»), который позволяет синтетически запустить Weston в идеальных условиях, исключив влияние системы вывода. В headless-режиме отрисовка осуществляется в буфер с использованием системы рендеринга pixman, что позволяет получить виртуальное изображение экрана в памяти, которое можно передать клиенту через протокол создания скриншотов. После этого можно сравнить полученное эталонное изображение с фактически выдаваемым на экран. Началось тестирование оболочки для информационно-развлекательных систем (IVI), добавлена экранная раскладка для IVI. Поддержка перерисовки по расписанию. Возможность использования именованных каналов вывода. API для захвата содержимого поверхностей (surface-shooting API). В системе отрисовки pixman добавлена поддержка вырезания по источнику и выбора шаблона вырезания. В компоненты редактирования текста добавлена поддержка операций помещения и извлечения данных из буфера обмена. Добавлена возможность указания альтернативного файла конфигурации (weston --config=my-weston.ini). Заданный файл конфигурации будет охватывать все приложения, запущенные в данном экземпляре Weston. Возможность работы поверх Wayland развивается практически во всех современных окружениях рабочего стола:
Разработчики KDE развивают kwin_wayland, вариант оконного менеджера KWin для Wayland, а также библиотеку KWayland, в которую вынесен весь код, специфичный для поддержки Wayland. В настоящее время работа KDE Plasma с kwin_wayland уже достаточно стабильна для использования данной связку для решения повседневных задач разработчика. Напрямую протокол Wayland пока используется только в Xwayland и KWin, а приложения продолжают использовать X11, но через прослойку Xwayland, запущенную поверх kwin_wayland. Kwin_wayland не обращается к серверам X11 или Wayland/Weston для отрисовки, а является самодостаточным сервером Wayland и выполняет все операции с графикой своими силами через прямое обращение к бэкенду DRM (Direct Rendering Manager). Через DRM также осуществляется управление видеорежимами и видеопамятью. При этом для взаимодействия с оборудованием kwin_wayland обходится без привилегий root — для открытия файла-устройства DRM с привилегиями обычного пользователя применяется logind. Для компоновки целостного изображения (композитинг) поддерживается использование OpenGL и QPainter. В GNOME поддержка Wayland доведена до состояния, пригодного для ежедневного использования, и отмечена как приближающаяся к финальной стадии. В последнем выпуске GNOME реализованы совместимые с Wayland средства для настройки ввода, добавлена поддержка определения границ указателей, с развитием libinput значительно улучшена обработка ввода. Экран входа в систему переведён на работу поверх Wayland (для систем без поддержки Wayland оставлен запасной fallback-режим, использующий X11). В Fedora 22 на Wayland переведена работа экрана входа в систему, а в Fedora 23 ожидается переход по умолчанию на окружение GNOME, работающее поверх Wayland. В Ubuntu 15.04 реализован экспериментальный сеанс рабочего стола GNOME на базе Wayland (следует установить пакет gnome-session-wayland и выбрать на экране входа «GNOME on wayland»). В панели Cairo-Dock реализована возможность работы в окружении композитного сервера Weston. Wayland опционально поддерживается в Enlightenment E19. Wayland используется в мобильных платформах Sailfish и Tizen 3. Работа по добавлению поддержки 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