Hlavní navigace

Wayland možná časem nahradí letitý X Server

22. 7. 2011
Doba čtení: 6 minut

Sdílet

S několika výjimkami se dá říct, že X Server je dnes součástí každého linuxového desktopu a inovace uživatelského prostředí šly často ruku v ruce se změnami právě v něm. Po 25 letech ale nastal čas protokol X opustit a jít zase o dům dál. V tom domě bydlí Wayland a i když je mnohem prostší, určitě ho oceníte.

Autorem projektu Wayland je Kristian Høgsberg, který na něm začal pracovat v roce 2008, během práce ve firmě Red Hat. Až do minulého roku se o Wayland moc nemluvilo, ale pak se stal středem pozornosti na všech linuxových portálech včetně Roota. Pod názvem Wayland nic smysluplného nehledejte, autor si ho zvolil při cestě do města Wayland ve státe Massachusetts v USA. I když není zdaleka kompletní, některé distribuce už přemýšlí o jeho nasazení.

První bude pravděpodobně MeeGo, do kterého je Wayland tlačeno firmou Intel. V tomto ohledu má MeeGo proti ostatním navrch, protože je určeno pro mobilní zařízení od telefonů pro tablety. Ty jsou často operačnímu systému přizpůsobeny, takže Intel ví, na co má optimalizovat. Na druhé místo z těch výraznějších hráčů se bude tlačit Ubuntu s Fedorou. Jelikož se firmě Canonical podařilo docela úspěšně zaklínit prostředí Unity mezi uživatele, je opuštění klasického GNOME a vyhození X Serveru dalším logickým krokem. MeeGo by mohlo být bez X Serveru možná už na konci tohoto roku. Podobně na tom je třeba i Android, který nikdy X Server nepotřeboval a vše vykresluje do framebufferu.

Unity je řešené jako plugin do Compizu a není náhodou, že Canonical najal vývojáře Compizu Sama Spilsburyho, který se zasloužil o oddělení závislostí na X Serveru do pluginu a tím uvolnil cestu pro Wayland. Na tomto místě by Unity mohl pomoci výkonový „boost“, který Wayland přinese. Druhou variantou je Unity 2D, které je postavené na knihovnou Qt. Canonical sice zvolil cestu dvou implementací toho samého, ale v tomto případě to v adopci Waylandu distribucí Ubuntu bránit nebude, Qt momentálně Wayland podporuje, a jen pro doplnění, GTK+ je na tom podobně.

Další distribucí je Fedora, ta je v zařazování novinek známá, příkladem může být třeba použití Btrfs jako výchozího souborového systému ve Fedoře s číslem 16, která vyjde v říjnu tohoto roku. Podle Adama Jacksona to s Waylandem nebude jiné.

Zatímco nejpoužívanější knihovny podporu Wayland mají, s prostředími to bude ještě horší. KDE ve verzi 4.7 přidalo podporu pro OpenGL ES, které je zatím podmínkou. O Waylandu se otevřeně hovoří a je dokonce k dispozici i základní podpora. GNOME je na tom naopak, protože o GNOME-Shellu jsem ve spojitosti s Waylandem nenašel ani čárku.

Co je na X špatného

Jistě se ptáte, co je na X Server a X protokolu tak špatného, že je potřeba ho nahradit. Na to velmi dobře odpoví Wayland FAQ, ze kterého jsem si dovolil kousek přeložit:

„Problém s X je … je to X. Když děláte X server, je tu ohromné množství funkcionality, které musíte podporovat, abyste mohli komunikovat přes X protokol, i když to nikdo nepoužije. Například core fonts je původní model pro práci s fonty, který se staral o vykreslování textu na obrazovku mnoho let protokolu X verze 11. To zahrnuje *code tables, glyph rasterization, kešování, XLFD (opravdu, XLFDs!) a také kompletní renderovací API, které vám dovolí kreslit tečkované čáry, polygony, oblouky a mnoho jiných věcí stylu 80. let. V mnoha částech jsme byli schopni udržovat X Server moderní přidáním rozšíření jako XRandR, XRender, COMPOSITE a několik dalších, méně užitečných, ale nikdy nebudeme schopni se zbavit renderovacího API a mnoho dalších komplikací, které se na moderním desktopu téměř nepoužívají. S Wayland můžeme odsunout X Server a mnoho dalších starých technologií na pozici vrstvy, která se postará o kompatibilitu, namísto jádra moderního desktopu. Možná to chvilku potrvá, ale nikdy se tam nedostaneme, pokud to nebudeme plánovat.

