Wayland (Display-Server-Protokoll)

Wayland


Wayland-Demonstration
Basisdaten

EntwicklerKristian Høgsberg
Erscheinungsjahr2008
Aktuelle Version1.22.0[1]
(4. April 2023)
BetriebssystemLinux, FreeBSD, DragonFly BSD
ProgrammierspracheC
KategorieDisplay-Server-Protokoll, Fenstersystem
LizenzMIT-Lizenz
deutschsprachignein
wayland.freedesktop.org

Wayland ist ein Display-Server-Protokoll für Linux, FreeBSD und DragonFly BSD. Seine Hauptaufgabe ist das Rendern von Fenstern auf einer Bitmap.[2] Es beschreibt die Kommunikation zwischen einem Display-Server und seinen Clients (üblicherweise die Anwendungen des Nutzers). Der Server wird Wayland-Compositor genannt, da er zusätzlich die Funktion eines Compositing Window Managers übernimmt. Ziel von Wayland ist es, dem Programmierer ein leichter zu wartendes Display-Server-Protokoll als den bisherigen X-Window-Server bereitzustellen und die Sicherheit zu erhöhen.[3] Anwendungen, die noch vom X-Server abhängig sind, können mithilfe von XWayland auch unter einem Wayland-Compositor genutzt werden.[4]

Entwicklung

Begonnen wurde das Softwareentwicklungsprojekt für Wayland von Kristian Høgsberg, einem Mitglied von Intels Open Source Technology Center (OSTC).[5][6] Wayland versteht sich (zumindest auf Linux) als eine Alternative zum X-Window-System, wobei letzteres allerdings noch auf allen unixoiden Betriebssystemen lauffähig ist. Das von Kristian Høgsberg erklärte Ziel für die Software lautet:

„[…] jeder Frame ist perfekt, und damit meine ich, dass alle Applikationen in der Lage sein werden, das Rendering so zu kontrollieren, dass wir niemals Tearing, instabile Bildwiederholfrequenzen, Redraw-Artefakte oder Flimmern sehen werden.“

Wayland: A New X Server for Linux. Phoronix[7][8]

Aufbau

Unter X11 ist ein Extra-Programm, der Fenstermanager, für die Fensterdekoration (Titelleiste, Rahmen usw.) aller Fenster zuständig. Unter Wayland werden die Funktionen des Displayservers[9] und des Fenstermanagers im Wayland Compositor zusammengefasst; die Kommunikation zwischen den beiden entfällt somit. Nach wie vor kann jeder Client seine eigenen Fensterdekorationen zeichnen, oder sie können zentral vom Compositor gezeichnet werden. Weston, die Referenzimplementierung des Wayland Compositors, verlangt Client-seitige Fensterdekorationen, KWin, der Fenstermanager der Desktopumgebung von KDE, sorgt für Server-seitige.

(c) Shmuel Csaba Otto Traian, CC BY-SA 3.0
Das Wayland-Display-Server-Protokoll

Wayland-Display-Server-Protokoll

Das Wayland-Display-Server-Protokoll definiert, dass Clients via EGL direkt in den Framebuffer zeichnen. Für Mesa 3D wurde dafür libwayland-EGL geschrieben. Diese Bibliothek erweitert die vorhandene Mesa-Implementierung von EGL dahingehend, dass die Zugriffe effizienter werden.

Wayland greift auf vorhandene Komponenten des Kernel des jeweiligen Betriebssystems wie Direct Rendering Manager (DRM), Kernel Mode-Setting (KMS) und den Graphics Execution Manager (GEM) unter Linux zurück, um einen minimalen Display-Server bereitzustellen.[10] Im Juni 2010 wurde Weston von dem auf Desktops eher traditionellen OpenGL auf OpenGL ES portiert.[11] Grund dafür war, dass die einzige verfügbare freie OpenGL-Implementierung Mesa 3D von GLX und damit vom X-Window-System abhängt, die OpenGL-ES-Implementierung von Mesa 3D aber nicht.[12] Wayland kommt aber ohne OpenGL / OpenGL ES aus.[13][14]

Wayland Compositor

Wayland: Libwayland und der Wayland Compositor
(c) Shmuel Csaba Otto Traian, CC BY-SA 3.0
Wayland-Clients schreiben mittels EGL unmittelbar in den Bildspeicher; der Compositor entscheidet über die Ausgabe.


