Выпуск Wayland-Protocols 1.31

Опубликован выпуск пакета wayland-protocols 1.31, содержащего набор протоколов и расширений, дополняющих возможности базового протокола Wayland и предоставляющих возможности, необходимые для построения композитных серверов и пользовательских окружений.

Все протоколы последовательно проходят три фазы – разработка, тестирование и стабилизация. После завершения стадии разработки (категория “unstable“) протокол помещается в ветку “staging” и официально включается в состав набора wayland-protocols, а после завершения тестирования перемещается в категорию стабильных. Протоколы из категории “staging” уже можно применять в композитных серверах и клиентах, где требуется связанная с ними функциональность. В отличие от категории “unstable” в “staging” запрещено внесение изменений, нарушающих совместимость, но в случае выявление проблем и недоработок в ходе тестирования, не исключается замена новой значительной версией протокола или другим Wayland-расширением.

Новая версия опубликована спустя неделю после выпуска Wayland-Protocols 1.30, в котором была добавлена поддержка протокола tearing-control для отключения вертикальной синхронизации. В версии 1.31 в категорию “staging” добавлен протокол fractional-scale, при помощи которого композитный менеджер может передавать нецелые значения масштабирования поверхностей, что позволяет клиенту определять более точный размер буферов для объектов wp_viewport, по сравнению с передачей округлённых сведений о масштабе. Реализации протокола fractional-scale подготовлены для wlroots, KWin и glfw.

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

  • viewporter” – позволяет клиенту выполнять действия по масштабированию и обрезанию краёв поверхности на стороне сервера.
  • presentation-time” – обеспечивает отображение видео.
  • xdg-shell” – интерфейс создания и взаимодействия с поверхностями как с окнами, что позволяет их передвигать по экрану, сворачивать, разворачивать, изменять размер и т.д.

Протоколы, тестируемые в ветке “staging“:

  • drm-lease – предоставляет ресурсы, необходимые для формирования стереокартинки с разными буферами для левого и правого глаза при выводе на шлемы виртуальной реальности.
  • ext-session-lock” – определяет средства блокировки сеанса, например, во время работы хранителя экрана или вывода диалога аутентификации.
  • single-pixel-buffer” – позволяет создавать однопиксельные буферы, включающие четыре 32-разрядных значения RGBA.
  • xdg-activation” – позволяет передать фокус между разными поверхностями первого уровня (например, при помощи
    xdg-activation одно приложение может переключить фокус на другое).
  • content-type – позволяет клиентам передать композитному серверу сведения об отображаемом содержимом, которые могут использоваться для оптимизации поведения с учётом содержимого, например, выставлении специфичных DRM-свойств, таких как “content type”. Заявлена поддержка следующих типов контента: none (нет сведений о типе данных), photo (вывод цифровых фото, требующий минимальной обработки), video (видео или анимация, требуется более точная синхронизация, чтобы исключить подтормаживания) и game (запуск игр, требуется вывод с минимальной задержкой).
  • ext-idle-notify – даёт возможность композитным серверам передавать клиентам уведомления о неактивности пользователя, что может использоваться для активации дополнительных режимов энергосбережения после определённого времени неактивности.
  • tearing-control – позволяет отключить в полноэкранных приложениях вертикальную синхронизацию (VSync) с кадровым гасящим импульсом, применяемую для защиты от появления разрывов при выводе (tearing). В мультимедийных приложениях появление артефактов из-за разрывов является нежелательным эффектом, но в игровых программах с артефактами можно смириться, если борьба с ними приводит к дополнительным задержкам.

Протоколы, разрабатываемые в ветке “unstable“:

  • “fullscreen-shell” – управление работой в полноэкранном режиме.
  • “input-method” – обработка методов ввода.
  • “idle-inhibit” – блокировка запуска скринсейвера (экранной заставки).
  • “input-timestamps” – временные метки для событий ввода.
  • “keyboard-shortcuts-inhibit” – управление прикреплением клавиатурных комбинаций и горячих клавиш.
  • “linux-dmabuf” – совместное использование нескольких видеокарт при помощи технологии dma-buf.
  • “linux-explicit-synchronization” – специфичный для Linux механизм синхронизации буферов в привязке к поверхности.
  • “pointer-gestures” – управление с сенсорных экранов.
  • “pointer constraints” – ограничения указателей (блокировка).
  • “primary-selection” – по аналогии с X11 обеспечивает работу первичного буфера обмена (primary selection), вставка информации из которого обычно осуществляется средней кнопкой мыши.
  • “relative pointer events” – относительные события указателей.
  • “tablet” – поддержка ввода с планшетов.
  • “text-input” – организация ввода текста.
  • “xdg-foreign” – интерфейс взаимодействия с поверхностями “соседнего” клиента.
  • “xdg-decoration” – отрисовка декораций окон на стороне сервера.
  • “xdg-output” – дополнительные сведения о видеовыходе (используется для дробного масштабирования).
  • “xwayland-keyboard-grab” – захват ввода в приложениях XWayland.

Release. Ссылка here.