Домой Новости Железо Выпуск Wayland-Protocols 1.49

Выпуск Wayland-Protocols 1.49

Релиз Wayland-Protocols 1.49 принес поддержку нескольких GPU, экспериментальное дробное масштабирование и инструменты для работы с HDR-контентом.

Представлен релиз пакета wayland-protocols 1.49, который включает в себя расширенный набор протоколов и спецификаций для дополнения базовой архитектуры Wayland. Данные инструменты необходимы разработчикам для создания современных композитных серверов и полноценных пользовательских окружений в Linux-системах.

Среди ключевых изменений и нововведений в версии 1.49 выделяются следующие:

  • Добавлен экспериментальный протокол xx-fractional-scale. Он открывает возможность масштабирования системы логических координат, значения в которой задаются целыми числами, что повышает точность позиционирования и увеличивает разрешение логических координат вплоть до отдельных пикселей. Это новообразование решает давнюю проблему нехватки разрешения для качественной реализации дробного масштабирования элементов интерфейса.

  • В стандартный протокол «linux-dmabuf» интегрирована поддержка работы на аппаратных конфигурациях с несколькими графическими процессорами (GPU). На таких конфигурациях клиентское приложение теперь может согласовывать с композитным сервером выбор конкретного GPU для рендеринга.

  • Протокол color-management-v1 получил поддержку метаданных изображений стандарта BT.2100. Это позволяет композитному серверу задействовать специализированные обработчики для корректной и точной цветопередачи HDR-контента, изначально созданного под операционную систему Windows.

Жизненный цикл протоколов

Все расширения в проекте последовательно проходят стадии проектирования, тестирования и стабилизации. После завершения активной разработки в категории «unstable» протокол переносится в ветку «staging» и официально включается в состав пакета wayland-protocols. По завершении этапа тестирования интерфейс перемещается в категорию стабильных.

Интерфейсы из ветки «staging» уже разрешено применять в продакшене композитных серверов и клиентского ПО, где требуется соответствующий функционал. В отличие от «unstable», в «staging» строго запрещены любые изменения, ломающие обратную совместимость. Тем не менее, при обнаружении серьезных архитектурных недоработок допускается замена расширения новой значительной версией или альтернативным аналогом.

Для ускорения внедрения новшеств и раннего тестирования разработчиками в экосистеме действует фаза «experimental». В ней разрешено вносить изменения, нарушающие совместимость, и добавлять «сырые» спецификации. Если для перехода в «staging» требуется собрать команду поддержки и получить кворум подтверждений (ACK) от участников ревью, то для попадания в «experimental» достаточно отсутствия весомых возражений (NACK) на протяжении двухнедельного периода обсуждения.

Стабильные протоколы

В текущий стабильный состав wayland-protocols, где гарантируется строгая обратная совместимость, входят:

  • «viewporter» — позволяет клиентам выполнять операции масштабирования и обрезки границ поверхности на стороне сервера.
  • «presentation-time» — отвечает за корректное отображение видеопотока.
  • «xdg-shell» — базовый интерфейс для создания окон и управления ими (перемещение, сворачивание, разворачивание, изменение размеров).
  • «linux-dmabuf» — предоставляет инструменты для формирования wl_buffer на базе подсистемы DMA-BUF.
  • «tablet» — стандартизированная организация ввода с графических планшетов и дигитайзеров.

Протоколы в ветке «staging»

