W 2008 roku Kristian Høgsberg zapoczątkował nowy projekt w świecie Linuksa – Wayland. Jego celem było stworzenie następcy obecnego X Servera, wraz z menadżerami okien i sporą ilością funkcji, które obecnie posiada jądro Linux. Tak narodził się Wayland – protokół systemu okien, który łączy w sobie menadżera kompozycji oraz system okien. Jest on swojego rodzaju protokołem dla kompozytora, który łączy się z klientami i posiada towarzyszącą mu bibliotekę implementującą, napisaną w języku C.

Częścią projektu Wayland jest Weston, który jest implementacją kompozytora Waylanda. Weston może działać, jako klient X lub Linux KMS, i zapewnia kilka przykładowych klientów. Kompozytor Weston jest szybki i minimalistyczny, dzięki czemu nadaje się dla urządzeń mobilnych i wbudowanych.

X Server

Poniżej zamieszczamy rysunek działania X Servera:
Architektura X Server

  1. Jądro otrzymuje sygnał z urządzenia wejściowego i przesyła go do X Servera poprzez sterownik wejścia evdev. Jądro wykonuje całą żmudną pracę poprzez sterowanie urządzeniem i tłumaczeniem specyficznych protokołów dla standardowego zdarzenia wejściowego evdev.
  2. X Server decyduje, którego okna dotyczy sygnał i śle go do klientów, które zostały wybrane do danego zdarzenia w tym oknie. X Server nie wie aktualnie, jak to zrobić, ponieważ lokalizacja okna na ekranie jest kontrolowana przez kompozytor i może zostać to zmienione na wiele sposobów, których X Server nie obsługuje.
  3. Klient czeka na zdarzenie i decyduje, co zrobić. Często interfejs graficzny musi zostać zmieniony, w odpowiedzi na zdarzenie, może został kliknięty przycisk zamknięcia, lub wskaźnik najechał na przycisk, który powinien zostać podświetlony. Tak więc klient wysyła żądanie renderowania z powrotem do serwera X.
  4. Kiedy X Server otrzymał żądanie renderowania, wysyła to do sterownika, aby umożliwić mu zaprogramowanie sprzętu do renderowania. X Server oblicza także przylegający region renderowania i wysyła to do kompozytora, jako zdarzenie zniszczenia.
  5. Następnie kompozytor otrzymuje od zdarzenia zniszczenia, że coś zostało zmienione w oknie, i powinna zostać ponownie narysowana część ekranu, na którym jest owe okno widoczne. Kompozytor jest odpowiedzialny za renderowanie całej zawartości ekranu i okien X. Potem musi jeszcze raz przesłać to przez X Server, aby zakończyć renderowanie.
  6. X Server otrzymuje żądanie renderowania od kompozytora i kopiuje back bufor do front bufora, lub wykonuje tzw. pageflip.

Wayland

Oto, jak działa Wayland:
Architektura Wayland

  1. Jądro otrzymuje żądanie i wysyła je do kompozytora. Odbywa się to podobnie, jak w X Server, ponieważ możemy użyć wszystkich sterowników wejścia, zawartych w jądrze.
  2. Kompozytor przegląda swoją obecną scenę graficzną (Scene Graph), aby ustalić które okno powinno otrzymać zdarzenie. Scene Graph wysyła sygnał, co ma obecnie na ekranie, a kompozytor próbuje zrozumieć zmianę, jaką ma zaimplementować do elementów sceny. Warto zaznaczyć, że typy transformacji wykonywane na oknie, są ograniczone jedynie do możliwości kompozytora, tak długo, jak może on obliczać wsteczną transformację dla zdarzeń wejścia.
  3. Klient podłączony do Waylanda, wykonuje całe renderowanie. Wysyła żądanie do kompozytora, aby zainicjować region, który został zaktualizowany.
  4. Kompozytor zbiera żądania zniszczenia od klientów, a następnie zmienia cały obraz na ekranie. Kompozytor może bezpośrednio wysłać ioctl, aby zaplanować pageflip z KMS.

