Wayland (näyttöpalvelinprotokolla) - Wayland (display server protocol)

Wayland
Wayland Logo.svg
Wayland-weston 8.0.0-2-2020-08-04.png
Weston , Wayland -palvelimen viitetoteutus .
Alkuperäinen kirjoittaja (t) Kristian Høgsberg
Kehittäjä (t) freedesktop.org et ai.
Ensimmäinen julkaisu 30. syyskuuta 2008 ; 13 vuotta sitten ( 2008-09-30 )
Vakaa julkaisu
Wayland: 1.19, Weston: 8.0 / 27. tammikuuta 2021 ; 8 kuukautta sitten ( 2021-01-27 )
Varasto
Kirjoitettu sisään C
Käyttöjärjestelmä virallinen: Linux
epävirallinen: NetBSD , FreeBSD , DragonFly BSD
Tyyppi
Lisenssi MIT -lisenssi
Verkkosivusto wayland .freedesktop .org

Wayland on viestintäprotokolla, joka määrittää näyttöpalvelimen ja sen asiakkaiden välisen viestinnän sekä tämän protokollan C -kirjaston toteutuksen. Wayland -protokollaa käyttävää näyttöpalvelinta kutsutaan Wayland -säveltäjäksi , koska se suorittaa lisäksi yhdistelmäikkunan hallinnan tehtävän .

Wayland on kehittänyt joukko vapaaehtoisia aluksi johtama Kristian Høgsberg kuin vapaan ja avoimen lähdekoodin yhteisön johtamaan, jonka tavoitteena korvata X Window System on moderni, turvallinen yksinkertaisempi ikkunointijärjestelmä vuonna Linux ja muut Unix- käyttöjärjestelmiin . Projektin lähdekoodi julkaistaan MIT -lisenssin , sallitun ilmaisen ohjelmistolisenssin , ehtojen mukaisesti .

Osana ponnistelujaan Wayland -projekti kehittää myös Weston -nimisen Wayland -säveltäjän viitetoteutuksen .

Yleiskatsaus

  1. Evdev moduuli Linux-ytimen saa tapahtuman ja lähettää sen Wayland latoja .
  2. Wayland -säveltäjä katsoo kohtauskaavionsa läpi määrittääkseen, mikä ikkuna pitäisi vastaanottaa tapahtuma. Kohtauskuvaaja vastaa näytöllä näkyvää ja Wayland -säveltäjä ymmärtää muutokset, joita se on saattanut soveltaa kohtauskuvan elementteihin. Siten Wayland -säveltäjä voi valita oikean ikkunan ja muuttaa näytön koordinaatit ikkunan paikallisiksi koordinaateiksi käyttämällä käänteisiä muunnoksia. Ikkunaan sovellettavat muunnostyypit rajoittuvat vain siihen, mitä säveltäjä voi tehdä, kunhan se voi laskea käänteisen muunnoksen syöttötapahtumille.
  3. Kuten X -tapauksessa, kun asiakas vastaanottaa tapahtuman, se päivittää käyttöliittymän vastauksena. Mutta Wayland -tapauksessa renderointi tapahtuu asiakkaan toimesta EGL: n kautta , ja asiakas lähettää vain pyynnön säveltäjälle ilmoittamaan päivitetyn alueen.
  4. Wayland-säveltäjä kerää asiakkailta vahingonkorvauspyyntöjä ja sommittelee sitten näytön uudelleen. Kirjoittaja voi sitten suoraan antaa ioctl : n sivun kääntämisen ajoittamiseksi KMS: n kanssa .

Wayland Display Server -projektin aloitti Red Hat -kehittäjä Kristian Høgsberg vuonna 2008.

Vuoden 2010 alusta lähtien Linux -työpöydän grafiikka on siirtynyt "kasa renderöintirajapintoja ... kaikki puhuu maailmankaikkeuden keskellä olevalle X -palvelimelle " kohti Linux -ytimen ja sen osien (eli suoran renderointiinfrastruktuurin) DRI) , Direct Rendering Manager (DRM) ) "keskellä", "ikkunat, kuten X ja Wayland ... pois kulmasta". Tämä on "paljon yksinkertaistettu grafiikkajärjestelmä, joka tarjoaa enemmän joustavuutta ja parempaa suorituskykyä".

Høgsberg olisi voinut lisätä laajennuksen X: ään, kuten monet viimeaikaiset projektit ovat tehneet, mutta mieluummin "[työntää] X: n pois asiakkaiden ja laitteiston väliseltä kuumatieltä" projektin UKK: ssa selitetyistä syistä:

Mikä on erilaista nyt se, että paljon infrastruktuuria on siirtynyt X-palvelin ytimeen (muistin hallinta, komennonajoitusrajoitteita, -asetus ) tai kirjastot ( Cairo , pixman, freetype , fontconfig , Pango jne), ja on hyvin vähän vasen, jonka on tapahduttava keskuspalvelinprosessissa. ... [X -palvelimella] on valtava määrä toimintoja, joita sinun on tuettava väittääksesi puhuvasi X -protokollaa, mutta kukaan ei koskaan käytä tätä. ... Tämä sisältää kooditaulukot, kuvioiden rasteroinnin ja välimuistin, XLFD: t (vakavasti, XLFD: t!) Ja koko ydinhahmonnussovellusliittymän, jonka avulla voit piirtää juovia viivoja, monikulmioita, leveitä kaaria ja paljon muuta 1980-luvun tyylistä grafiikkaa alkukantaiset. Moneen olemme pystyneet pitämään X.org palvelimen moderni lisäämällä laajennuksen kuten xrandr , XRender- ja Composite ... Kanssa Waylandiin voimme siirtää X-palvelin ja kaikki sen perintö tekniikka valinnaisen koodin polku. Pääsy pisteeseen, jossa X -palvelin on yhteensopivuusvaihtoehto ydintoimintojärjestelmän sijaan, kestää jonkin aikaa, mutta emme koskaan saavuta sitä, jos [emme] suunnittele sitä.