На этапе тестирования в ветке «staging» находятся следующие расширения:

  • drm-lease — выдает ресурсы, необходимые для формирования стереоскопической картинки с раздельными буферами для левого и правого глаза при трансляции на VR-гарнитуры.
  • «ext-session-lock» — определяет системные средства блокировки экрана, задействуемые во время работы скринсейверов или вывода окон авторизации.
  • «single-pixel-buffer» — позволяет генерировать однопиксельные буферы, содержащие четыре 32-разрядных значения RGBA.
  • «xdg-activation» — дает возможность безопасно передавать фокус ввода между независимыми поверхностями первого уровня (например, для переключения фокуса между программами).
  • content-type — передает композитному серверу метаданные о типе контента для аппаратных оптимизаций. Поддерживаются режимы: none, photo (минимальная обработка для фото), video (точная синхронизация во избежание лагов) и game (минимальная задержка вывода).
  • ext-idle-notify — уведомляет серверы о пользовательской неактивности для перевода железа в энергосберегающие режимы.
  • tearing-control — позволяет отключать вертикальную синхронизацию (VSync) в полноэкранных приложениях для снижения задержек ввода ценой возможных разрывов кадров.
  • ext-foreign-toplevel-list — предоставляет данные о верхнеуровневых поверхностях для создания кастомных панелей задач и переключателей окон.
  • security-context — идентифицирует клиентов в sandbox-изоляции и ограничивает их системные полномочия.
  • cursor-shape — альтернативный метод стилизации курсора через передачу набора изображений вместо привязки к wl_surface.
  • «ext-transient-seat» — служит для создания изолированных временных сеансов ввода при подключении удаленных рабочих столов.
  • «xdg-toplevel-drag» — расширяет механики Drag & Drop возможностью отрыва вкладок и панелей в самостоятельные окна.
  • «xdg-dialog» — добавляет специфичные атрибуты для модальных и стандартных диалоговых окон.
  • «linux-drm-syncobj» — инструмент явной синхронизации буферов через объекты DRM для бесшовной работы с OpenGL и Vulkan.
  • alpha-modifier — делегирует расчет прозрачности поверхностей на сторону композитного сервера и KMS.
  • xdg-toplevel-icon — привязка кастомных иконок к верхнеуровневым окнам.
  • ext-image-capture-source и ext-image-copy-capture — стандартизированный захват экранного контента.
  • xdg-system-bell — вызов системных звуковых или визуальных уведомлений.
  • fifo — реализует FIFO-очередь обновления кадров через ожидание vblank вместо callback-вызовов, разгружая GPU.
  • commit-timing — привязка жестких временных меток к выводу изменений графического контента.
  • ext-data-control — управление расширенными функциями буфера обмена для привилегированных утилит.
  • ext-workspace — поддержка концепции виртуальных рабочих столов для панелей и индикаторов.
  • color-management — управление расширенным динамическим диапазоном (HDR) и цветовыми профилями ICC.
  • xdg-toplevel-tag — привязка тегов к окнам для восстановления их параметров и позиций после перезапуска.
  • color-representation — передача метаданных цветовых моделей (например, конвертация YCbCr в RGB).
  • ext-background-effect — наложение визуальных эффектов (размытие) на полупрозрачные фоны.
  • pointer-warp — программное мгновенное перемещение курсора в заданные координаты.
  • xdg-session-management — восстановление оконных сессий после аварийных сбоев.

Экспериментальные протоколы и ветка unstable

В экспериментальной ветке разработчики обкатывают следующие интерфейсы:

  • xx-session-management — восстановление состояния софта при падении окружения.
  • xx-input-method — создание виртуальных клавиатур и IME-модулей ввода.
  • xx-text-input — стандартизация передачи текста и контекста полей ввода.
  • xx-cutouts — учет аппаратных вырезов под камеры на экранах устройств.
  • xx-zones — создание изолированных координатных зон для логического размещения окон.
  • xx-keyboard-filter — перехват и модификация горячих клавиш и событий клавиатуры.

В стабильной разработке категории «unstable» продолжают развиваться следующие интерфейсы: «fullscreen-shell», «input-method», «idle-inhibit», «input-timestamps», «keyboard-shortcuts-inhibit», «linux-explicit-synchronization», «pointer-gestures», «pointer constraints», «primary-selection», «relative pointer events», «text-input», «xdg-foreign», «xdg-decoration», «xdg-output» и «xwayland-keyboard-grab».

Источник: http://www.opennet.ru