Zalety i wady nowego protokołu

Jak zatem widzimy Wayland niweluje wiele niepotrzebnych czynności, jakie są wykonywane przez X Server. Patrząc po obecnych możliwościach, jakie możemy wykonywać z jego wykorzystaniem, czyni go to przyszłościowym rozwiązaniem. Aktualnie jednak jest sporo problemów:

  • Brak wsparcia od nVidia i AMD, w kwestii własnościowych sterowników. Jedyne, które aktualnie współpracują dobrze, to te od Intela.
  • Brak transparentności sieciowej. Wiele osób zarzuca brak tej cechy, jednakże Windows też tego nie posiada i nikt nie narzeka. Wykorzystywane są programy typu RDP, VNC.
  • Nie ma natywnego OpenGL. Domyślnie API OpenGL dla systemów Linux, posiada w nazwie GLX i jest ściśle związane z Xami. Jedynym niezależnym API jest OpenGL ES, który został przystosowany dla urządzeń mobilnych, jak Android, który nie korzysta z Xów.
  • Brak łatwego przenoszenia na inne platformy. Wayland jest silnie związany z mechanizmami, zawartymi w jądrze Linux.

  • Pingback: Archiwum Wayland()

  • Piotr

    Czy to jest tłumaczenie jakiegoś obcojęzycznego tekstu?

    • Owszem :)

    • komuch

      To dodawaj źródło plagiatorze :P

    • Wystarczy spojrzeć na początek tekstu. Myślenie i spostrzegawczość się kłania.
      Poza tym to nie jest plagiat, poczytaj wpierw, co to dokładnie oznacza i dopiero rzucaj mięsem w kogoś, najlepiej z imienia i nazwiska.

    • Tomasz

      Jednak dobrym obyczajem jest jasne i wyraźne podawanie źródła nawet w przypadku jego tłumaczenia czy nawet tekstu pochodnego. Oczywiście że każdy może sobie ich poszukać, ale w przypadku gdy się je znajduje a nie były podane to pozostaje pewien niesmak i wrażenie że autor chciał coś ukryć lub na przykład uniknąć krytyki tłumaczenia (chociaż oczywiście nie twierdzę że tak było). I nie chodzi tu o podlinkowanie któregoś słowa w tekście, tylko jasne wskazanie np. na końcu tekstu źródła z podaniem linku, tym bardziej że w artykule zostały również zapożyczone grafiki ze strony źródłowej.

    • Piotr

      Nawet mi się nie chciało pod odnośnik zajrzeć, wstyd.

  • sprae

    Zamiast GLX (Które nie jest pełnoprawnym OpenGL) w Waylandzie używa się standaryzowanego EGL (nie mylić z ES).

  • A co na to dostawcy sprzętu? Czy AMD oraz NVIDIA planują tworzyć sterowniki pod Waylanda?

    • sprae

      Nvidia zrobi jak to się będzie opłacało.

    • Dokładnie, bo nigdy nie wiadomo czy ten projekt się przyjmie czy nie – więc producenci sprzętu nie są pewni czy warto w Waylanda inwestować.

    • Budyń

      Sądząc z jakości sterowników Nvidia pod obecne rozwiązania…. stworzą, nie stworzą… nie ma różnicy.

    • Pan Łukasz

      Jeśli nadal byłyby to niewolne sterowniki, to rzeczywiście nie ma różnicy. Niewolne = nieużywalne. Chyba, że ta kretyńska firma zmądrzeje i otworzy swoje karty graficzne i zrobi wolne sterowniki, to proszę bardzo, z chęcią zainstaluję.

    • ali

      Śnij dalej w swoim nierealnym świecie.

  • o_O

    > Windows też tego nie posiada i nikt nie narzeka.
    WTF, co to w ogóle za argument?
    Windows to zabawka dla plebsu bez wiedzy i realnych potrzeb w kwestii jakości oprogramowania.
    Równie dobrze można mówić, że po co w samochodzi przednia szyba, przecież rower jej nie posiada…

    • Budyń

      Biorąc pod uwagę fakt, że ta zabawka jest funkcjonalnie i technologicznie o lata świetlne przed Linuksem i resztą badziewia, a Windows po RDP działa lepiej niż dowolne środowisko graficzne Lin na lokalnym hoście….
      Ale miło, miło frustracika przeczytać :D

    • Pan Łukasz

      O lata świetlne przed GNU/Linux?! Coś, w czym podczas nagrywania płyty DVD (z poziomu eksploratora) siada eksplorator i z nim cały pulpit, a po przywróceniu do używalności okazuje się, że płyta idzie do śmieci? A może Windows 8 z super zaawansowanym monozadaniowym interfejsem kaflowym, zdublowanym panelem ustawień i ogólnym bajzlem? Jeśli tak cenisz Windows, proszę, wejdź (pierwszy lepszy przykład) tu: http://en.wikipedia.org/wiki/Comparison_of_file_s… i zobacz, ile systemów plików obsługuje Linux, a ile Windows. Tak mało, jak na nadświetlny system operacyjny? Coś mi tu nie gra.

    • _asd

      Nie obsługuje 20 systemów plików, za to obsługuje:
      -FS obecny na ~80% desktopów (NTFS)
      -FS obecny na ~90% pamięci przenośnych (FAT32)

    • Pan Łukasz

      Łojojoj. FAT32 jest też obsługiwany w pełni przez Linuxa. Trudno nie obsługiwać w pełni tak prymitywnego systemu plików, który nie ma nawet uprawnień do zasobów. No, może jakichś tam atrybutów nie obsługuje (tylko do odczytu i jakieś tam bzdety, nic nie warte w świetle braku uprawnień). Podłącz długopęd do komputera i sam się przekonaj. A NTFS? A srał go pies. Linux umie poprawnie zapisać i wykasować. To wystarczy, żeby przenieść dane na jakiś normalny, UNIX-owy system plików, np. ext4 lub XFS. Dzięki temu, że obsługa NTFS jest podstawowa, GNU/Linux zmusił mnie we wczesnym okresie konwersji na wolne oprogramowanie do ruszenia tyłka, uruchomienia GParted i uczynienia ext4 głównym FS. Teraz dane mi się tak nie fragmentują. Poza tym po co trzymać dane na niewolnym FS?!

    • veramird

      ext4 – ileż razy się przez nieg natraciłem danych na laptopie tego już mi się nic che zliczać. Ze 3 razy linux z powodu przegrzania się sprzętu i awaryjnego wyłączenia nie mógł wstać. A windows? Ze swoim ntfs po takim czymś trochę narzeka przy starcie że musi odczytać dziennik, ale działa przez dobre pare lat.
      A sama obsługa innych formatów? jest FSproxy, jest Ext2Fsd, sam używam Diskinternals Linux Recovery gdy linux padnie, a szybko potrzebuje się dostać do danych. Może nie wbudowana w system ale przez programy trzecie – czyli jak ntfs w linuxie.

    • O_o

      Ściemniasz :)

    • veramird

      Laptop mam z błędem sprzętowym i się po prostu przegrzewa zawieszając sprzęt. Czasem też po prostu mi się nie chce i kładę go na łóżko.
      ext4 ma wspaniały opóźniony zapis, może to przez to?
      Ogólnie ostatnio archlinux po padnięciu nie chciał wstać gdyż część plików systemowych zamieniła się na katalogi (dalej nie wiem jak to możliwe)
      Ogólnie za to plus jest taki że niemal zawsze mogę odratować linuxa, a windows jak padnie to już reinstalka.

    • whateveryousay

      Wspaniała recenzja, muszę zauważyć. Możemy się m.in. dowiedzieć, że Linux jest beznadziejny, bo nie obsługuje błędu sprzętowego jednego użytkownika i złych warunków pracy. :-)

    • mikolajs

      "-FS obecny na ~80% desktopów (NTFS) "
      Ostatnio zmieniałem rozmiar partycji NTFS korzystając z GParted i dystrybucji typu LiveCD.

    • _asd

      @Pan Łukasz "FAT32 jest też obsługiwany w pełni przez Linuxa. (…)"

      Naprodukowałeś się ale nijak się nie odniosłeś do tego co napisałem. To może zapytam wprost – do czego w windowsie obsługa ext3, ext4, reiserFS,etc ?

      jeśli ktoś chce przenosić dane pomiędzy komputerami, to najczęściej robi się to na pendrive'ach lub przez internet, dawno minęły czasy, kiedy brało się hdd w kieszeń i szło do kolegi wymienić się 'danymi'.

      Co do uprawnień dostępu do plików, to NTFS ma ich ze 4x więcej niż POSIX-owe rwx.

    • Pan Łukasz

      Powiem ci po co. Bo jak ktoś ma kilka systemów, to może sobie montować różne systemy plików. Ja np. zacząłem zabawę z FreeBSD i mogę sobie zamontować w GNU/Linux UFS2. To dosyć pomocne, szczególnie, jeśli jeszcze nie skonfigurowało się X.Org. Poza tym powodów może być mnóstwo innych, których teraz nie wymyślę. W ogólności, tak nieelastyczny pod tym względem system, jak Windows, można przyrównać do ślepca, który czuje swoje, a nie widzi cudzego.

    • Pan Łukasz

      Nadal używa się przenośnych dysków twardych podpinanych pod USB, nieprawdaż?
      Co do uprawnień, sztuką jest wymyśleć taki schemat uprawnień, żeby jednocześnie mógł z niego w warunkach domowych korzystać zwykły użytkownik, i można było go wykorzystywać przemysłowo. Udało się to w UNIX-ie. rwx-y są tak intuicyjne, że łatwo się ich nauczyć i nimi zarządzać, a w razie potrzeby istnieje ich rozszerzenie w postaci POSIX ACL. Zarządzanie zaś Windowsowymi ACL-ami, które mają nawet negatywne uprawnienia (!) jest sztuką dostępną raczej dla administratorów. Więcej, ale czy lepiej? Może w tej dziedzinie co za dużo, to niezdrowo?

    • xyz

      Nie karmić.

  • Greg

    Patrząc po filmie to szału nie ma. Chyba, że nie rozumiem istoty Waylanda. Co mi to da? Lepszą wydajność skoro i tak sterowników nie ma.

    • Chodzi o to, aby zmniejszyć opóźnienia w przesyłaniu informacji, pomiędzy różnymi podsystemami. Poza tym, oddzielenie w końcu API OpenGL od całego środowiska z którym jest zintegrowane. Kolejna sprawa, to wykorzystanie funkcji, jakie są zawarte w jądrze. Dodatkowo klient API X11 posiada 1,278 punktów wejścia, podczas gdy Wayland tylko 135, czyli jest 15 razy większe :)
      Warto przeczytać sobie wpis: The damn small Wayland.

  • pytacz

    Co to jest transparentość sieciowa? Do czego to służy?

  • Pingback: Wayland 1.0 | OSWorld.pl()

  • Pingback: News Wayland 1.0()

  • Pingback: Canonical przedstawia nowy serwer wyświetlania – Mir | OSWorld.pl()

  • Pingback: Dlaczego Canonical porzuciło Waylanda na rzecz Mir? | OSWorld.pl()

  • Pingback: Martin Gräßlin – KWin nie będzie obsługiwało Mir | OSWorld.pl()

  • Pingback: KDE wybiera nowy menedżer logowania dla Plasma Workspaces 2 | OSWorld.pl()

  • Pingback: MATE Desktop Environment szykuje się na Waylanda | OSWorld.pl()