Wayland koostuu protokollasta ja viitetoteutuksesta nimeltä Weston . Projekti kehittää myös GTK- ja Qt -versioita, jotka renderöitään Waylandiin X: n sijaan. Useimpien sovellusten odotetaan saavan tukea Waylandille jonkin näistä kirjastoista ilman muutoksia sovellukseen.

Waylandin alkuperäiset versiot eivät ole tarjonneet verkon läpinäkyvyyttä , vaikka Høgsberg totesi vuonna 2010, että verkon läpinäkyvyys on mahdollista. Sitä kokeiltiin Google Summer of Code -projektina vuonna 2011, mutta se ei onnistunut. Adam Jackson on kuvitellut tarjoavansa etäyhteyden Wayland-sovellukseen joko "pikselikaappauksella" (kuten VNC ) tai saamalla sen lähettämään "renderointikomentovirran" verkon kautta (kuten RDP , SPICE tai X11 ). Vuoden 2013 alusta Høgsberg kokeilee verkon läpinäkyvyyttä käyttämällä välityspalvelinta Wayland -palvelinta, joka lähettää pakatut kuvat todelliselle säveltäjälle. Elokuussa 2017 GNOME näki ensimmäisen tällaisen pikseliä kaapivan VNC-palvelimen toteutuksen Waylandin alla.

Ohjelmistoarkkitehtuuri

Protokolla -arkkitehtuuri

Wayland -protokolla -arkkitehtuurissa asiakas ja säveltäjä kommunikoivat Wayland -protokollan kautta käyttäen viitetoteutuskirjastoja.

Wayland -protokolla noudattaa asiakas -palvelin -mallia , jossa asiakkaat ovat graafisia sovelluksia, jotka pyytävät pikselipuskurien näyttämistä näytöllä, ja palvelin (säveltäjä) on näiden puskurien näyttöä ohjaava palveluntarjoaja.

Wayland-viitetoteutus on suunniteltu kaksikerroksiseksi protokollaksi:

Vaikka matalan tason taso kirjoitettiin manuaalisesti C- kielellä , korkean tason kerrotaan automaattisesti XML- muotoon tallennetun protokollan elementtien kuvauksesta . Aina kun tämän XML-tiedoston protokollakuvaus muuttuu, C-lähdekoodi, joka toteuttaa tämän protokollan, voidaan luoda uudelleen sisällyttämään uudet muutokset, mikä mahdollistaa erittäin joustavan, laajennettavan ja virheenkestävän protokollan.

Wayland -protokollan viitetoteutus on jaettu kahteen kirjastoon : Wayland -asiakkaiden libwayland-clientkäyttöön käytettävä kirjasto ja Wayland -säveltäjien käytettävä kirjasto libwayland-server.

Protokollan yleiskatsaus

Wayland-protokollaa kuvataan "asynkroniseksi olio- protokollaksi". Objektisuuntautuneisuus tarkoittaa, että säveltäjän tarjoamat palvelut esitetään sarjana esineitä, jotka elävät samalla säveltäjällä. Jokainen objekti toteuttaa käyttöliittymän, jolla on nimi, useita menetelmiä (kutsutaan pyyntöiksi ) sekä useita niihin liittyviä tapahtumia . Jokaisessa pyynnössä ja tapahtumassa on nolla tai useampia argumentteja, joista jokaisella on nimi ja tietotyyppi . Protokolla on asynkroninen siinä mielessä, että pyyntöjen ei tarvitse odottaa synkronoituja vastauksia tai ACK- vastauksia , jolloin vältetään edestakainen viiveaika ja parannetaan suorituskykyä.

Wayland -asiakkaat voivat tehdä pyynnön (menetelmäkutsun) jollekin objektille, jos objektin käyttöliittymä tukee kyseistä pyyntöä. Asiakkaan on myös toimitettava vaaditut tiedot tällaisen pyynnön perusteluihin. Näin asiakkaat pyytävät palveluja säveltäjältä. Kirjoittaja puolestaan ​​lähettää tiedot takaisin asiakkaalle aiheuttamalla objektin lähettämään tapahtumia (luultavasti myös argumentteilla). Säveltäjä voi lähettää näitä tapahtumia vastauksena tiettyyn pyyntöön tai asynkronisesti sisäisten tapahtumien (kuten syöttölaitteen tapahtumien) tai tilamuutosten mukaan. Säveltäjä ilmoittaa myös virheolosuhteista tapahtumiksi.

Jotta asiakas voi tehdä pyynnön objektille, sen on ensin ilmoitettava palvelimelle tunnusnumero, jota se käyttää objektin tunnistamiseen. Säveltäjässä on kahdenlaisia ​​objekteja: globaalit objektit ja ei-globaalit objektit. Säveltäjä mainostaa globaaleja objekteja asiakkaille, kun ne luodaan (ja myös kun ne tuhotaan), kun taas ei-globaalit objektit luovat yleensä muut objektit, jotka ovat jo olemassa osana niiden toiminnallisuutta.

