Несколько дней тому назад Chrome отправил всем пользователям стабильной ветки браузера изменение который по умолчанию активирует новый код для организации вывода в системах с X-сервером, основанный на использовании слой под названием «Озон» который абстрагирует взаимодействие с графической подсистемой.
Использование озона позволяет обеспечить поддержку X11 и Wayland в одной сборке Chrome, без привязки к конкретной графической подсистеме.
Об озоне
Озон - это уровень абстракции платформы под оконной системой Aura. который используется для ввода и низкоуровневой графики, тем самым абстракция поддерживает базовые системы, начиная от встроенных целей SoC и заканчивая новыми альтернативными оконными системами и X11 в Linux, например Wayland или Mir, для отображения Aura Chromium, обеспечивая реализацию интерфейса платформы.
Поскольку желательно, чтобы Chrome использовался в самых разных проектах, ведется работа по облегчению перехода на новые платформы.
Для достижения этой цели Ozone следует следующим принципам:
- Интерфейсы, а не ifdef: различия между платформами обрабатываются путем вызова объекта, предоставленного платформой, через интерфейс вместо использования условной компиляции. Внутренние компоненты платформы остаются инкапсулированными, а открытый интерфейс действует как брандмауэр между нейтральными верхними уровнями платформы (аура, мерцание, контент и т. Д.) И нижними уровнями, специфичными для платформы.
- Гибкие интерфейсы: интерфейсы платформы должны инкапсулировать именно то, что Chrome нужно от платформы, с минимальными ограничениями на реализацию платформы, а также минимальными ограничениями на использование верхних уровней.
- Среда выполнения для всех платформ: чтобы избежать условной компиляции на верхних уровнях, она позволяет нам создавать несколько платформ в одном двоичном файле и связывать их во время выполнения.
- Простое ветвление - многие порты начинаются как форки, и многие из них позже объединяют свой код в восходящем направлении, у других будет долгая жизнь вне дерева. Это нормально, и мы должны облегчить этот процесс, чтобы стимулировать вилки.
Оттого независимость от особенностей построения графического интерфейса на различных системах работает в Chrome он реализован с использованием собственного кроссплатформенного графического стека Aura. Aura действует как оконный менеджер (оболочка Aura), работающий через собственный составной сервер и использующий доступные инструменты графического процессора для ускорения графических операций.
Чтобы сгенерировать элементы интерфейса, используется набор графических инструментов Aura UI, который предоставляет собственный набор виджетов, диалогов, элементов управления и обработчиков событий. Из возможностей базового графического стека (X11, Wayland, Cocoa или Windows) используется только вывод в верхней части корневого окна.
Все специфические операции с графическим стеком Linux сводятся к одному слою легко заменяемый абстрактный озон. До сих пор поддержка Ozone предоставлялась в виде опции, и по умолчанию используется старый бэкэнд, закодированный в X11.
Работа по переводу сборок X11 для использования слоя Ozone ведется с 2020 года, и для пользователей постепенное включение серверной части Ozone / X11 по умолчанию началось с выпуском Chrome 92.
То есть несколько дней назад новый бэкэнд был активирован для всех пользователей Chrome Linux. Помимо X11 и Wayland («–ozone-platform = wayland» и «–ozone-platform = x11»), Ozone также разрабатывает платформы для вывода через графические драйверы KMS / DRM, вывод графики ASCII с использованием библиотеки libcaca, рендеринг в PNG изображения (без заголовка) и потоковая передача через устройства Chromecast.
Наконец, упоминается, что вышеупомянутый бэкэнд планируется, который поддерживает работу только через X11, будет устарел и в конечном итоге будет удален из кодовой базы (После того, как новый бэкэнд Ozone / X11 достиг паритета по функциональности и включил его по умолчанию, не было смысла держать еще один бэкэнд X11 в браузере.)
источник: https://chromium.googlesource.com