Wayland-protocols 1.43-paketet har släppts, som innehåller en uppsättning protokoll och tillägg som kompletterar bas-Wayland-protokollet och ger de möjligheter som krävs för att bygga sammansatta servrar och användarmiljöer.
Wayland-Protocols 1.43 lägger till ett nytt protokoll "xdg-toplevel-tag" som gör det möjligt för Wayland-klienter att koppla taggar till toppnivåytor som kompositionsservern kan använda för att identifiera fönster efter att programmet har startats om (till exempel kan ett program ställa in taggar för "huvudfönster" och "inställningar" för huvudfönstret och inställningsfönstret). Sådan identifiering är användbar för att återställa fönsters position, storlek och egenskaper efter en omstart, och för att definiera specialregler för enskilda fönstertyper.
Andra förbättringar inkluderar tillägget av information om begränsningar för ytkantoperationer på översta nivån till xdg-shell-protokollet, vilket kan användas av kompositionshanteraren för att informera Wayland-klienter om begränsningar, till exempel om fönster kan ändras i storlek eller inte.
Alla protokoll går sekventiellt igenom utvecklings-, testnings- och stabiliseringsfaser. Efter att ha slutfört utvecklingsstadiet (den "instabila" kategorin), placeras protokollet i "staging"-grenen och inkluderas officiellt i wayland-protokollen, och efter att testningen är klar, flyttas den till den stabila kategorin. Protokoll från kategorin "staging" kan redan användas i sammansatta servrar och klienter där relaterad funktionalitet krävs. Till skillnad från kategorin "instabil" förbjuder "staging" att göra ändringar som bryter mot kompatibiliteten, men om problem och brister upptäcks under testning utesluts inte ersättning med en ny betydande version av protokollet eller ett annat Wayland-tillägg.
För att påskynda leveransen av protokoll till utvecklare och för att uppmuntra tidig implementering av protokoll i befintliga projekt, från och med den tidigare utgåvan, lades en "experimentell" fas till, som möjliggör ändringar som bryter kompatibiliteten och tillägg av "rå" protokoll som gradvis kan föras till rätt nivå. Medan ett protokoll behöver bilda ett supportteam och få ett visst antal bekräftelser (ACK) från granskare för att gå in i stadiefasen, behöver det bara inte ta emot några invändningar (NACK) under den två veckor långa granskningsperioden för att gå in i experimentfasen.
Wayland-protokollsviten innehåller för närvarande följande stabila protokoll, som är bakåtkompatibla:
- "viewporter" - låter klienten utföra skalnings- och ytkantskärningsåtgärder på serversidan.
- "presentation-time" - ger videovisning.
- "xdg-shell" är ett gränssnitt för att skapa och interagera med ytor som fönster, så att du kan flytta dem runt på skärmen, komprimera, expandera, ändra storlek, etc.
- "linux-dmabuf" - ger möjligheter för att skapa wl_buffers baserade på DMA-BUF.
- "surfplatta" - organisering av input från grafiska surfplattor.
Protokoll testade i "staging"-grenen:
- drm-lease - tillhandahåller de resurser som krävs för att generera en stereobild med olika buffertar för vänster och höger öga vid utmatning till virtual reality-headset.
- "ext-session-lock" - definierar ett sätt att låsa en session, till exempel när skärmsläckaren körs eller autentiseringsdialogrutan visas.
- "single-pixel-buffer" - låter dig skapa enpixelbuffertar som inkluderar fyra 32-bitars RGBA-värden.
- "xdg-activation" - låter dig överföra fokus mellan olika ytor på första nivån (till exempel, med hjälp av xdg-activation kan en applikation byta fokus till en annan).
- content-type – Tillåter klienter att skicka information om innehållet som visas till den sammansatta servern, vilket kan användas för att optimera innehållsmedvetet beteende, som att ställa in specifika DRM-egenskaper som "innehållstyp". Stöd för följande innehållstyper deklareras: inget (ingen information om datatypen), foto (utmatning av digitala foton, kräver minimal bearbetning), video (video eller animation, mer exakt synkronisering krävs för att undvika stamning) och spel (lansering spel, utdata från minsta fördröjning).
- ext-idle-notify - Tillåter sammansatta servrar att skicka meddelanden till klienter om användarinaktivitet, vilket kan användas för att aktivera ytterligare energisparlägen efter en viss tids inaktivitet.
- rivkontroll - låter dig inaktivera vertikal synkronisering (VSync) med en vertikal dämpningspuls i helskärmsapplikationer, som används för att skydda mot rivning i utdata. I multimediaapplikationer är artefakter på grund av rivning en oönskad effekt, men i spelprogram kan artefakter tolereras om hanteringen av dem orsakar ytterligare förseningar.
- ext-foreign-toplevel-list - Hämtar information om ytor placerade på översta nivån, vilket gör att du kan organisera fönster för att docka ovanpå annat innehåll, till exempel för att fästa dina egna paneler och fönsteromkopplare.
- security-context - låter dig identifiera klienter med hjälp av sandlådeisolering. En klient kan registrera en ny anslutning till en Wayland-baserad sammansatt server och bifoga en säkerhetskontext till den, varefter den sammansatta hanteraren kommer att begränsa de möjligheter som är tillgängliga för den etablerade anslutningen baserat på det angivna säkerhetskontexten.
- cursor-shape är ett alternativt sätt att anpassa markörens utseende, baserat på att skicka en serie av markörbilder istället för att knäppa till en yta (wl_surface).
- "ext-transient-seat" - utformad för att skapa tillfälliga oberoende sessioner (säten) designade för användning med virtuella inmatningsenheter. Till exempel, när du implementerar möjligheten att ansluta till ett fjärrskrivbord, låter protokollet dig skapa en separat session för varje användare med ett virtuellt tangentbord och mus.
- "xdg-toplevel-drag" - utökar "dra & släpp"-mekanismen med möjligheten att fästa fönster på toppnivå till en dragoperation, som till exempel kan användas för att organisera dragning av verktygsfält eller webbläsarflikar med musen. Det nya protokollet låter dig skapa löstagbara delar av ett fönster som, när de dras från det fönstret, blir nya fönster och kan flyttas ovanpå det befintliga fönstret innan de sätts fast igen.
- "xdg-dialog" - låter dig tilldela dialogspecifika attribut till ytor på toppnivå, till exempel kan du skapa modala dialoger som blockerar användarinteraktion med resten av gränssnittet.
- "linux-drm-syncobj" - tillhandahåller verktyg för explicit buffertsynkronisering med DRM (Direct Rendering Manager) synkroniseringsobjekt. Det antas att i samband med synkronisering vid rendering till en buffert, kommer det föreslagna protokollet att förbättra arbetet med drivrutiner baserade på Vulkan- och OpenGL-grafik-API:erna (implementeringen är baserad på hanterare i drivrutinerna). Det nya protokollet gör det möjligt att säkerställa att en ritoperation till en buffert är klar innan kompositeringshanteraren visar den bufferten.
- alpha-modifier, som tillåter klienter att ändra nivån av transparens på ytan och överföra operationer för att säkerställa transparens till sidan av den sammansatta servern, vilket i sin tur kan omdirigera dessa operationer till KMS.
- xdg-toplevel-icon - bind ikonen till toppnivåfönstret.
- ext-image-capture-source och ext-image-copy-capture - organisation av fånga innehåll som visas på skärmen.
- xdg-system-bell - låter dig mata ut en systemsignal, som till exempel kan användas som en varning i en terminalemulator. Formen på utsignalen bestäms av komposithanteraren, det kan inte bara vara ett ljud utan ett visuellt svar.
- fifo - implementerar en FIFO-mekanism (först in, först ut) för att behandla innehållsuppdateringskön för den visade ytan. På den praktiska sidan tillåter protokollet utdata att använda väntar på att vertikal skanning ska slutföras (vblank) istället för att använda callback-anrop varje gång det är redo att visa en ny ram, vilket löser problemet med hög GPU-belastning vid användning av VSync.
- commit-timing - låter dig binda en tidsgräns till ytinnehållet (den sammansatta servern ska spegla innehållsändringen om möjligt efter den angivna tiden, men inte tidigare).
- ext-data-control - Tillåter privilegierade klienter att kontrollera databehandling, till exempel för att implementera urklippshanterare.
- extern arbetsyta — implementerar konceptet virtuella skrivbord och erbjuder händelser med information om skrivbordens tillstånd, samt möjligheten att aktivera och inaktivera skrivbord. Protokollet kan användas för att skapa instrumentpaneler och indikatorer som visar en lista över tillgängliga virtuella skrivbord och tillåter växling mellan dem.
- färghantering — ger funktioner för färghantering och stöd för HDR (High Dynamic Range). Detta tillägg gör det möjligt för klientprogram att hämta information om färgrelaterade egenskaper hos utdataenheter och skicka data om färgegenskaperna hos sitt eget innehåll till den sammansatta servern. I kompositläge, server Denna information kan användas för automatisk färghantering när innehåll visas på olika utdataenheter, till exempel för att konvertera innehåll till en presentation som är lämplig för visning på HDR-skärmar. ICC-profiler används för att beskriva färgrymder.
Protokoll som utvecklas i den "instabila" grenen:
- "fullscreen-shell" - kontroll över arbetet i helskärmsläge.
- "input-metod" - bearbetning av inmatningsmetoder.
- "idle-inhibit" - blockerar start av skärmsläckaren (skärmsläckare).
- "input-timestamps" - tidsstämplar för ingångshändelser.
- "tangentbord-shortcuts-inhibit" - styr bifogningen av kortkommandon och snabbtangenter.
- "linux-explicit-synchronization" är en Linux-specifik mekanism för synkronisering av ytbundna buffertar.
- "pekargester" - styrning från pekskärmar.
- "pekare begränsningar" - pekare begränsningar (blockering).
- "primärt urval" - i analogi med X11 säkerställer det driften av det primära urklippet (primärt urval), från vilken information vanligtvis infogas med den mellersta musknappen.
- "relativa pekarhändelser" - relativa pekarhändelser.
- "textinmatning" - organisation av textinmatning.
- "xdg-foreign" är ett gränssnitt för att interagera med ytorna på "grannklienten".
- "xdg-decoration" - rendering av fönsterdekorationer på serversidan.
- "xdg-output" - ytterligare information om videoutgången (används för fraktionerad skalning).
- "xwayland-keyboard-grab" - fånga indata i XWayland-applikationer.
Källa: opennet.ru