Rajapinnat ja niiden pyynnöt ja tapahtumat ovat keskeisiä elementtejä, jotka määrittävät Wayland -protokollan. Jokainen protokollan versio sisältää joukon rajapintoja sekä niiden pyynnöt ja tapahtumat, joiden odotetaan olevan missä tahansa Wayland -säveltäjässä. Vaihtoehtoisesti Wayland -säveltäjä voi määritellä ja toteuttaa omia rajapintojaan, jotka tukevat uusia pyyntöjä ja tapahtumia, mikä laajentaa toiminnallisuutta ydinprotokollan ulkopuolelle. Protokollan muutosten helpottamiseksi jokainen käyttöliittymä sisältää nimen lisäksi "versionumero" -määritteen; Tämä ominaisuus mahdollistaa saman käyttöliittymän varianttien erottamisen. Jokainen Wayland -säveltäjä paljastaa käytettävissä olevien rajapintojen lisäksi myös näiden rajapintojen tuetut versiot.

Waylandin ydinrajapinnat

Wayland -protokollan nykyisen version rajapinnat määritellään Wayland -lähdekoodin tiedostoprotokollassa /wayland.xml . Tämä on XML -tiedosto, joka luettelee nykyisen version olemassa olevat rajapinnat sekä niiden pyynnöt, tapahtumat ja muut määritteet. Tämä rajapintasarja on vähimmäisvaatimus, joka minkä tahansa Wayland -säveltäjän on toteutettava.

Jotkut Wayland -protokollan perusliittymistä ovat:

  • wl_display  - ydin globaali objekti, erityinen objekti itse Wayland -protokollan koteloimiseksi
  • wl_registry  - maailmanlaajuinen rekisteriobjekti, jossa säveltäjä rekisteröi kaikki globaalit objektit, jotka se haluaa olla kaikkien asiakkaiden saatavilla
  • wl_compositor  - objekti, joka edustaa säveltäjää ja vastaa eri pintojen yhdistämisestä yhteen lähtöön
  • wl_surface  - objekti, joka edustaa ruudun suorakulmaista aluetta, jonka määrittävät sijainti, koko ja pikselisisältö
  • wl_buffer  - objekti, joka liitettäessä wl_surface -objektiin tarjoaa näytettävän sisällön
  • wl_output  - objekti, joka edustaa näytön näyttöaluetta
  • wl_pointer , wl_keyboard , wl_touch  - objektit, jotka edustavat erilaisia ​​syöttölaitteita, kuten osoittimia tai näppäimistöjä
  • wl_seat  - kohde, joka edustaa istuinta (tulo-/lähtölaitteiden joukko) monipaikkaisissa kokoonpanoissa

Tyypillinen Wayland -asiakasistunto alkaa avaamalla yhteyden säveltäjään wl_display -objektin avulla. Tämä on erityinen paikallinen objekti, joka edustaa yhteyttä eikä asu palvelimessa. Käyttämällä käyttöliittymänsä asiakas voi pyytää yleistä objektia wl_registry säveltäjältä, jossa kaikki yleisten objektien nimet asuvat, ja sitoa ne, joista asiakas on kiinnostunut. Yleensä asiakas sitoo vähintään wl_compositor -objektin, josta se pyytää sitä tai lisää wl_surface -objekteja, jotka näyttävät sovelluksen tuotoksen näytöllä.

Wayland -laajennusrajapinnat

Wayland -säveltäjä voi määrittää ja viedä omia lisärajapintoja. Tätä ominaisuutta käytetään protokollan laajentamiseen ydinrajapintojen tarjoamien perustoimintojen ulkopuolelle, ja siitä on tullut tavanomainen tapa toteuttaa Wayland -protokollalaajennuksia. Jotkut säveltäjät voivat halutessaan lisätä mukautettuja käyttöliittymiä erikoistuneiden tai ainutlaatuisten ominaisuuksien tarjoamiseksi. Waylandin referenssikomposiittori Weston käytti niitä uusien kokeellisten rajapintojen toteuttamiseen uusien konseptien ja ideoiden testialustana, joista osa tuli myöhemmin osaksi ydinprotokollaa (kuten Wayl 1.4: ssä lisätty wl_subsurface -käyttöliittymä).

Laajennusprotokollat ​​ydinprotokollaan

XDG-Shell-protokolla

XDG-Shell-protokolla (katso freedesktop.org XDG: lle) on laajennettu tapa hallita pintoja Wayland-kompostoijien (ei vain Westonin) alla. Perinteinen tapa käsitellä (maksimoida, pienentää, koko näytön jne.) Pintoja on käyttää wl_shell _*() -toimintoja, jotka ovat osa Wayland-ydinprotokollaa ja jotka sijaitsevat libwayland-clientissa . Wayland-säveltäjän pitäisi päinvastoin toteuttaa xdg-shell-protokolla. Löydät siis xdg-shell-client-protocol.h -otsikon Westonin lähdepuusta. Jokaisen Wayland -säveltäjän on tarkoitus tarjota oma toteutuksensa.

Kesäkuusta 2014 lähtien XDG-Shell-protokollaa ei ollut versioitu ja se on edelleen altis muutoksille.