(c) Shmuel Csaba Otto Traian, CC BY-SA 3.0
Der Display-Server (Wayland Compositor) sitzt zwischen dem Linuxkern und seinen Clienten und überträgt seine Daten über das sogenannte Display-Server-Protokoll, welches einfach ein weiteres Netzwerkprotokoll ist.


(c) Shmuel Csaba Otto Traian, CC BY-SA 3.0
Wayland-Clients schreiben mittels EGL unmittelbar in den Bildspeicher; der Compositor entscheidet über die Ausgabe.
  • Weston: Die Referenzimplementierung eines Wayland-Compositors.
  • KWin: Der Fenstermanager des KDE-Projekts, wird derzeit um Wayland-Unterstützung erweitert.[15]
  • Mutter: Ein Fenstermanager und gleichzeitig ein Wayland Compositor.
  • EGL: Nachdem Nvidia-Mitarbeiter 2010 bekanntgegeben hatten, dass keine Unterstützung für Wayland geplant sei,[16] wurde im Oktober 2013 ein Treiber mit EGL-Unterstützung veröffentlicht, den auch Android nutzt.[17] Seit den Nvidia-Treibern mit der Version 470 wird Wayland auch von Nvidia für alle GPUs unterstützt, die mit diesen Treibern laufen.[18]
  • Lipstick: Die Implementierung des Wayland-Compositors in Sailfish OS, dem Betriebssystem des Jolla-Smartphones.

Bildsynthese

Das Wayland-Protokoll enthält keine API zur Bildsynthese.[19][20][21][22] Jeder Wayland-Client ist für die Bildsynthese seines Fensterinhaltes selbst verantwortlich und schreibt das Ergebnis in seinen eigenen Puffer. Für die Bildsynthese kann es eine eigene Engine mitbringen oder eine externe Bibliothek nutzen, wie z. B. Cairo, OpenGL oder Vulkan, oder auch die „rendering engine“ von Qt oder GTK+ benutzen.

Einsatz

Wayland wird als Ersatz für den X.Org-Server betrachtet, bietet aber andere potentielle Anwendungsmöglichkeiten, beispielsweise das Bereitstellen von X-Servern und GDM-Anmeldungen.[8]

  • Enlightenment: Ab der Version E20, welche im Dezember 2015 erschien, wird Wayland von Enlightenment unterstützt.[23]
  • Gnome: Im März 2013 kündigten GNOME-Entwickler Pläne für eine vollständige Portierung innerhalb eines Jahres an.[24] Gnome 3.10, welches im September 2013 erschien, enthielt bereits eine experimentelle Wayland-Unterstützung. Ab Version 3.20, welche am 23. März 2016 erschien, gilt die Wayland-Unterstützung als alltagstauglich.
  • KDE: Unterstützung von KWin für OpenGL ES wird ab Version 4.7 ausgeliefert.[25][26] Wayland-spezifische Änderungen sind seit 2011 in Entwicklung.[27]
  • Tizen: Tizen unterstützt Wayland in IVI-Konfigurationen.[28] Für Tizens Mobilplattform wurde Wayland-Unterstützung angekündigt.[29]
  • Sailfish OS: Jollas erstes Mobiltelefon mit Sailfish OS läuft laut Aussage der Entwickler mit Wayland.[30]

Lizenz

Das Wayland-Display-Server-Protokoll wurde durch verschiedene Komponenten implementiert, wie z. B. libWayland-server, libWayland-client oder libWayland-EGL. Alle diese Komponenten sind freie Software und unterliegen zusammen mit dem Wayland-Compositor Weston der MIT-Lizenz.[31]

Rezeption

Wayland war ursprünglich als ein neues Projekt auf der Website des Unternehmens Phoronix Media vorgestellt worden, als im November 2008 ein Artikel mit dem Titel „Wayland: Ein neuer X.Org-Server für Linux“ veröffentlicht wurde.[7] Høgsberg reagierte auf die Aufmerksamkeit der Medien über seinen Blog und informierte darüber, dass Wayland nicht ein neuer X-Server sei, sondern ein neuer Display-Server, und stellte fest, dass es ein junges, noch unreifes Projekt sei.[32]

Streit mit Canonical

