Новая стабильная ветка Wayland и Weston 1.2
После трёх месяцев разработки представлен третий стабильный релиз протокола, механизма межпроцессного взаимодействия и библиотек Wayland 1.2, а также развиваемого параллельно композитного сервера Weston 1.2. Ветка 1.2 обратно совместима на уровне API и ABI с выпусками 1.x, но дополнительно содержит порцию улучшений, расширяющих возможности протокола и композитного сервера Weston. Новый выпуск ознаменовал стабилизацию API wayland-server для разработки компонентов композитного сервера, который ранее носил экспериментальный характер. В настоящее время в самом разгаре находится работа по обеспечению поддержки функционирования поверх Wayland таких известных десктоп-окружений, как KDE, GNOME и Enlightenment. Уже следующие стабильные выпуски указанных систем будут содержать экспериментальную поддержку Wayland. В дальнейших выпусках проект GNOME планирует перейти на Wayland в качестве первичной платформы, а KDE обеспечить работу поверх Wayland не хуже, чем X.Org. Кроме того, развивается новое десктоп-окружение Hawaii, изначально позиционируемое как работающие только на базе технологий Wayland.
Основные новшества Wayland/Weston 1.2:
Стабилизация API библиотеки wayland-server.so, что гарантирует неизменность программных интерфейсов в будущих выпусках. Если ранее обратная совместимость гарантировалась только для протокола и библиотек Wayland, но каждый новый значительный выпуск Wayland не ручался за работу созданных ранее реализаций композитных серверов, то теперь требования об обеспечении обратной совместимости распространяются и на интерфейсы композитных серверов. До сих пор для Wayland параллельно развивался только эталонный композитный сервер Weston, а все другие реализации ограничивались начальными экспериментами, поэтому проблем с совместимостью не возникало; В Wayland включены средства управления цветном и представлены две готовые реализации цветовых схем для Weston: простой плагин с поддержкой CMS, читающий цветовой профиль из weston.ini, и более функциональный плагин для интеграции с системным сервисом colord, используемым для привязки к устройствам ввода и вывода цветовых профилей, обеспечивающих корректную цветопередачу; В Weston добавлена поддержка фреймворка Wayland Input Method Framework (Intelligent Input Bus) для организации ввода на основе IBus. Данная подсистема отмечена как готовая для интеграции в основной API Wayland, но требующая испытания в реальных проектах, например, в процессе перехода GNOME на Wayland возможно всплывут некоторые тонкости, требующие правки. На базе фреймворка также создан пример экранной клавиатуры для Weston, а также добавлена поддержка методов ввода Wayland в Maalit. Поддержка протокола для манипулирования субповерхностями (subsurface) и группами поверхностей (surface group) внутри одного окна приложения. Например, для видеоплеера можно выделить области с контентом и управляющими элементами и обеспечить их компоновку на уровне композитного менеджера, а не приложения. Поддержка масштабирования вывода (HiDPI), нацеленная на обеспечение корректного вывода на экранах сверхвысокого разрешения; Специализированный бэкенд Rpi-backend и модуль рендиренга Rpi-renderer для Raspberry Pi, позволяющий в полной мере задействовать все возможности акселерированного вывода графики на данной платформе; Поддержка режима Multi-seat в композитном сервере Weston, что позволяет организовать одновременную работу нескольких пользователей за одним ПК, каждый из которых использует отдельную мышь и клавиатуру. В частности, предоставлена возможность одновременного использования на одном экране нескольких указателей и устройств ввода, что позволяет нескольким людям одновременно открыть несколько приложений и каждому пользователю работать в запущенной им программе или организовать совместную работу в одном приложении. При этом у каждого пользователя не только отдельный указатель курсора, но и раздельное управление фокусом окон; Проведена работа по улучшению поддержки использования libwayland-client в многопоточных приложениях. Ранее использовалась модель многопоточной обработки, предусматривающая использование одной главной нити для получения событий и их распределения по нитям-обработчикам. Подобное ограничение конфликтовала с методами многопоточной обработки в некоторых фреймворках, таких как EGL. Теперь это ограничение снято; В состав включен новый пример клиентского ПО, иллюстрирующий методы создания приложения, своими силами выполняющего композитинг («application compositor»). В качестве примера необходимости совместного использования буферов несколькими клиентами называются современные движки web-браузеров, в которых интерфейс и контент обслуживаются разными процессами — один процесс может сформировать вывод, а второй воспользуется этим выводом как текстурой. Таким образом один из клиентов выполняет композитинг на основе вывода другого клиента; Опциональная поддержка библиотеки libxkbcommon, легковесные функции обработки ввода в которой могут быть востребованы на устройствах без традиционной клавиатуры, таких как автомобильные панели управления или пульты управления телеприставками. Wayland представляет собой протокол взаимодействия композитного сервера и работающих с ним приложений. Клиенты самостоятельно выполняют отрисовку своих окон в отдельном буфере, передавая информацию об обновлениях композитному серверу, который комбинирует содержимое буферов отдельных приложений для формирования итогового вывода с учётом возможных нюансов, таких как перекрытие окон и прозрачность. Иными словами, композитный сервер не предоставляет API для отрисовки отдельных элементов, а оперирует только с уже сформированными окнами, что позволяет избавиться от двойной буферизации при использовании высокоуровневых библиотек, таких как GTK+ и Qt, берущих на себя работу по компоновке содержимого окон.
В настоящее время поддержка прямой работы c Wayland уже реализована для библиотек GTK3+, Qt 5, SDL, Clutter и EFL (Enlightenment Foundation Library). К сожалению, из-за наличия прямых обращений к библиотекам X11 не все приложения на базе вышеотмеченных тулкитов смогут без переработки кода работать поверх Wayland. Например, из 22 протестированных GTK-приложений, доступных по умолчанию в меню Ubuntu, под управлением Wayland заработали только 9, так как оставшиеся 13 использовали функции Xlib. Тем не менее, наблюдается значительный прогресс в проведении чистки приложений от прямого обращения к Xlib.
В рамках проекта 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, который ожидается в сентябре 2013 года, что значительно упростит решение задач по интеграции X11-приложений в окружения на базе Wayland. Поддержку запуска X11-приложений планируется встроить непосредственно в композитный сервер Weston, который при попытке выполнения X11-приложения будет инициировать запуск X-сервера и связанных с ним компонентов XWayland. При таком подходе процесс запуска X11-приложений будет бесшовным и неотличимым для пользователя от запуска приложений, работающих напрямую с Wayland.
Для решения вопроса с организацией работы с приложениями, запущенными на другой машине, для Wayland подготовлен прототип системы удалённого рендеринга, выполненный в виде дополнения к композитному серверу Weston. Дополнение выступает в роли надстройки для обеспечения сетевого взаимодействия при организации рендеринга и передачи событий от устройств ввода. Взаимодействие происходит на уровне двух композитных менеджеров, т.е. композитный сервер Weston на локальной системе, на которой работает пользователь, может отображать отдельные окна из композитного сервера Weston, запущенного на удалённой системе. Трансляция вывода реализована на основе передачи изменения содержимого отдельных окон, обслуживаемых композитным сервером. По сети передаются только изменившиеся элементы окон, изменения вычисляются на уровне битмапов и передаются с использованием протокола похожего на VNC. Для организации удалённой работы также подготовлены бэкенды для использования протоколов RDP и SPICE.
© OpenNet