xdg_shell on protokolla, jonka tarkoituksena on korvata wl_shell pitkällä aikavälillä, mutta se ei ole osa Waylandin ydinprotokollaa. Se alkaa epävakaana sovellusliittymänä, jota on tarkoitus käyttää aluksi kehityspaikkana, ja kun ominaisuudet on määritelty useiden työpöytäkuorien edellyttämällä tavalla, siitä voidaan tehdä lopulta vakaa. Se tarjoaa lähinnä kaksi uutta rajapintaa: xdg_surface ja xdg_popup. Xdg_surface-käyttöliittymä toteuttaa työpöytätyylisen ikkunan, jota voidaan siirtää, muuttaa, suurentaa jne.; se tarjoaa pyynnön lapsen/vanhemman suhteen luomiseksi. Xdg_popup-käyttöliittymä toteuttaa työpöydän tyyppisen ponnahdusikkunan/valikon; xdg_popup on aina ohimenevä toiselle pinnalle, ja siinä on myös implisiittinen tartunta.

IVI-Shell-protokolla

IVI-Shell on Wayland-ydinprotokollan laajennus, joka on suunnattu ajoneuvon sisäisiin tietoviihdelaitteisiin (IVI).

Renderointimalli

Wayland -säveltäjä ja sen asiakkaat käyttävät EGL : ää suoraan kehyksen puskuriin ; X.Org -palvelin, jossa on XWayland ja Glamour .

Wayland -protokolla ei sisällä renderointirajapintaa. Sen sijaan Wayland noudattaa suoraa renderöintimallia , jossa asiakkaan on renderoitava ikkunan sisältö puskuriin, joka on jaettavissa säveltäjän kanssa. Tätä tarkoitusta varten asiakas voi halutessaan tehdä kaiken renderöinnin itse, käyttää renderöintikirjastoa, kuten Kairoa tai OpenGL: ää , tai luottaa Wayland-tuella varustettujen korkean tason widget-kirjastojen, kuten Qt- tai GTK- mallinnusmoottoriin . Asiakas voi myös valinnaisesti käyttää muita erikoistuneita kirjastoja suorittamaan tiettyjä tehtäviä, kuten Freetype varten kirjasimenpiirtojärjestelmän .

Tuloksena oleva puskuri renderoidun ikkunan sisällön kanssa tallennetaan wl_buffer -objektiin. Tämän objektin sisäinen tyyppi riippuu toteutuksesta. Ainoa vaatimus on, että sisältötiedot on jaettava asiakkaan ja säveltäjän välillä. Jos asiakas käyttää ohjelmiston (CPU) renderöintilaitetta ja tulos tallennetaan järjestelmämuistiin , asiakas ja säveltäjä voivat käyttää jaettua muistia puskuriviestinnän toteuttamiseen ilman ylimääräisiä kopioita. Wayland -protokolla tarjoaa jo luontaisesti tällaisen jaetun muistin puskurin wl_shm- ja wl_shm_pool -rajapintojen kautta. Tämän menetelmän haittana on, että säveltäjä saattaa joutua tekemään lisätyötä (yleensä kopioimaan jaetut tiedot GPU: lle) sen näyttämiseksi, mikä johtaa hitaampaan grafiikan suorituskykyyn.

Tyypillisin tapaus on, että asiakas renderöi suoraan videomuistipuskuriin käyttämällä laitteistokiihdytettyä sovellusliittymää (GPU), kuten OpenGL , OpenGL ES tai Vulkan . Asiakas ja säveltäjä voivat jakaa tämän GPU-tilan puskurin käyttämällä erityistä käsittelijää viittaamaan siihen. Tämän menetelmän avulla säveltäjä voi välttää ylimääräisen datan kopioimisen päämuistipuskurin asiakas-komposiittori-GPU-menetelmän kautta, mikä johtaa nopeampaan grafiikan suorituskykyyn, ja siksi se on edullinen. Säveltäjä voi edelleen optimoida näytössä näytettävän lopullisen kohtauksen koostumuksen käyttämällä samaa laitteistokiihdytyssovellusliittymää kuin sovellusliittymä.

Kun renderöinti on suoritettu jaetussa puskurissa, Wayland -asiakkaan tulee kehottaa säveltäjää esittämään puskurin renderoitu sisältö näytöllä. Tätä tarkoitusta varten asiakas sitoo puskuriobjektin, joka tallentaa renderoidun sisällön pintaobjektiin, ja lähettää "sitoutumispyynnön" pinnalle siirtämällä puskurin tehokkaan hallinnan säveltäjälle. Sitten asiakas odottaa säveltäjän vapauttavan puskurin (tapahtuman osoittama), jos se haluaa käyttää puskuria uudelleen toisen kehyksen renderöintiin, tai se voi käyttää toista puskuria uuden kehyksen renderöintiin, ja kun renderointi on valmis, sitoa tämä uusi puskuri pintaan ja sitoa sen sisältö. Renderöinnissä käytetty menettely, mukaan lukien mukana olevien puskureiden määrä ja niiden hallinta, on täysin asiakkaan hallinnassa.

Vertailu muihin ikkunajärjestelmiin

Ero Waylandin ja X: n välillä

Waylandin ja X: n välillä on useita eroja suorituskyvyn, koodin ylläpidettävyyden ja turvallisuuden suhteen:

Arkkitehtuuri
Koostumus johtaja on erillinen, ylimääräinen ominaisuus X, kun taas Waylandiin yhdistää näytön palvelimen ja kompositioengine yhtenä funktiona. Se sisältää myös joitain ikkunanhallinnan tehtäviä , jotka X: ssä ovat erillinen asiakaspuolen prosessi.
Kokoonpano
Säveltäminen on valinnainen X: ssä, mutta pakollinen Waylandissa. Kompostointi X: ssä on "aktiivista"; eli säveltäjän on haettava kaikki pikselitiedot, mikä aiheuttaa viiveen. Waylandissa kompositointi on "passiivista", mikä tarkoittaa, että säveltäjä vastaanottaa pikselitietoja suoraan asiakkailta.
Renderöinti
X -palvelin itse pystyy suorittamaan renderöinnin, vaikka sitä voidaan myös ohjata näyttämään asiakkaan lähettämä renderoitu ikkuna. Sitä vastoin Wayland ei altista mitään sovellusliittymää renderöintiin, vaan delegoi asiakkaille tällaisia ​​tehtäviä (mukaan lukien fonttien, widgetien jne. Renderointi). Ikkunakoristeet voidaan tehdä asiakaspuolella (esim. Grafiikkatyökalupakki) tai palvelinpuolella (säveltäjä).
Turvallisuus
Wayland eristää jokaisen ikkunan tulon ja lähdön saavuttaen luottamuksellisuuden, eheyden ja saatavuuden molemmissa tapauksissa; alkuperäisestä X -mallista puuttuvat nämä tärkeät suojausominaisuudet, vaikka joitakin laajennuksia on kehitetty lieventämään sitä. Lisäksi, koska valtaosa koodista on käynnissä asiakasohjelmassa, vähemmän koodia on suoritettava pääkäyttäjän oikeuksilla, mikä parantaa turvallisuutta, vaikka useat suositut Linux -jakelut sallivat nyt X: n suorittamisen ilman pääkäyttäjän oikeuksia.
Prosessien välinen viestintä
X -palvelin tarjoaa perusviestintämenetelmän X -asiakkaiden välillä, jota laajennetaan myöhemmin ICCCM -sopimuksilla. Ikkunapäälliköt käyttävät tätä X-asiakas-asiakas-viestintää myös X-istuntojen , valintojen ja vedä ja pudota -toimintojen ja muiden ominaisuuksien toteuttamiseen. Wayland -ydinprotokolla ei tue Wayland -asiakkaiden välistä kommunikaatiota ollenkaan, ja vastaavat toiminnot (tarvittaessa) on otettava käyttöön työpöytäympäristöissä (kuten KDE tai GNOME) tai kolmannessa osapuolessa (esimerkiksi käyttämällä alkuperäistä IPC : tä taustalla oleva käyttöjärjestelmä).
Verkostoituminen
X Window System on arkkitehtuuri, joka on suunniteltu ytimessä toimimaan verkon yli. Wayland ei yksin tarjoa verkon läpinäkyvyyttä; säveltäjä voi kuitenkin toteuttaa minkä tahansa etätyöpöytäkirjan etänäytön saavuttamiseksi. Lisäksi Waylandin kuvien suoratoistoa ja pakkaamista tutkitaan, mikä antaisi VNC: n kaltaisen kehyksen puskurin käytön .

Yhteensopivuus X: n kanssa

XWayland on X -palvelin, joka toimii Wayland -asiakkaana ja pystyy siten näyttämään alkuperäiset X11 -asiakassovellukset Wayland -komposiittoriympäristössä. Tämä on samanlainen tapa, jolla XQuartz suorittaa X -sovelluksia macOS : n alkuperäisessä ikkunajärjestelmässä. XWaylandin tavoitteena on helpottaa siirtymistä X Window System -järjestelmästä Wayland -ympäristöihin tarjoamalla tapa ajaa väliaikaisesti käyttämättömiä sovelluksia. XWayland sisällytettiin X.Org -palvelimen versioon 1.16.

Widget-työkalusarjat, kuten Qt 5 ja GTK 3, voivat vaihtaa graafista taustaansa ajon aikana, jolloin käyttäjät voivat valita latauksen aikana , haluavatko he käyttää sovellusta X: n vai Waylandin yli. Qt 5 tarjoaa tätä varten -platformkomentorivivaihtoehdon, kun taas GTK 3: n avulla käyttäjät voivat valita haluamansa GDK - taustan asettamalla GDK_BACKEND Unix-ympäristömuuttujan .

Wayland -säveltäjät

Tyypillisiä ikkunan elementtejä . Wayland tai X11 eivät määritä, mikä ohjelmisto on vastuussa ikkunoiden koristamisesta . Weston edellyttää, että asiakas piirtää ne, mutta KWin toteuttaa palvelinpuolen sisustuksen.

Näyttöpalvelimia, jotka toteuttavat Wayland -näyttöpalvelinprotokollan , kutsutaan myös Wayland -säveltäjiksi, koska ne suorittavat lisäksi yhdistelmäikkunan hallinnan tehtävän .

Weston

Weston on Wayland -hankkeen kehittämän Wayland -säveltäjän vertailutoteutus. Se on kirjoitettu C -kielellä ja julkaistu MIT -lisenssillä . Westonilla on virallinen tuki vain Linux- käyttöjärjestelmälle, koska Weston on riippuvainen tietyistä Linux-ytimen ominaisuuksista , kuten ytimen tilan asetuksesta , Graphics Execution Managerista (GEM) ja udevista , joita ei ole toteutettu muissa Unix-tyyppisissä käyttöjärjestelmissä järjestelmät. Linuxia käytettäessä syöttölaitteiston käsittely perustuu evdeviin , kun taas puskurien käsittely perustuu yleiseen puskurinhallintaan (GBM). Kuitenkin vuonna 2013 julkistettiin Westonin prototyyppisatama FreeBSD: lle.