Kurze Zeit nach Beginn der Entwicklung wurde Wayland vom Großteil der Linux-Gemeinde als baldiger Standard akzeptiert. Anfang 2013 gab jedoch Canonical überraschend bekannt, eine eigene Lösung namens „Mir“ entwickeln zu wollen. Diese Entscheidung löste Kontroversen aus, da viele es lieber gesehen hätten, dass gemeinschaftlich Wayland vorangebracht und so ein einheitlicher Standard etabliert würde.[33] In einer Stellungnahme von Mitarbeitern Canonicals wurde unter anderem argumentiert, Wayland habe schwerwiegende Sicherheitsprobleme vom X-Window-System geerbt. Diese Behauptung ist nachweislich falsch und wurde wenig später revidiert, führte jedoch dazu, dass die Fronten sich weiter verhärteten. Kritiker – darunter Høgsberg – warfen Canonical vor, das Projekt mit Falschaussagen torpedieren zu wollen.[34] 2017 gab Canonical schließlich die Entwicklung von Mir auf und verwendet nun in Ubuntu ebenfalls Wayland.[35]

Weblinks

Einzelnachweise

  1. ANNOUNCE wayland 1.22.0. 4. April 2023 (abgerufen am 14. April 2023).
  2. Wayland Architecture. Erklärung der Wayland Architektur. Abgerufen am 27. März 2016.
  3. Wayland Homepage. Erklärung der Ziele des Projektes im 1 Absatz. Abgerufen am 2. Juni 2020.
  4. Is wayland replacing the X server? Abgerufen am 2. Juni 2020.
  5. Kristian Høgsberg (englisch) – Seite bei fosdem.org (abgerufen am 21. April 2013).
  6. Interview: Kristian Høgsberg (Memento vom 3. Februar 2014 im Internet Archive) (englisch) – Seite bei fosdem.org zu einem Gespräch am 29. Januar 2012 (abgerufen am 21. April 2013).
  7. a b Wayland: A New X Server for Linux. Phoronix, 3. November 2008 (englisch) abgerufen am 21. April 2013
  8. a b New Wayland X Server Looks to How a Modern Desktop works. (Memento vom 29. Oktober 2013 im Internet Archive) The H, 6. November 2008 (englisch) abgerufen am 21. April 2013
  9. Displayserver: Wayland und Weston 1.3 erschienenGolem, am 11. Oktober 2013
  10. Wayland Google Groups
  11. Wayland Meets Some Summer Love w/ New Changes (englisch) – Phoronix, am 6. Juni 2010 (abgerufen am 21. April 2013)
  12. Wayland-FAQ – abgerufen am 31. Juli 2011
  13. Daniel Stone: The real story behind Wayland and X. 1. Februar 2012, archiviert vom Original am 5. Februar 2014; abgerufen am 22. Oktober 2013.
  14. Daniel Stone: The real story behind Wayland and X (Video). 1. Februar 2012, abgerufen am 22. Oktober 2013.
  15. Martin Gräßlin: Martin Gräßlin: KWin wird ein Wayland-Compositor. Golem.de, 22. April 2013, abgerufen am 22. April 2013.
  16. Foreneintrag von Nvidia-Mitarbeiter Aaron Plattner. 7. November 2010, archiviert vom Original am 16. Dezember 2013; abgerufen am 13. Dezember 2013.
  17. Thorsten Leemhuis: Anfänge für Mir- und Wayland-Support in Nvidias Linux-Treibern. In: Heise online. 7. Oktober 2013. Abgerufen am 22. Oktober 2013.
  18. Nvidia GeForce: Linux-Grafiktreiber verbessert Wayland-Unterstützung. Abgerufen am 3. Januar 2022.
  19. Kristian Høgsberg: Wayland. Abgerufen am 5. September 2014. „No rendering API, all direct rendering“
  20. Kristian Høgsberg: Wayland Documentation 1.3 – Wayland Rendering. In: FreeDesktop.org. Wayland project, archiviert vom Original am 5. September 2014; abgerufen am 4. September 2014.
  21. Wayland FAQ. In: Wayland project. Wayland project, abgerufen am 4. September 2014. „Wayland doesn’t render on behalf of the clients, it expects the clients to use whatever means they prefer to render into a shareable buffer.“
  22. Jesse Barnes: Introduction to Wayland. Intel Open Source Technology Center; „Does not include a rendering API – Clients use what they want and send buffer handles to the server“
  23. Liane M. Dubowy: Schlanker Linux-Desktop: Enlightenment E20 veröffentlicht. In: Heise online. 1. Dezember 2015. Abgerufen am 22. April 2017.
  24. [Phoronix] GNOME Will Move Full-Speed With Wayland Support. Phoronix.com, 13. März 2013, abgerufen am 8. April 2013.
  25. Martin Gräßlin: KWin runs on OpenGL ES. 28. November 2010, abgerufen am 22. Oktober 2013: „It does not only help, it is a must have to start working for Wayland. So to say it’s the first part of the KWin port to Wayland.“
  26. Martin Flöser: On the Road to Modern OpenGL (ES). In: Martin’s Blog. 18. Januar 2011, abgerufen am 5. Januar 2020 (amerikanisches Englisch).
  27. Martin Flöser: The History on Wayland Support inside KWin. In: Martin’s Blog. 21. April 2013, abgerufen am 5. Januar 2020 (amerikanisches Englisch).
  28. IVI/IVI Setup – Tizen Wiki. Wiki.tizen.org, abgerufen am 8. April 2013 (englisch).
  29. Upcoming Technologies: Wayland and oFono. Tizen, abgerufen am 8. April 2013 (englisch).
  30. Jolla’s First Smartphone Powered By Wayland - Phoronix. Abgerufen am 5. Januar 2020.
  31. COPYING - wayland/wayland - Wayland Compositor Infrastructure. Abgerufen am 5. Januar 2020.
  32. Kristian Høgsberg: Casually Defiant: Premature publicity is better than no publicity. In: Casually Defiant. 3. November 2008, abgerufen am 5. Januar 2020.
  33. Linux Community: Canonical löst Shitstorm ausGolem, am 9. März 2013
  34. Martin Gräßlin: Kwami: Wayland vs. Mir. KDE-Entwickler auf Ubuntuusers.de, 7. März 2013
  35. Ferdinand Thommes: Linux: Ubuntu bereitet sich auf GNOME und Wayland vor. In: ComputerBase. (computerbase.de [abgerufen am 23. April 2017]).