X protokol byl poprvé představen v roce 1984 jako několika týdenní snaha vylepšit W window system. V roce 1984 to byl určitě dobrý nápad a jeho autor určitě netušil, že se bude používat ještě dalších 30 let. X verze 11, kterou používáme do dnes, byla představena v roce 1987 a od té doby už se jen přidávaly nové a nové vlastnosti, se kterými Wayland ani nepočítá.

Co Wayland přinese

Z dnešního pohledu se může zdát X Server jako obrovský moloch, který určitě nekopíruje UNIXovskou filozofii psát jeden program pro jeden účel a psát ho dobře. Dnes už bylo mnoho věcí přesunuto do jádra nebo do různých knihoven a toho samozřejmě Wayland naplno využívá. Díky tomu bude moct být mnohem menší a rychlejší. Možná ještě víc než uživatelé budou Wayland vítat vývojáři programů, kteří museli s X Serverem do teď nějak spolupracovat.

Teprve když si porovnáme, jak obě řešení fungují, pochopíme, proč je Wayland krokem vpřed. K tomu nám pomůže popis architektury a dva obrázky na domácích stránkách.

Začneme X Serverem. Když uživatel provede nějaký vstup, jádro si toho všimne a pomocí evdev ovladače dá vědět X Serveru. Na něm pak je, aby rozhodl, kterému připojenému klientovi (aplikaci) se odešle informace o tomto vstupu. Na scénu poprvé vstupuje kompozitor, který se stará o různé efektní úpravy. To může být třeba vylepšení okrajů nebo jenom otočení. Vzhledem k tomu, že je kompozitor oddělen od X Serveru, tak ten občas neodhadne, jakému oknu vstup pošle, což samozřejmě vede k podivnému chování.

Když klient dostane informaci o vstupu, rozhodne se, co udělat a případně změní něco v obsahu okna, třeba zvýrazní tlačítko, na které se kliklo. To vyvolá požadavek na vykreslení odeslaný zpět na X Server. Když je požadavek přijat, X Server přepošle požadavek ovladači, který programu umožní vykreslit co potřebuje. X Server také vypočítá, která oblast se změní a pošle to kompozitoru. Ten provede svoji transformaci a upraví danou část okna podle sebe. Kompozitor vyvolá požadavek na vykreslení a pošle také svůj back buffer. X Server pak překopíruje back buffer do front bufferu nebo prohodí jejich ukazatele.

Wayland má mnohem střídmější návrh. Když uživatel dá nějaký vstup, ten projde do Wayland serveru s kompozitorem. Jelikož jsou správa oken a kompozitor spojení, lze přesně určit, kterému klientovi se má vstup odeslat. Souřadnice události jsou klientovi přepočítány na jeho oblast. Transformační efekty pro okna musí být vytvořené tak, aby šly souřadnice přepočítat zpátky. Když klient dostane informace o události o vstupu, vykreslí případné změny a pošle Wayland serveru informaci o tom, co se změnilo. Na rozdíl od X Serveru, zde se provádí vykreslování na straně klienta, tedy aplikace.

Samotná komunikace klienta se serverem byla u Waylandu dost osekaná a zatím neexistuje podpora pro klienty běžící na jiném stroji, i když se na ní pracuje. V 80. letech byly terminály připojené k hlavnímu serveru ještě běžné, ale v dnešní době je podporou této vlastnosti pro X Server spíše brzdou, než že by to přinášelo něco pozitivního. Navíc X protokol nebyl přes síť nikdy nějak rychlý.

CS24 tip temata

Závěr

Ještě to pár měsíců nebo možná let potrvá, než bude Wayland připravený na nasazení a musí se před tím vyřešit spousta problémů včetně uzavřených ovladačů. Wayland je závislý třeba na kernel-mode-settingu, což nepodporuje žádný z uzavřených ovladačů a například NVIDIA se nechala minulý rok slyšet, že podporu pro Wayland zatím neplánuje. Zamíchat kartami by mohlo nasazení Waylandu v Ubuntu nebo v jiných významných distribucích.

Pokud si chcete Wayland zkusit, potřebujete grafickou kartu NVIDIA, AMD nebo Intel a k ní otevřené ovladače. Vše, co je potřeba, najdete v sekci building na domácích stránkách projektu Wayland.

Autor článku

Adam Štrauch je redaktorem serveru Root.cz a svobodný software nasazuje jak na desktopech tak i na routerech a serverech. Ve svém volném čase se stará o komunitní síť, ve které je již přes 100 členů.