Weston tukee HDCP: tä ( High-bandwidth Digital Content Protection ).

Weston luottaa GEM: ään jakamaan sovelluspuskurit säveltäjän ja sovellusten välillä. Se sisältää plug-in-järjestelmän "kuorista" tavallisille työpöytäominaisuuksille, kuten telakoille ja paneeleille. Asiakkaat ovat vastuussa ikkunoiden reunojen ja koristeiden piirtämisestä. Renderöintiin Weston voi käyttää OpenGL ES: ää tai pixman -kirjastoa ohjelmiston hahmontamiseen . Täyttä OpenGL -toteutusta ei käytetä, koska useimmissa nykyisissä järjestelmissä OpenGL -kirjastojen asentaminen asentaisi riippuvuuksina myös GLX- ja muut X Window System -tukikirjastot.

RealVNC: n työntekijä ehdotti lokakuussa 2013 Westonin etäkäyttöliittymää .

Maynard

Maynard (tammikuussa 2017)

Maynard on graafinen kuori ja se on kirjoitettu Westonin laajennukseksi, aivan kuten GNOME Shell on kirjoitettu Mutterin laajennukseksi.

Raspberry Pi Foundation yhteistyössä Collabora vapautuu Maynard ja työn suorituskyvyn parantamiseen ja muistin kulutusta.

libinput

libinput luotiin yhdistämään syöttöpino useiden Wayland -säveltäjien kesken.

Syöttölaitteiden (näppäimistöt, osoittimet, kosketusnäytöt jne.) Käsittelyyn tarkoitettu Weston -koodi jaettiin omaan erilliseen kirjastoon nimeltä libinput , jonka tuki yhdistettiin ensin Weston 1.5: ssä.

Libinput käsittelee useiden Wayland -säveltäjien syöttölaitteita ja tarjoaa myös yleisen X.Org -palvelimen tulo -ohjaimen. Sen tarkoituksena on tarjota yksi toteutus useille Wayland -säveltäjille, joilla on yhteinen tapa käsitellä syöttötapahtumia ja minimoida mukautettujen syöttökoodikompostoijien sisällytettävä määrä. libinput tarjoaa laitteen havaitsemisen ( udev: n kautta ), laitteen käsittelyn, syöttölaitteen tapahtumien käsittelyn ja abstraktion.

Libinputin versio 1.0 seurasi versiota 0.21 ja sisälsi tablettien, painikesarjojen ja kosketuslevyeleiden tuen. Tämä versio säilyttää vakaan API/ABI: n.

Koska GNOME/GTK ja KDE Frameworks 5 ovat sisällyttäneet tarvittavat muutokset, Fedora 22 korvaa X.Orgin evdev- ja Synaptics -ajurit libinputilla.

Version 1.16 myötä X.Org-palvelin sai tuen libinput-kirjastoon xf86-input-libinput-nimisen kääreen muodossa .

Waylandin turvallisuusmoduuli

Wayland Security Module on ehdotus, joka muistuttaa Linux -ytimen Linux -suojausmoduulin käyttöliittymää .

Jotkin sovellukset (etenkin esteettömyyteen liittyvät ) vaativat etuoikeutettuja ominaisuuksia, joiden pitäisi toimia eri Wayland -kompostoijilla. Tällä hetkellä Waylandin sovellukset eivät yleensä pysty suorittamaan arkaluonteisia tehtäviä, kuten kuvakaappausten ottamista tai syöttötapahtumien lisäämistä. Wayland -kehittäjät etsivät aktiivisesti toteuttamiskelpoisia tapoja käsitellä etuoikeutettuja asiakkaita turvallisesti ja suunnittelevat sitten etuoikeutettuja rajapintoja heille.

Wayland Security Module on tapa siirtää tietoturvapäätökset säveltäjän sisällä keskitettyyn turvallisuuspäätösmoottoriin.

Hyväksyminen

Wayland -protokolla on suunniteltu yksinkertaiseksi niin, että kokonaisvaltaisen ikkunajärjestelmän saavuttamiseksi on määritettävä ja toteutettava lisäprotokollia ja rajapintoja. Heinäkuusta 2014 alkaen näitä lisärajapintoja oli työstetty. Joten vaikka työkalusarjat tukevat jo täysin Waylandia, graafisten kuorien kehittäjät tekevät yhteistyötä Wayland -kehittäjien kanssa tarvittavien lisärajapintojen luomiseksi.

Työpöydän Linux -jakelut

Vuodesta 2020 lähtien useimmat Linux -jakelut tukevat Waylandia heti laatikosta, joitakin merkittäviä esimerkkejä ovat:

  • Fedora, joka alkaa versiosta 25 (julkaistu 22. marraskuuta 2016), käyttää Waylandia GNOME 3.22 -työpöydän oletusistunnossa, ja X.Org on varaosa, jos näytönohjain ei voi tukea Waylandia. Fedora käyttää Waylandia KDE -työpöytäistunnon oletusasetuksena versiosta 34 alkaen (julkaistu 27. huhtikuuta 2021)
  • Ubuntu toimittaa Waylandin oletuksena Ubuntu 17.10: ssä (Artful Aardvark). Ubuntu palasi X.Org -versioon Ubuntu 18.04 LTS: lle, koska Waylandilla on edelleen ongelmia näytön jakamisen ja etätyöpöytäsovellusten kanssa, eikä se toipu yhtä hyvin ikkunanhallinnan kaatumisista. Ubuntu toimittaa Waylandin oletuksena 21.04.
  • Red Hat Enterprise Linux toimittaa Waylandin oletusistuntoon versiossa 8, joka julkaistiin 7. toukokuuta 2019.
  • Debian toimittaa Waylandin GNOMEn oletusistunnoksi 6. heinäkuuta 2019 julkaistun version 10 jälkeen.
  • Slackware Linux sisälsi Waylandin 20. helmikuuta 2020 kehittämisversioon -current, josta tulee lopulta versio 15.0.
  • Manjaro toimittaa Waylandin oletuksena Manjaro 20.2: n (Nibia) Gnome -versiossa (julkaistu 22. marraskuuta 2020).

