Представлен второй стабильный релиз протокола, механизма межпроцессного взаимодействия и библиотек Wayland 1.1, а также развиваемого параллельно эталонного композитного сервера Weston 1.1. Новые версии вобрали в себя наработки и улучшения, реализованные за последние шесть месяцев работы над проектом. Ветка 1.1 обратно совместима на уровне API и ABI с выпусками 1.0.x, но дополнительно содержит порцию улучшений, расширяющих возможности протокола и композитного сервера Weston. Тем не менее, заявлено, что некоторые из возможностей, ранее планируемых для включения во вторую стабильную ветку, отложены до выпуска 1.2. В качестве причины называется желание не затягивать второй стабильный выпуск.
Изначально ветке 1.1 планировалось придать статус экспериментальной, но в процессе разработки было решено отказаться от схемы с чётными стабильными и нечётными экспериментальными выпусками, так как такая схема создаёт путаницу и вводит в заблуждение некоторых людей. Вместо этого применена практика использования для тестовых версий завышенных номеров, например, 1.0.90. Также объявлено о намерении в дальнейшем выпускать новый значительный релиз раз в три месяца, т.е. версию 1.2.0 можно ждать в середине лета.
После выхода осенью первого стабильного релиза начались первые попытки адаптации Wayland для реальных проектов. К разработке Wayland подключились некоторые разработчики X.Org. О намерении обеспечить возможность работы поверх Wayland объявили такие проекты, как KDE, GNOME и Enlightenment. При этом работающие поверх Wayland выпуски данных окружений планируется представить для тестирования уже в этом году. Проект GNOME планирует перейти на Wayland в качестве первичной платформы. Кроме того, развивается новое десктоп-окружение Hawaii, изначально позиционируемое как работающие только на базе технологий Wayland.
Основные новшества Wayland/Weston 1.1:
Многочисленные оптимизации производительности;
Поддержка программного рендеринга с использованием библиотеки Pixman. Ранее рендеринг мог осуществляться только с задействованием OpenGL, теперь он может работать и на системах, не имеющих поддержки аппаратной акселерации и 3D-драйверов, таких как встраиваемые платформы на базе архитектуры ARM (в частности бэкенды для Raspberry Pi и фреймбуфера базируются на Pixman);
Бэкенд fbdev, который позволяет выводить графику через фреймбуфер с участием Pixman. Обработка ввода данных производится через evdev;
Бэкенд для платформы Raspberry Pi;
Бэкенд RDP, построенный на базе FreeRDP и позволяющий организовать отрисовку вывода на удалённой системе с использованием протокола RDP. При включении бэкенда, он запускается в режиме ожидания соединения и при подключении к нему RDP-клиентов выполняет отправку данных об обновлении содержимого экрана. Допускается подключение нескольких клиентов, которые могут работать с одним экраном на котором будет использоваться несколько указателей мыши. Поддерживается передача данных об изменениях содержимого экрана, как в raw-формате с разбивкой на ячейки 64x64, так и с использованием кодека remoteFx;
Бэкенд Headless, осуществляющий рендеринг в холостом режиме (вывод не формируется и не выводится) и предназначенный для решения задач по тестированию без необходимости наличия графической системы;
Клиент для сенсорных экранов и функция калибровки;
SDK для разработки внешних модулей-дополнений;
Поддержка вывода (scanout) трансформированных буферов;
В libunwind улучшены средства сохранения дампов с информацией о причинах краха;
Обеспечена должная поддержка всплывающих поверхностей (popup surfaces);
Бэкенд KMS переведён на использование EXT_buffer_age.
Возможности, ожидаемые в следующей стабильной ветке (1.2):
Выделение из XWayland компонента XWM (X Window Manager) и его оформление в виде отдельного клиента. XWM используется для организации вывода X-клиентов на рабочий стол под управлением Weston.
Система рендеринга на удалённом компьютере. Для решения вопроса с организацией работы с приложениями, запущенными на другой машине, для Wayland подготовлен прототип системы удалённого рендеринга, выполненный в виде дополнения к композитному серверу Weston. Дополнение выступает в роли надстройки для обеспечения сетевого взаимодействия при организации рендеринга и передачи событий от устройств ввода. Взаимодействие происходит на уровне двух композитных менеджеров, т.е. композитный сервер Weston на локальной системе, на которой работает пользователь, может отображать отдельные окна из композитного сервера Weston, запущенного на удалённой системе. Трансляция вывода реализована на основе передачи изменения содержимого отдельных окон, обслуживаемых композитным сервером. По сети передаются только изменившиеся элементы окон, изменения вычисляются на уровне битмапов и передаются с использованием протокола похожего на VNC.
Проект по интеграции поддержки фреймворка IBus (Intelligent Input Bus) для организации ввода. Данная подсистема отмечена как готовая для интеграции, но решено дать дополнительное время для полировки и изменения интерфейса перед его фиксацией как части протокола Wayland. В частности, в процессе перехода GNOME на Wayland возможно всплывут некоторые тонкости, требующие правки.
Поддержка протокола для манипулирования субповерхностями (subsurface) и группами поверхностей (surface group) внутри одного окна приложения. Например, для видеоплеера можно выделить области с контентом и управляющими элементами и обеспечить их компоновку на уровне композитного менеджера, а не приложения.
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, например, разработчики проекта KDE приступили к осуществлению плана по обеспечению работы KDE и KWin поверх Wayland.
В рамках проекта Weston развивается один из прототипов реализации композитного сервера. Подчёркивается, что это лишь одна из реализаций (по аналогии с оконными менеджерами), так как в роли композитного сервера может выступать любой другой продукт, поддерживающий протокол Wayland. Например, в настоящее время ведётся работа по обеспечению поддержки Wayland в таких существующих композитных менеджерах для X11, как KWin и Compiz. Взаимодействие с аппаратным обеспечением, например, проведение инициализации, переключение видеорежимов (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.
Изначально ветке 1.1 планировалось придать статус экспериментальной, но в процессе разработки было решено отказаться от схемы с чётными стабильными и нечётными экспериментальными выпусками, так как такая схема создаёт путаницу и вводит в заблуждение некоторых людей. Вместо этого применена практика использования для тестовых версий завышенных номеров, например, 1.0.90. Также объявлено о намерении в дальнейшем выпускать новый значительный релиз раз в три месяца, т.е. версию 1.2.0 можно ждать в середине лета.
После выхода осенью первого стабильного релиза начались первые попытки адаптации Wayland для реальных проектов. К разработке Wayland подключились некоторые разработчики X.Org. О намерении обеспечить возможность работы поверх Wayland объявили такие проекты, как KDE, GNOME и Enlightenment. При этом работающие поверх Wayland выпуски данных окружений планируется представить для тестирования уже в этом году. Проект GNOME планирует перейти на Wayland в качестве первичной платформы. Кроме того, развивается новое десктоп-окружение Hawaii, изначально позиционируемое как работающие только на базе технологий Wayland.
Основные новшества Wayland/Weston 1.1:
Многочисленные оптимизации производительности;
Поддержка программного рендеринга с использованием библиотеки Pixman. Ранее рендеринг мог осуществляться только с задействованием OpenGL, теперь он может работать и на системах, не имеющих поддержки аппаратной акселерации и 3D-драйверов, таких как встраиваемые платформы на базе архитектуры ARM (в частности бэкенды для Raspberry Pi и фреймбуфера базируются на Pixman);
Бэкенд fbdev, который позволяет выводить графику через фреймбуфер с участием Pixman. Обработка ввода данных производится через evdev;
Бэкенд для платформы Raspberry Pi;
Бэкенд RDP, построенный на базе FreeRDP и позволяющий организовать отрисовку вывода на удалённой системе с использованием протокола RDP. При включении бэкенда, он запускается в режиме ожидания соединения и при подключении к нему RDP-клиентов выполняет отправку данных об обновлении содержимого экрана. Допускается подключение нескольких клиентов, которые могут работать с одним экраном на котором будет использоваться несколько указателей мыши. Поддерживается передача данных об изменениях содержимого экрана, как в raw-формате с разбивкой на ячейки 64x64, так и с использованием кодека remoteFx;
Бэкенд Headless, осуществляющий рендеринг в холостом режиме (вывод не формируется и не выводится) и предназначенный для решения задач по тестированию без необходимости наличия графической системы;
Клиент для сенсорных экранов и функция калибровки;
SDK для разработки внешних модулей-дополнений;
Поддержка вывода (scanout) трансформированных буферов;
В libunwind улучшены средства сохранения дампов с информацией о причинах краха;
Обеспечена должная поддержка всплывающих поверхностей (popup surfaces);
Бэкенд KMS переведён на использование EXT_buffer_age.
Возможности, ожидаемые в следующей стабильной ветке (1.2):
Выделение из XWayland компонента XWM (X Window Manager) и его оформление в виде отдельного клиента. XWM используется для организации вывода X-клиентов на рабочий стол под управлением Weston.
Система рендеринга на удалённом компьютере. Для решения вопроса с организацией работы с приложениями, запущенными на другой машине, для Wayland подготовлен прототип системы удалённого рендеринга, выполненный в виде дополнения к композитному серверу Weston. Дополнение выступает в роли надстройки для обеспечения сетевого взаимодействия при организации рендеринга и передачи событий от устройств ввода. Взаимодействие происходит на уровне двух композитных менеджеров, т.е. композитный сервер Weston на локальной системе, на которой работает пользователь, может отображать отдельные окна из композитного сервера Weston, запущенного на удалённой системе. Трансляция вывода реализована на основе передачи изменения содержимого отдельных окон, обслуживаемых композитным сервером. По сети передаются только изменившиеся элементы окон, изменения вычисляются на уровне битмапов и передаются с использованием протокола похожего на VNC.
Проект по интеграции поддержки фреймворка IBus (Intelligent Input Bus) для организации ввода. Данная подсистема отмечена как готовая для интеграции, но решено дать дополнительное время для полировки и изменения интерфейса перед его фиксацией как части протокола Wayland. В частности, в процессе перехода GNOME на Wayland возможно всплывут некоторые тонкости, требующие правки.
Поддержка протокола для манипулирования субповерхностями (subsurface) и группами поверхностей (surface group) внутри одного окна приложения. Например, для видеоплеера можно выделить области с контентом и управляющими элементами и обеспечить их компоновку на уровне композитного менеджера, а не приложения.
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, например, разработчики проекта KDE приступили к осуществлению плана по обеспечению работы KDE и KWin поверх Wayland.
В рамках проекта Weston развивается один из прототипов реализации композитного сервера. Подчёркивается, что это лишь одна из реализаций (по аналогии с оконными менеджерами), так как в роли композитного сервера может выступать любой другой продукт, поддерживающий протокол Wayland. Например, в настоящее время ведётся работа по обеспечению поддержки Wayland в таких существующих композитных менеджерах для X11, как KWin и Compiz. Взаимодействие с аппаратным обеспечением, например, проведение инициализации, переключение видеорежимов (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.