Auf dieser Seite verwendete Medien

Linux graphics drivers DRI Wayland.svg
(c) Shmuel Csaba Otto Traian, CC BY-SA 3.0
Schema des Linux Kernel Grafikstapels; Wayland nutzt EGL.
Free and open-source-software display servers and UI toolkits.svg
(c) Shmuel Csaba Otto Traian, CC BY-SA 3.0
Stellt die verschiedenen Softwarekomponenten der freien grafischen Benutzeroberflächen nebeneinander: Im Grunde genommen sind das der Display server und seine Clients sowie einige Daemons. Allerdings gibt es mehrere Display Server und es sind außerdem unterschiedliche GUI Toolkits unter einer freien Lizenz verfügbar.
Linux Graphics Stack 2013.svg
(c) Shmuel Csaba Otto Traian, CC BY-SA 3.0
Darstellung des Linux-Grafik-Stapels, unter anderem mit dem Linux Kernel (unten) sowie dem X-Server und Wayland (in der Mitte); Namen entsprechen Paketen in den Debian Archiven, z.B. libGL-mesa-dri
Wayland Logo.svg
Logo von: Wayland – Display-Server-Protokoll für den Linux-Desktop
Wayland display server protocol.svg
(c) Shmuel Csaba Otto Traian, CC BY-SA 3.0
en:Wayland (display server protocol)
① The en:evdev module of the en:Linux kernel gets an event and sends it to the en:Wayland compositor. This is similar to the X case, which is great, since we get to reuse all the input drivers already in the kernel.
② The Wayland compositor looks through its scenegraph to determine which window should receive the event. The scenegraph corresponds to what's on screen and the Wayland compositor understands the transformations that it may have applied to the elements in the scenegraph. Thus, the Wayland compositor can pick the right window and transform the screen coordinates to window local coordinates, by applying the inverse transformations. The types of transformation that can be applied to a window is only restricted to what the compositor can do, as long as it can compute the inverse transformation for the input events.
③ As in the X case, when the client receives the event, it updates the UI in response. But in the Wayland case, the rendering happens in the client, and the client just sends a request to the compositor to indicate the region that was updated.
④ The en:Wayland compositor collects damage requests from its clients and then re-composites the screen. The compositor can then directly issue an en:ioctl to schedule a pageflip with KMS
Wayland demo 2.png
Autor/Urheber: Originally uploaded by Darxus (Transferred by Ivanics), Lizenz: MIT
Screenshot of Wayland demo software. Applications running: dnd, terminal, eventdemo, image, gears, simple-client, smoke. http://wayland.freedesktop.org/