Merkittävä varhainen käyttöönottaja:

  • RebeccaBlackOS on live- Debian-pohjainen Linux-jakelu, joka mahdollistaa kätevän tavan kokeilla todellista Wayland-työpöytää ilman, että sinun tarvitsee tehdä muutoksia tietokoneen pääkäyttöjärjestelmään. Sitä on käytetty Waylandin esittelyyn jo vuodesta 2012 lähtien.

Toolkit -tuki

Waylandia tukevat työkalupakit sisältävät seuraavat:

  • Clutterilla on täydellinen Wayland -tuki.
  • EFL: llä on täydellinen Wayland -tuki lukuun ottamatta valintaa.
  • GTK 3.20: lla on täydellinen Wayland -tuki.
  • Qt 5: llä on täydellinen Wayland -tuki, ja sitä voidaan käyttää sekä Wayland -säveltäjien että Wayland -asiakkaiden kirjoittamiseen.
  • SDL -tuki Waylandille julkaistiin 2.0.2 -versiolla, ja se oli oletusarvoisesti käytössä versiosta 2.0.4 lähtien.
  • GLFW 3.2: lla on Wayland -tuki.
  • FreeGLUTilla on Waylandin ensimmäinen tuki.

Työpöytäympäristöt

Työpöytäympäristöjä, joita siirretään X: stä Waylandiin, ovat GNOME , KDE Plasma 5 ja Enlightenment .

Marraskuussa 2015 Enlightenment e20 julkistettiin täydellä Wayland -tuella. GNOME 3.20 oli ensimmäinen versio, jolla oli täysi Wayland -istunto. GNOME 3.22 sisälsi paljon parannetun Wayland -tuen GTK: ssa, Mutterissa ja GNOME Shellissä. GNOME 3.24 toimitti tuen omille NVidia -ohjaimille Waylandin alla.

Wayland -tuki KDE Plasmalle viivästyi Plasma 5: n julkaisuun asti, vaikka aiemmin KWin 4.11 sai kokeellisen Wayland -tuen. Plasman versio 5.4 oli ensimmäinen Wayland -istunnon kanssa. Vuoden 2020 aikana Klipper siirrettiin Waylandiin, ja seuraavan 5.20 -julkaisun lokakuussa 2020 tavoitteena on parantaa näytön suoratoistoa ja tallennusta.

Muut ohjelmistot

Muita Waylandia tukevia ohjelmistoja ovat seuraavat:

  • Älykäs tuloväylä työskentelee Wayland -tuen parissa, se voi olla valmis Fedora 22: lle.
  • RealVNC julkaisi Wayland -kehittäjien esikatselun heinäkuussa 2014.
  • Maliit on syöttömenetelmäkehys , joka toimii Waylandin alla.
  • kmscon tukee Waylandia wltermillä.
  • Mesassa on integroitu Wayland -tuki.
  • Eclipse ajettiin Waylandilla GSoC -projektin aikana vuonna 2014.
  • Vulkan WSI (Window System Interface) on joukko API-kutsuja palvelee samaa tarkoitusta kuin EGL ei OpenGL ES tai GLX- OpenGL. Vulkan WSI sisältää Waylandin tuen ensimmäisestä päivästä lähtien: VK_USE_PLATFORM_WAYLAND_KHR. Vulkan -asiakkaat voivat käyttää modifioimattomia Wayland -palvelimia, kuten Weston, GENIVI LayerManager, Mutter / GNOME Shell, Enlightenment ja paljon muuta. WSI mahdollistaa sovellusten löytää järjestelmän eri grafiikkasuorittimet ja näyttää grafiikkasuorittimen tulokset ikkunajärjestelmälle.
  • SPURV , yhteensopivuuskerros Android -sovelluksille, joita voidaan käyttää Linux -jakeluissa Waylandin avulla

Mobiili ja sulautettu laitteisto

Weston käynnissä postmarketOS: lla

Waylandia tukevat mobiilit ja sulautetut laitteet sisältävät seuraavat:

Historia

Wayland käyttää suoraa renderointia EGL: n yli .

Kristian Høgsberg, Linux- grafiikka ja X.Org- kehittäjä, joka on aiemmin työskennellyt AIGLX: n ja DRI2: n parissa , aloitti Waylandin vapaa-ajan projektina vuonna 2008 työskennellessään Red Hatissa . Hänen ilmoittamansa tavoite oli järjestelmä, jossa "jokainen kehys on täydellinen, millä tarkoitan sitä, että sovellukset pystyvät hallitsemaan hahmonnusta niin, että emme koskaan näe repeytymistä, viivästymistä, uudelleen piirtämistä tai välkkymistä". Høgsberg ajoi Waylandin kaupungin läpi Massachusettsissa, kun taustalla olevat käsitteet "kiteytyivät", joten nimi.

