В Ubuntu 12.10 ожидается поддержка Wayland

На саммите разработчиков Ubuntu состоялось обсуждение вопросов, связанных с интеграцией в дистрибутив поддержки дисплейного сервера Wayland. В частности, был намечен план по реализации в Ubuntu 12.10 полноценной поддержки работы всей графической подсистемы на базе Wayland и композитного сервера Weston. При этом подчёркивается, что в дистрибутиве по умолчанию будет продолжено использование обычных X11-приложений, которые будут выполняться поверх Wayland с использованием прослойки XWayland, позволяющей запустить полноценный X.Org-сервер в роли клиента Wayland. Таким образом будет обеспечена полная совместимость со всеми текущими приложениями.

Переход на использование приложений, собранных для работы напрямую с Wayland пока рассматривается как вопрос отдалённого будущего, по крайней мере использование XWayland позволит максимально сгладить такой переход и постепенно, по мере готовности приложений, переходить на программы без прослоек работающих с Wayland. В настоящее время поддержка прямой работы c Wayland уже реализована для библиотек Gtk3+, Qt 5, SDL, Clutter и EFL (Enlightenment Foundation Library), но для конечных приложений переход усложняется, задействованием во многих программах функций Xlib (например, из 22 протестированных GTK-приложений в 13 выявлены обращения к Xlib через вызовы gdk_x11_*).

Несмотря на обсуждение намерения задействования Wayland в Ubuntu 12.10, наиболее вероятно, что в осеннем выпуске в лучшем случае будет доступен лишь тестовый ознакомительный прототип, а включение Wayland в базовую поставку состоится не раньше выпуска Ubuntu 13.04. Основной причиной подобных предположений является неготовность самого Wayland к широкому внедрению. В частности, первый стабильный релиз Wayland 1.0, в котором будет полностью сформирован API, ожидается в лучшем случае только осенью (изначальный план подготовки Wayland 1.0 указывает на конец года). Необходимые для работы Wayland компоненты пока ограничены полноценной поддержкой только открытого видеодрайвера intel, частично поддерживают radeon и теоретически могут работать с nouveau, но ни в какой форме не поддерживают широко распространённые проприетарные драйверы от компаний AMD и NVIDIA. Кроме того, прослойка XWayland также пока находится в состоянии активной разработки и требует существенной доработки и устранения наблюдаемых проблем.

Для решения проблемы с отсутствием поддержки Wayland в проприетарных драйверах компания Canonical планирует договориться с компаниями NVIDIA и AMD о реализации необходимой функциональности, а если это не удастся, создать специальный бэкенд, транслирующий API данных драйверов в необходимую для работы Wayland форму. В качестве причины перехода на Wayland, кроме повышения производительности вывода, вследствие более простой архитектуры и исключения лишней буферизации, называется желание обеспечить бесшовную работу единого графического режима на протяжении всех стадий работы дистрибутива, включая загрузку, вход в систему и завершение работы.

Wayland представляет собой протокол взаимодействия композитного сервера и работающих с ним приложений. Клиенты самостоятельно выполняют отрисовку своих окон в отдельном буфере, передавая информацию об обновлениях композитному серверу, который комбинирует содержимое буферов отдельных приложений для формирования итогового вывода с учётом возможных нюансов, таких как перекрытие окон и прозрачность. Иными словами, композитный сервер не предоставляет API для отрисовки отдельных элементов, а оперирует только с уже сформированными окнами, что позволяет избавится от двойной буферизации при использовании высокоуровневых библиотек, таких как GTK+ и Qt, берущих на себя работу по компоновке содержимого окон. Взаимодействие с аппаратным обеспечением, например, проведение инициализации, переключение видеорежимов (drm modesetting) и управление памятью (GEM для i915 и TTM для radeon и nouveau) графических карт, может производиться напрямую через модуль, работающий на уровне ядра, что позволяет обойтись без привилегий суперпользователя.

В рамках проекта Weston развивается один из прототипов реализации композитного сервера. Подчёркивается, что это лишь одна из реализаций (по аналогии с оконными менеджерами), так как в роли композитного сервера может выступать любой другой продукт, поддерживающий протокол Wayland. Например, в настоящее время ведётся работа по обеспечению поддержки Wayland в таких существующих композитных менеджерах для X11, как KWin и Compiz. Композитный сервер Weston может работать с использованием DRM-модуля ядра Linux, поверх X11 или поверх другого композитного сервера Wayland.

©  OpenNet