De release van het wayland-protocols pakket 1.39 is gepubliceerd, dat een set protocollen en extensies bevat die het basale Wayland-protocol aanvullen en mogelijkheden bieden die nodig zijn voor de bouw van composietservers en gebruikersomgevingen.
Alle protocollen doorlopen opeenvolgende fasen van ontwikkeling, testen en stabilisatie. Na de ontwikkeling fase (categorie 'unstable') wordt het protocol in de 'staging' tak geplaatst en officieel opgenomen in het pakket wayland-protocols. Na voltooiing van de tests wordt het overgebracht naar de stabiele categorie. Protocollen uit de 'staging' categorie kunnen al worden toegepast in compositors en clients waar de bijbehorende functionaliteit vereist is. In tegenstelling tot de 'unstable' categorie mogen er in 'staging' geen wijzigingen worden aangebracht die de compatibiliteit verstoren, maar indien er tijdens het testen problemen of tekortkomingen worden vastgesteld, kan een nieuwe significante versie van het protocol of een andere Wayland-uitbreiding worden vervangen.
In de nieuwe versie is een extra fase toegevoegd voor de promotie van protocollen - 'experimental', gericht op het verlagen van de drempel voor het opnemen van protocollen in de set Wayland-Protocols, versnelling van de overdracht van protocollen naar ontwikkelaars en stimulering van vroege implementatie in bestaande projecten. Deze nieuwe fase zal ontwikkelaars van protocollen bevrijden van langdurige discussies en bureaucratie voordat ze in de Wayland-Protocols worden opgenomen.
Als het vereist is om een ondersteunend team te vormen en een bepaald aantal bevestigingen (ACK) van beoordelaars te krijgen voor een protocol om in de fase 'staging' te komen, is het voor de fase 'experimental' voldoende dat er geen bezwaren (NACK) zijn gedurende een beoordelingsperiode van twee weken. In de fase 'experimental' zijn veranderingen die compatibiliteit schenden en de toevoeging van 'ruwe' protocollen, die geleidelijk naar een acceptabel niveau kunnen worden gebracht, toegestaan.
Toegevoegd aan de categorie 'staging':
- ext-data-control — stelt geprivilegieerde klanten in staat om de verwerking van gegevens te beheren, bijvoorbeeld voor de implementatie van klembordbeheerders.
- ext-workspace — implementeert het concept virtuele desktops en biedt evenementen met informatie over de status van werkruimten, evenals mogelijkheden om werkruimten in en uit te schakelen. Het protocol kan worden toegepast voor het creëren van panelen en indicatoren die een lijst van beschikbare virtuele werkruimten weergeven en het mogelijk maken om tussen deze te schakelen.
Momenteel bevat wayland-protocols de volgende stabiele protocollen, die terugwaartse compatibiliteit waarborgen:
- «viewporter» — stelt de client in staat om acties uit te voeren voor schaling en het bijsnijden van randen van oppervlakken aan de serverzijde.
- 'presentation-time' - zorgt voor videoweergave.
- «xdg-shell» — interface voor het creëeren en interageren met oppervlakken als ramen, waardoor ze kunnen worden verplaatst, geminimaliseerd, gemaximeerd, vergroot, enzovoort.
- ‘linux-dmabuf’ - maakt het delen van meerdere grafische kaarten mogelijk via de DMA-BUF technologie (maakt het mogelijk om een wl_buffer op basis van DMA-BUF te creëren).
- 'tablet' - organisatie van invoer van grafische tablets.
Protocollen die worden getest in de 'staging'-lijn:
- drm-lease - biedt de benodigde middelen voor het vormen van een stereobeeld met verschillende buffers voor het linker en rechter oog bij weergave op virtual reality-headsets.
- 'ext-session-lock' - defineert de middelen voor sessievergrendeling, bijvoorbeeld tijdens het werken met een screensaver of het weergeven van een authenticatiedialoog.
- 'single-pixel-buffer' - maakt het mogelijk om een enkelpixelbuffers te creëren die vier 32-bits RGBA-waarden bevatten.
- 'xdg-activation' - stelt het mogelijk om de focus tussen verschillende eerste-niveau oppervlakken over te dragen (bijvoorbeeld kan één toepassing met xdg-activation de focus op een andere overschakelen).
- content-type — stelt cliënten in staat om informatie over de weergegeven inhoud door te geven, die gebruikt kan worden om het gedrag op basis van de inhoud te optimaliseren, bijvoorbeeld voor het instellen van specifieke DRM-eigenschappen, zoals 'content type'. Ondersteuning is verklaard voor de volgende inhoudstypen: none (geen informatie over het gegevenstype), photo (weergave van digitale foto's, vereist minimale verwerking), video (video of animatie, vereist nauwkeurigere synchronisatie om haperingen te voorkomen) en game (uitvoering van games, vereist weergave met minimale vertraging). server ext-idle-notify — stelt composietservers in staat om cliënten meldingen over gebruikersinactiviteit te sturen, wat kan worden gebruikt om extra energiebesparende modi te activeren na een bepaalde periode van inactiviteit.
- tearing-control — maakt het mogelijk om verticale synchronisatie (VSync) met frame-drops uit te schakelen in volledig scherm applicaties, welke worden toegepast om het verschijnen van tearing bij de weergave te voorkomen. In multimedia-applicaties is het verschijnen van artefacten door tearing een ongewenst effect, maar in games kan men zich tevredenstellen met artefacten als het bestrijden ervan leidt tot extra vertraging.
- ext-foreign-toplevel-list — verkrijging van informatie over oppervlakken die zich op het allerhoogste niveau (toplevel) bevinden, waarmee het mogelijk is om vensters boven andere inhoud vast te zetten, bijvoorbeeld voor het aansluiten van eigen panelen en vensterschakelaars.
- security-context — stelt in staat cliënten te identificeren die sandbox-isolatie gebruiken. Een cliënt kan een nieuwe verbinding met een composietserver op basis van Wayland registreren en deze verbinden met een beveiligingscontext, waarna de composietmanager de mogelijkheden beheert die beschikbaar zijn voor de ingestelde verbinding op basis van de opgegeven beveiligingscontext.
- cursor-shape — een alternatieve manier om het uiterlijk van de cursor aan te passen, gebaseerd op het verzenden van een reeks cursorafbeeldingen in plaats van gebonden te zijn aan een oppervlak (wl_surface).
- cursor-shape — een alternatieve manier om het uiterlijk van de cursor aan te passen, gebaseerd op een serie cursorafbeeldingen in plaats van gebonden te zijn aan een oppervlak (wl_surface).
- «ext-transient-seat» is bedoeld voor het creëren van tijdelijke, onafhankelijke sessies (seat), die zijn ontworpen voor gebruik met virtuele invoerapparaten. Bijvoorbeeld, bij het implementeren van de mogelijkheid om verbinding te maken met een externe desktop, stelt het protocol in staat om voor elke gebruiker een aparte sessie te creëren met virtueel toetsenbord en muis.
- «xdg-toplevel-drag» breidt het mechanisme „drag & drop” uit met de mogelijkheid om bovenliggende vensters aan de verplaatsingsoperatie te koppelen, wat bijvoorbeeld kan worden gebruikt voor het organiseren van het slepen met de muis van tools of browser tabs. Het nieuwe protocol maakt het mogelijk om loskoppelbare vensteronderdelen te creëren die, wanneer ze uit dit venster worden gesleept, nieuwe vensters worden en zich boven bestaande vensters kunnen verplaatsen voordat ze opnieuw worden bevestigd.
- «xdg-dialog» maakt het mogelijk om bovenliggende oppervlakken specifieke eigenschappen voor dialoogvensters toe te wijzen, bijvoorbeeld om modale dialoogvensters te creëren die de interactie van de gebruiker met de rest van de interface blokkeren.
- «linux-drm-syncobj» biedt hulpmiddelen voor expliciete synchronisatie van buffers met behulp van synchronisatieobjecten van het DRM (Direct Rendering Manager). Het is bedoeld dat het voorgestelde protocol in de context van synchronisatie tijdens het renderen naar een buffer de samenwerking met stuurprogramma's op basis van grafische API's zoals Vulkan en OpenGL zal verbeteren (de implementatie is gebaseerd op handlers in de stuurprogramma's). Het nieuwe protocol biedt de mogelijkheid om te controleren of de renderbewerking naar de buffer is voltooid voordat de composietmanager deze buffer weergeeft.
- alpha-modifier, die klanten in staat stelt om het transparantieniveau van een oppervlak te veranderen en de transparentie-operaties naar de compositor-server te verplaatsen, die deze operaties op zijn beurt kan doorsturen naar KMS.
- xdg-toplevel-icon — koppeling van een pictogram aan een bovenliggend venster.
- ext-image-capture-source en ext-image-copy-capture — organisatie van het vastleggen van inhoud die op het scherm wordt weergegeven.
- xdg-system-bell — maakt het mogelijk om een systeem signaal uit te geven, dat bijvoorbeeld kan worden gebruikt als waarschuwing in terminalemulatoren. De vorm van de signaaluitvoer wordt bepaald naar de voorkeur van de compositor, dit kan niet alleen geluid zijn, maar ook een visuele respons.
- fifo — implementeert een FIFO-mechanisme (eerste gekomen, eerste gegaan) voor het verwerken van de wachtrij van de inhoudsupdate van de weergegeven oppervlakte. Praktisch gezien stelt het protocol gebruikers in staat om te wachten tot de verticale afrol voltooid is (vblank) in plaats van callback-aanroepen te gebruiken bij elke gereedheid om een nieuw frame weer te geven, wat het probleem van hoge belasting van de GPU bij gebruik van VSync oplost.
- commit-timing — maakt het mogelijk om een tijdslimiet aan de inhoudsoppervlakte te koppelen (de composietserver moet de wijziging van de inhoud zo mogelijk doorvoeren binnen de opgegeven tijd, maar niet eerder).
Protocollen die ontwikkeld worden in de 'unstable' tak:
- "fullscreen-shell" — beheer van de werking in de volledig scherm modus.
- "invoermethode" — verwerking van invoermethoden.
- "idle-inhibit" — blokkering van de screensaver (scherminvoeging) activatie.
- "input-timestamps" — tijdstempels voor invoer-gebeurtenissen.
- "keyboard-shortcuts-inhibit" — beheer van het koppelen van sneltoetsen en sneltoetsen.
- "linux-explicit-synchronization" — Linux-specifiek mechanisme voor buffer-synchronisatie in verband met het oppervlak.
- "pointer-gestures" — beheer van aanraakschermbedieningen.
- "pointer constraints" — beperkingen van aanwijsinstellingen (blokkering).
- "primary-selection" — werkt, net als bij X11, met de primaire klembord (primary selection), waarvan de invoer meestal wordt uitgevoerd met de middelste muisknop.
- "relative pointer events" — relatieve aanwijsgebeurtenissen.
- "tekst-invoer" — organisatie van tekstinvoer.
- "xdg-foreign" — interface voor interactie met de oppervlakken van een 'buur'-client.
- «xdg-decoration» — het renderen van vensterdecoraties aan de serverzijde.
- «xdg-output» — aanvullende informatie over de videouitgang (gebruikt voor fractale schaalverhouding).
- «xwayland-keyboard-grab» — het vastleggen van invoer in XWayland-applicaties.
Bron: opennet.ru
