Публикуван е пакет wayland-protocols 1.38, който съдържа набор от протоколи и разширения, допълващи основния протокол Wayland и предоставящи възможности, необходими за изграждане на композитни сървъри и потребителски среди.
Все протоколы последовательно проходят три фазы — разработка, тестирование и стабилизация. После окончания этапа разработки (категория «unstable») протокол перемещается в ветку «staging» и официально включается в состав набора wayland-protocols, а после завершения тестирования переходит в категорию стабильных. Протоколы из категории «staging» могут уже применяться в композитных серверах и клиентах, где требуется связанная с ними функциональность. В отличие от категории «unstable», в «staging» запрещены изменения, нарушающие совместимость, но в случае выявления проблем и недоработок в процессе тестирования возможна замена на новую значительную версию протокола или другое расширение Wayland.
В новата версия в категорията „staging“ са добавени протоколи:
- xdg-system-bell — позволява излъчването на системен сигнал, който може да се използва, например, като предупреждение в емулацията на терминали. Формата на излъчване на сигнала се определя по усмотрение на композитния мениджър, това може да бъде не само звук, но и визуален отговор.
- fifo — реализира механизма FIFO (първи влязъл — първи излязъл) за обработка на опашка за обновяване на съдържанието на показваната повърхност. Практически, протоколът позволява при излъчване да се използва изчакване за завършване на вертикалното разгръщане (vblank), вместо да се използват callback-викания при всяка готовност за показване на нов кадър, което решава проблема с високата натовареност на GPU при използване на VSync.
- commit-timing — позволява свързването на времево ограничение към съдържанието на повърхността (композитният сървър трябва да показва промяна в съдържанието възможно най-скоро след указаното време, но не по-рано).
В настоящее время в состав wayland-protocols входят следующие стабильные протоколы, обеспечивающие обратную совместимость:
- «viewporter» — позволяет клиенту выполнять действия по масштабированию и обрезанию краёв поверхности на стороне сервера.
- «presentation-time» — обеспечивает отображение видео.
- «xdg-shell» — интерфейс для создания и взаимодействия с поверхностями как с окнами, что позволяет их передвигать по экрану, сворачивать, разворачивать, изменять размер и т.д.
- «linux-dmabuf» — обеспечивает совместное использование нескольких видеокарт с использованием технологии DMA-BUF (позволяет создать wl_buffer на основе DMA-BUF).
- «tablet» — организация на входа от графични таблети.
Протоколы, тестируемые в ветке «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). В мултимедийните приложения появата на артефакти поради разкъсвания е нежелан ефект, но в игровите програми е възможно да се понесат артефакти, ако справянето с тях води до допълнителни забавяния.
- ext-foreign-toplevel-list — получаване на информация за повърхности, разположени на най-високо ниво (toplevel), които позволяват организиране на закрепване на прозорци над друго съдържание, например, за свързване на собствени панели и превключватели на прозорци.
- security-context — позволява на идентификация на клиенти, използващи изолация в sandox. Клиентът може да регистрира ново свързване към композитен сървър на базата на Wayland и да прикрепи към него контекст за безопасност, след което в съответствие с посочения контекст за безопасност композитният мениджър ще ограничи възможностите, достъпни за установеното свързване.
- cursor-shape — алтернативен начин за настройка на вида на курсора, основан на предаване на серия от изображения на курсора вместо свързване с повърхност (wl_surface).
- «ext-transient-seat» — предназначен за създаване на временни независими сесии (seat), проектирани за използване заедно с виртуални входни устройства. Например, при реализация на възможността за свързване към отдалечен работен плот протоколът позволява създаването на отделна сесия за всеки потребител с виртуална клавиатура и мишка.
- «xdg-toplevel-drag» — разширява механизма «drag & drop» с възможността за прикрепяне на прозорци от най-високо ниво към операцията по преместване, което може да бъде използвано, например, за организиране на плъзгането с мишката на панели с инструменти или раздели в браузъра. Новият протокол позволява създаването на отделими части от прозореца, които при плъзгане от този прозорец стават нови прозорци и могат да се преместят над съществуващ прозорец преди повторно прикрепяне.
- «xdg-dialog» — позволява определяне на повърхностите от най-високо ниво с признаци, специфични за диалогови прозорци, например, могат да се създават модални диалози, които блокират взаимодействието на потребителя с останалата част от интерфейса.
- «linux-drm-syncobj» — предоставя инструменти за явна синхронизация на буфери с помощта на обекти за синхронизация DRM (Direct Rendering Manager). Предполага се, че в контекста на синхронизация при размяната на буфер, предложените протоколи ще подобрят работата с драйвери на базата на графични API Vulkan и OpenGL (реализацията се основава на обработчици в драйверите). Новият протокол дава възможност да се уверите, че операцията по рисуване в буфера е завършена преди композитният мениджър да изобрази този буфер.
- alpha-modifier, който позволява на клиентите да променят нивото на прозрачност на повърхността и да прехвърлят операциите по осигуряване на прозрачността на страната на композитния сървър, който от своя страна може да пренасочва тези операции към KMS.
- xdg-toplevel-icon — свързване на икона с прозорец на най-високо ниво.
- ext-image-capture-source и ext-image-copy-capture — организиране на улавяне на съдържанието, показвано на екрана.
Протоколите, разработвани в клона «unstable»:
- «fullscreen-shell» — управление на работата в режим на цял екран.
- «input-method» — обработка на методите за въвеждане.
- «idle-inhibit» — предотвратяване на стартиране на екранната заставка.
- «input-timestamps» — времеви печати за входни събития.
- «keyboard-shortcuts-inhibit» — контрол на привързаността на клавишни комбинации и бързи клавиши.
- «linux-explicit-synchronization» — специфичен за Linux механизъм за синхронизация на буферите, свързан с повърхността.
- «pointer-gestures» — управление на сензорни екрани.
- «pointer constraints» — ограничения на указателите (блокиране).
- «primary-selection» — подобно на X11 осигурява работа с основния буфер за обмен (primary selection), чийто вариант обикновено се вмъква с средния бутон на мишката.
- «relative pointer events» — относителни събития на указатели.
- «text-input» — организация на въвеждане на текст.
- «xdg-foreign» — интерфейс за взаимодействие с повърхности на «съседен» клиент.
- «xdg-decoration» — отразяване на декорации на прозорците от страна на сървъра.
- «xdg-output» — допълнителна информация за видеовыхода (използва се за дробно мащабиране).
- «xwayland-keyboard-grab» — захващане на входа в приложенията XWayland.
Допълнително може да се спомене предложението на служителя на компания Valve за добавяне на нова фаза на напредване на новите протоколи Wayland — „experimental“, която ще позволи да се намали бариерата за включване на протоколите в състава на Wayland-Protocols и да се ускори тяхното внедряване. В момента, за да стигне протокол до фазата staging, е необходимо да се формира екип за поддръжка и да се получи определен брой потвърждения (ACK) от участниците в рецензията. В „experimental“ се предлага да се приемат протоколи без получаване на потвърждения, а на основание отсъствие на възражения (NACK) в рамките на двуседмичен период на рецензия. При необходимост участниците в рецензията могат също да удължат обсъждането за още две седмици, поставяйки статуса „WAIT“.
В фазата „experimental“ също се предлага да се разреши въвеждането на промени, нарушаващи съвместимостта, и добавяне на „сурови“ протоколи, които постепенно могат да се доведат до необходимото ниво. Така фазата „experimental“ ще позволи бързо да се предоставят нови прототипи на протоколи на разработчиците, да се стимулира тяхната реализация в съществуващите проекти и да се получи обратна връзка от потребителите. Предложеният процес трябва да освободи разработчиците на протоколи от дълги обсъждания и бюрокрация преди приемането им в състава на Wayland-Protocols. Например, приетите в настоящия пакет протоколи xdg-system-bell, fifo и commit-timing бяха обсъждани повече от година.
Източник: opennet.ru
