Увидел свет Wayland 1.3
После трёх месяцев разработки представлен третий стабильный релиз протокола, механизма межпроцессного взаимодействия и библиотек Wayland 1.3, а также развиваемого параллельно композитного сервера Weston 1.3. Ветка 1.3 обратно совместима на уровне API и ABI с выпусками 1.x, но дополнительно содержит порцию улучшений, расширяющих возможности протокола и композитного сервера Weston. Основная масса изменений в новом выпуске связана с работой Weston. Для протокола Wayland отмечается снижение числа предлагаемых изменений, протокол становится зрелым и уже предоставляет необходимый для обычного применения уровень стабильности и функциональности. Основные новшества Weston 1.3:
Поддержка аппаратно ускоренного захвата экрана, позволяющего записать происходящее на экране в форме видеопотока h.264. Кодирование потока h.264 осуществляется на лету с использованием библиотеки libva и задействованием возможностей современных чипов Intel. Захват активируется последовательностью клавиш Shift-Mod-SPACE Q. В будущем планируется переход от libva к gstreamer, что позволит расширить спектр поддерживаемых кодеков и оборудования. Также планируется обеспечить поддержку не только записи потока на диск, но и реализовать его трансляцию по сети; Поддержка использования библиотеки libhybris совместно с бэкендом fbdev. Libhybris предоставляет прослойку для обеспечения работы в системах на базе Glibc специфичных для платформы Android драйверов устройств, работающих в пространстве пользователя и завязанных на использовании системной библиотеки Bionic. Таким образом, теперь стал возможным запуск Weston с EGL/GLES2-драйверами от платформы Android; Поддержка мультиресурсных событий ввода, снимающих ограничение по доставке событий только для первого ресурса указателя, клавиатуры и сенсорного экрана. Отныне появилась возможность получить несколько ресурсов ввода (wl_pointer, wl_keyboard, wl_touch) и организовать получение событий всеми из них. Таким образом разные подсистемы теперь могут создавать отдельные ресурсы для получения событий, что, в частности, позволило решить проблемы с интеграцией с WebKitGTK+ и Clutter-GTK+; Улучшение поддержки ввода с сенсорных устройств на стороне клиентов и устранение серьёзных проблем в работе evdev; В компоненте XWM (X Window Manager), используемом для организации вывода X-клиентов на рабочий стол под управлением Weston, улучшена поддержка полноэкранного режима, добавлена возможность использования интерфейса drag-and-drop для передачи объектов из X в wayland; В weston-launch представлено два раздельных режима запуска Weston (выполнение из виртуального терминала и запуск из init-скрипта), добавлен код для настройки и восстановления tty, налажена обработка переключения между виртуальными терминалами и обеспечена установка/отсоединение первичного терминала; Добавлен новый udev-атрибут WL_OUTPUT для сопоставления сенсорных устройств ввода с экраном для вывода; В скрипт configure добавлены опции:»--with-cairo=image/gl/glesv2» для выбора механизма вывода для библиотеки Сairo;»--enable-demo-clients» для установки всех демонстрационных клиентов (без указания опции устанавливаются только weston-terminal и weston-info); В weston.ini добавлена поддержка переменных constant_accel_factor, min_accel_factor и max_accel_factor в секции [touchpad] для управления реакцией тачпада, а также переменной path в секции [xwayland] для задания альтернативного файлового пути к серверу xwayland; Добавлена опция командной строки »--shell=shell.so» для выбора альтернативного модуля графической оболочки. Основные новшества Wayland 1.3:
Поддержка биндингов для написания клиентских и серверных дополнений/обработчиков для libwayland с использованием высокоуровневых языков программирования; Поддержка дополнительных пиксельных форматов для wl_shm. В частности, обеспечена возможность создания shm-поверхностей на базе RGB565; Проведена работа по расширению и чистке документации; Поддержка мультиресурсов. Возможность инициирования клиентом запроса на прекращение получения событий, связанных с ресурсами wl_pointer, wl_keyboard и wl_touch; Установка файла wayland.xml с определением элементов протокола Wayland, который можно использовать для динамического разбора возможностей используемой реализации протокола. Wayland представляет собой протокол взаимодействия композитного сервера и работающих с ним приложений. Клиенты самостоятельно выполняют отрисовку своих окон в отдельном буфере, передавая информацию об обновлениях композитному серверу, который комбинирует содержимое буферов отдельных приложений для формирования итогового вывода с учётом возможных нюансов, таких как перекрытие окон и прозрачность. Иными словами, композитный сервер не предоставляет API для отрисовки отдельных элементов, а оперирует только с уже сформированными окнами, что позволяет избавиться от двойной буферизации при использовании высокоуровневых библиотек, таких как GTK+ и Qt, берущих на себя работу по компоновке содержимого окон. В настоящее время поддержка прямой работы c Wayland уже реализована для библиотек GTK3+, Qt 5, SDL, Clutter и EFL (Enlightenment Foundation Library).
В рамках проекта Weston развивается одна из реализаций композитного сервера. В роли композитного сервера также может выступать любой другой продукт, поддерживающий протокол Wayland. Например, в настоящее время ведётся работа по обеспечению поддержки Wayland в таких существующих композитных менеджерах для X11, как KWin и Compiz. В текущем виде Weston уже вышел за рамки набора примеров для тестирования протокола Wayland, но продолжает позиционироваться как эталонная система, которая может обрастать функциональностью через плагины и дополнения. При этом Weston не будет развиваться как обособленное десктоп-окружение, а будет представлять собой ядро и плагинный API для создания таких окружений, по аналогии с тем, как сервер X.Org лежит в основе современных графических систем. Пользовательские оболочки и расширенные функций управления окнами предлагается реализовывать в форме внешних бэкендов к Wayland.
Взаимодействие с аппаратным обеспечением в Wayland/Weston, например, проведение инициализации, переключение видеорежимов (drm modesetting) и управление памятью (GEM для i915 и TTM для radeon и nouveau) графических карт, может производиться напрямую через модуль, работающий на уровне ядра, что позволяет обойтись без привилегий суперпользователя. Композитный сервер Weston может работать не только с использованием DRM-модуля ядра Linux, но и поверх X11 или поверх другого композитного сервера Wayland. Кроме того, развиваются проекты по обеспечению работы поверх графического стека платформы Android.
Для обеспечения выполнения обычных X11-приложений в окружении на базе Wayland и композитного сервера Weston развивается проект XWayland, позволяющий организовать запуск полноценного X.Org-сервера в роли клиента Wayland. Примечательно, что разработчики проекта X.Org планируют включить компонент XWayland в состав X.Org Server начиная с выпуска 1.15, который ожидается этой осенью, что значительно упростит решение задач по интеграции X11-приложений в окружения на базе Wayland. Поддержку запуска X11-приложений планируется встроить непосредственно в композитный сервер Weston, который при попытке выполнения X11-приложения будет инициировать запуск X-сервера и связанных с ним компонентов XWayland. При таком подходе процесс запуска X11-приложений будет бесшовным и неотличимым для пользователя от запуска приложений, работающих напрямую с Wayland.
Для решения вопроса с организацией работы с приложениями, запущенными на другой машине, для Wayland подготовлен прототип системы удалённого рендеринга, выполненный в виде дополнения к композитному серверу Weston. Дополнение выступает в роли надстройки для обеспечения сетевого взаимодействия при организации рендеринга и передачи событий от устройств ввода. Взаимодействие происходит на уровне двух композитных менеджеров, т.е. композитный сервер Weston на локальной системе, на которой работает пользователь, может отображать отдельные окна из композитного сервера Weston, запущенного на удалённой системе. Трансляция вывода реализована на основе передачи изменения содержимого отдельных окон, обслуживаемых композитным сервером. По сети передаются только изменившиеся элементы окон, изменения вычисляются на уровне битмапов и передаются с использованием протокола похожего на VNC. Для организации удалённой работы также подготовлены бэкенды для использования протоколов RDP и SPICE.
За прошедшие несколько месяцев экспериментальная поддержка функционирования поверх Wayland была представлена в выпусках KDE 4.11 и GNOME 3.10, а, а также ожидается в следующем стабильном выпуске Enlightenment. В дальнейших выпусках проект GNOME планирует перейти на Wayland в качестве первичной платформы, а KDE обеспечить работу поверх Wayland не хуже, чем X.Org. Кроме того, развивается новое десктоп-окружение Hawaii, изначально позиционируемое как работающие только на базе технологий Wayland. Готовые для использования компоненты Wayland будут поставляться в штатных репозиториях Fedora Linux 20, в том числе будет предоставлена возможность запуска окружения GNOME 3.10 с выполнением GNOME Shell в роли обособленного композитного сервера Wayland, не требующего использования Weston.
© OpenNet