De release van het pakket wayland-protocols 1.49 is aangekondigd, dat een set protocollen en uitbreidingen bevat die de basisprotocollen van Wayland aanvullen en de functionaliteit bieden die nodig is voor het opzetten van compositor servers en gebruikersomgevingen.
In de nieuwe versie:
- De experimentele protocol xx-fractional-scale is toegevoegd, dat de mogelijkheid biedt om het systeem van logische coördinaten te schalen, waarbij waarden worden opgegeven als gehele getallen, om de nauwkeurigheid van het positioneren te verhogen en de resolutie van logische coördinaten te vergroten tot afzonderlijke pixels. Deze mogelijkheid lost het probleem op van de beperkte resolutie van het systeem van logische coördinaten, die onvoldoende is voor positioning op het niveau van afzonderlijke pixels, wat noodzakelijk is voor de volledige implementatie van fractale schaalvergroting.
- In het linux-dmabuf protocol is ondersteuning toegevoegd voor systemen met meerdere GPU's. Op dergelijke systemen kan de cliënt overeenkomen met de compositors welke GPU moet worden gebruikt. server welke van de GPU's moet worden gebruikt.
- In het color-management-v1 protocol is ondersteuning toegevoegd voor afbeeldingsmetadata in het BT.2100-formaat voor gebruik in compositors. de server specifieke handlers die correct HDR-inhoud kunnen weergeven die is gemaakt voor Windows.
Alle protocollen ondergaan successieve fasen van ontwikkeling, testen en stabilisatie. Na de afronding van de ontwikkelingsfase (categorie 'unstable') wordt het protocol verplaatst naar de 'staging' tak en officieel opgenomen in de set wayland-protocols, en na de afronding van de testing verplaatst het naar de categorie stabiele protocollen. Protocollen uit de categorie 'staging' kunnen al worden toegepast in composities. servers en clients waarbij een gerelateerde functionaliteit vereist is. In tegenstelling tot de categorie 'unstable' zijn wijzigingen die de compatibiliteit verbreken in 'staging' niet toegestaan, maar in het geval van ontdekte problemen en tekortkomingen tijdens het testen, sluit men niet uit dat er een significante nieuwe versie van het protocol of een andere Wayland-uitbreiding kan worden vervangen.
Om de tijdige overdracht van protocollen naar ontwikkelaars te versnellen en de vroege implementatie van protocollen in bestaande projecten te stimuleren, is er sinds de vorige release een fase 'experimental' toegevoegd, waarin wijzigingen die de compatibiliteit verbreken en het toevoegen van 'ruwe' protocollen zijn toegestaan, die geleidelijk kunnen worden verfijnd. Als een protocol in de fase 'staging' moet komen, is het nodig om een ondersteunend team te vormen en een bepaald aantal bevestigingen (ACK) van beoordelingsdeelnemers te verkrijgen, maar voor 'experimental' is het voldoende dat er gedurende een beoordelingsperiode van twee weken geen bezwaren (NACK) zijn.
Momenteel omvat de set wayland-protocols de volgende stabiele protocollen die compatibiliteit waarborgen:
- viewporter' - stelt de client in staat om acties uit te voeren voor schaling en het bijsnijden van de randen van een oppervlakte aan de kant. de server.
- 'presentation-time' - zorgt voor videoweergave.
- 'xdg-shell' - interface voor het creëren en interactie met oppervlakken als vensters, die het mogelijk maakt ze over het scherm te verplaatsen, te minimaliseren, maximaliseren, van grootte te veranderen, enz.
- 'linux-dmabuf' - biedt mogelijkheden voor het creëren van wl_bufferen op basis van DMA-BUF.
- '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» — maakt het mogelijk om de focus tussen verschillende eerste niveau oppervlakken over te dragen (bijvoorbeeld door middel van
xdg-activation kan één applicatie de focus naar 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 tools voor expliciete synchronisatie van buffers met behulp van synchronisatieobjecten van DRM (Direct Rendering Manager). In de context van synchronisatie bij het afbeelden in een buffer zal het voorgestelde protocol naar verwachting de werking met drivers op basis van grafische API's zoals Vulkan en OpenGL verbeteren (de implementatie is gebaseerd op handlers in de drivers). Het nieuwe protocol zorgt ervoor dat de tekenoperatie in de buffer is voltooid voordat de compositor 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 te koppelen aan de inhoud van een oppervlak (de compositor server moet de wijziging van de inhoud indien mogelijk binnen de opgegeven tijd weergeven, maar niet eerder).
- 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.
- kleurenbeheer — biedt mogelijkheden voor kleuraanpassing en ondersteuning van een breed dynamisch bereik (HDR, High Dynamic Range). Met de toegevoegde extensie kunnen client-applicaties informatie ontvangen over de kleurweergave-eigenschappen van uitvoerapparaten en gegevens over de kleurweergave-eigenschappen van hun eigen inhoud doorgeven aan de compositieserver. In de compositieserver kan deze informatie worden gebruikt voor automatische kleurbeheer bij het weergeven van inhoud op verschillende uitvoerapparaten, bijvoorbeeld voor het converteren van inhoud in een format dat geschikt is voor weergave op HDR-monitoren. Voor het beschrijven van kleurenschema's worden ICC-profielen gebruikt.
- xdg-toplevel-tag — stelt Wayland-clients in staat om tags aan top-level oppervlakten toe te voegen, die de composietserver kan gebruiken om vensters te identificeren na het opnieuw opstarten van de applicatie (bijvoorbeeld kan de applicatie de tags "hoofdvenster" en "instellingen" instellen voor het hoofdvenster en het instellingenvenster). Dergelijke identificatie is nuttig voor het herstellen van de positie, maat en kenmerken van vensters na het opnieuw opstarten, evenals voor het definiëren van speciale regels voor verschillende soorten vensters.
- kleur-representatie — definitie van de kleurweergave van een Wayland-oppervlak. Wayland-clients kunnen metadata doorgeven die nodig zijn om transparantie, kleurmodel, subdiscretisering en quantisatie-bereik te bepalen, en die toegepast worden bij de conversie van de buffer met gegevens die overeenkomen met het kleurmodel YCbCr naar de RGB-weergave.
- ext-achtergrond-effect — toepassing van effecten op de semi-transparante delen van een Wayland-oppervlak, zoals achtergrondvervaging.
- pointer-warp — stelt een applicatie in staat de aanwijzer onmiddellijk naar een opgegeven positie te verplaatsen.
- xdg-session-management — functionaliteiten voor het herstellen van de staat en positie van vensters na een onderbroken sessie, bijvoorbeeld na een crash van de compositor server of applicatie.
Protocollen die ontwikkeld worden in de 'experimental' tak:
- xx-sessiebeheer — herstel van de vensterstatus voor onderbroken sessies (bijvoorbeeld na een crash van de compositormanagers).
- xx-input-method — biedt applicaties de mogelijkheid om invoermethoden voor compositor servers te implementeren en de ingevoerde tekst te vormen, wat gebruikt kan worden voor het creëren van virtuele toetsenborden en IME-laag (Input Method Editor) voor het verwerken van invoer.
- xx-text-input — stelt compositor servers in staat om invoermethoden te implementeren en tekst naar applicaties te verzenden. Het protocol standaardiseert de interactie tussen de compositor server en applicaties, en maakt het mogelijk om functionaliteiten te beheren zoals het verzenden van ingevoerde tekst, het verwerken van gebeurtenissen met betrekking tot focusverandering en het rekening houden met de specificiteit van invoervelden (taal, tekstselectie, type inhoud).
- xx-cutouts — om informatie over uitsparingen op het scherm te krijgen (bijvoorbeeld gebieden onder de frontcamera op het smartphonescherm).
- xx-zones — voor het creëren en toevoegen van top-level vensters in «zones» — omgevingen met hun eigen coördinatenruimte. Het protocol maakt een logische plaatsing van vensters mogelijk, waarbij elk venster wordt geplaatst ten opzichte van een ander venster.
- xx-keyboard-filter — voor het onderscheppen van door de klant geselecteerde toetsenbordevenementen, het wijzigen van invoerevenementen of het blokkeren van de overdracht van bepaalde evenementen naar de Wayland-oppervlakte waarop de invoerfocus is ingesteld.
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