Lokakuussa 2010 Waylandista tuli freedesktop.org -projekti. Osana siirtoa aikaisempi Google-ryhmä korvattiin wayland-devel- postituslistalla, joka oli hankkeen keskeinen keskustelu- ja kehityspiste.

Wayland -asiakas- ja palvelinkirjastot julkaistiin alun perin MIT -lisenssillä , kun taas referenssisäveltäjä Weston ja jotkut esimerkkiasiakkaat käyttivät GNU General Public License -versiota 2 . Myöhemmin kaikki GPL -koodit lisensoitiin uudelleen MIT -lisenssillä "koodin siirtämisen helpottamiseksi viitetoteutuksen ja varsinaisten kirjastojen välillä". Vuonna 2015 havaittiin, että Waylandin käyttämä lisenssiteksti oli hieman erilainen ja vanhempi versio MIT -lisenssistä, ja lisenssiteksti päivitettiin X.Org -projektin nykyiseen versioon (tunnetaan nimellä MIT Expat License ).

Wayland toimii kaikkien Mesa-yhteensopivien ohjaimien kanssa, joissa on DRI2- tuki, sekä Android- ohjainten kanssa Hybris-projektin kautta .

Julkaisut

Major Waylandin ja Westonin julkaisut
Versio Päivämäärä Pääpiirteet
Wayland Weston
Vanha versio, ei enää yllä: 0,85 9. helmikuuta 2012 Ensimmäinen julkaisu.
Vanha versio, ei enää yllä: 0,95 24. heinäkuuta 2012 Aloitti API -vakautuksen.
Vanha versio, ei enää yllä: 1.0 22. lokakuuta 2012 Vakaa wayland-client API.
Vanha versio, ei enää yllä: 1.1 15. huhtikuuta 2013 Ohjelmiston renderointi. FBDEV, RDP -taustaohjelmat.
Vanha versio, ei enää yllä: 1.2 12. heinäkuuta 2013 Vakaa wayland-server-sovellusliittymä. Värien hallinta. Alipinnat. Raspberry Pi -taustaohjelma.
Vanha versio, ei enää yllä: 1.3 11. lokakuuta 2013 Lisää pikselimuotoja. Kielisidosten tuki. Android -ajurin tuki libhybrisin kautta .
Vanha versio, ei enää yllä: 1.4 23. tammikuuta 2014 Uudet wl_subcompositor- ja wl_subsurface -rajapinnat. Useita framebuffer -muotoja. logind -tuki rootless Westonille.
Vanha versio, ei enää yllä: 1.5 20. toukokuuta 2014 libinput. Koko näytön kuori.
Vanha versio, ei enää yllä: 1.6 19. syyskuuta 2014 libinput oletuksena.
Vanha versio, ei enää yllä: 1.7 14. helmikuuta 2015 Tuki Wayland -esityksen laajennukselle ja pintarooleille. IVI -kuoriprotokolla .
Vanha versio, ei enää yllä: 1.8 2. kesäkuuta 2015 Erilliset otsikot ytimelle ja luodulle protokollalle. Maalauksen ajoitus. Nimetyt lähdöt. Lähtömuunnokset. Surface-shooting API.
Vanha versio, ei enää yllä: 1.9 21. syyskuuta 2015 Lisenssi päivitetty. Lisenssi päivitetty. Uusi testikehys. Kolmen pään DRM-komposiitti. linux_dmabuf laajennus.
Vanha versio, ei enää yllä: 1.10 17. helmikuuta 2016 Vedä ja pudota -toiminto, ryhmitetyt osoitintapahtumat. Video 4 Linux 2, kosketussyöttö, virheenkorjausparannukset.
Vanha versio, ei enää yllä: 1.11 1. kesäkuuta 2016 Uusi varmuuskopioinnin latausrutiini, uusi asennuslogiikka. Välityspalvelinkääreet, jaetun muistin muutokset, Doxygenin luomat HTML-asiakirjat.
Vanha versio, ei enää yllä: 1.12 21. syyskuuta 2016 Virheenkorjaustuki parani. libweston ja libweston-desktop. Osoittimen lukitus ja sulkeminen. Suhteellinen osoittimen tuki.
Vanha versio, ei enää yllä: 1.13 24. helmikuuta 2017 Westonin ABI: tä on muutettu, joten uuden version nimi oli 2.0.0 eikä 1.13.0.
Vanha versio, ei enää yllä: 1.14 8. elokuuta 2017 Weston 3.0.0 julkaistiin samaan aikaan.
Vanha versio, ei enää yllä: 1.15 9. huhtikuuta 2018 Weston 4.0.0 julkaistiin samaan aikaan.
Vanha versio, ei enää yllä: 1.16 24. elokuuta 2018 Weston 5.0.0 julkaistiin samaan aikaan.
Vanha versio, ei enää yllä: 1.17 20. maaliskuuta 2019 Weston 6.0.0 julkaistiin samaan aikaan.
Vanha versio, ei enää yllä: 1.18 2. elokuuta 2019 Weston 7.0.0 julkaistiin kuukautta myöhemmin.
Nykyinen vakaa versio: 1.19 27. tammikuuta 2021
Weston 8 24. tammikuuta 2020
Weston 9 4. syyskuuta 2020
Legenda:
Vanha versio
Vanhempi versio, edelleen ylläpidetty
Uusin versio
Uusin esikatseluversio
Tuleva julkaisu

Katso myös

Viitteet

Ulkoiset linkit