Jdi na obsah Jdi na menu
 


Akcelerovaný desktop - historie a současnost

4. 1. 2008

Následující článek je originální článek ze serveru LinuxExpres


Akcelerovaný desktop - historie a současnost

Akcelerovaný desktop. 3D desktop. Rotující kostka. To jsou pojmy, které zajímají mnoho uživatelů Linuxu. Je to logické, konkurenční OS X nebo Windows Vista s Aero grafické efekty nabízejí také. A běžného uživatele věci jako plánovač nebo podpora mnoha souborových systémů těžko přesvědčí tak jako „úžasné“ grafické efekty. Tento článek je zaměřen na historii a současný stav těchto technologií dostupných na Linuxu.


Obrázek:  03.jpg

Compiz Fusion: gumové efekty


Historie je učitelkou

Je dobré si alespoň stručně shrnout to, co se odehrálo v letech minulých a podívat se na zajímavá data:

  • rok 1994: První prototyp kolaborativního 3D prostředí OpenCroquet napsaného ve Smalltalku.
  • rok 2000: Mac OS X a jeho Quartz Compositor – čili první komerční a široce používaný desktop obohacený o grafické efekty.
  • rok 2000: X server XFree86 4.0.1 obsahuje XRender, který umožňuje X serveru překrýt dva objekty a určit jim průhlednost.
  • rok 2003: V Mac OS X v10.3 je představena technologie Exposé, která umožňuje přeuspořádat okna na ploše tak, aby k nim byl okamžitý přístup.
  • rok 2003: Microsoft představil DWM, který byl začleněn do nové verze Windows Vista.
  • rok 2003: Sun představil svůj 3D desktop - Projekt Looking Glass (Java). Jedná se o technologické demo zaměřené především na dostupné efekty a propagaci možností platformy Java.
  • rok 2004: Xorg 6.8 obsahuje podporu pro průhlednost oken a další efekty, které využívají první kompozitní správci pro X11 - xcompmgr (následovaný kcompmgr, v současnosti integrovaný do kwinu).

Obrázek:  10.jpg

Compiz Fusion: Anotace – možnost kreslit po obrazovce


Základní schopnosti, jako například průhlednost oken a podobně, uměl Linux už od roku 2004. Ovšem nejdůležitější datum z hlediska popularity a zájmu je:

  • únor 2006: Novell zveřejnil technologii Xgl, která nastartovala zájem o akcelerovaný desktop na Linuxu. Společně s ní byl představen kompozitní správce oken Compiz.
  • květen 2006: Xorg 7.1 obsahuje technologii AIGLX primárně vyvinutou komunitou Fedora. Její vývoj byl urychlen zveřejněním technologie Xgl Novellem.
  • září 2006: Z vývojové větve compiz-QuinnStorm je vytvořen projekt Beryl.
  • leden 2007: Představen kwin composite, správce oken pro připravované KDE4.
  • leden 2007: Správce oken Xfwm (prostředí Xfce) získal (některé) schopnosti kompozitního správce.
  • duben 2007: Mandriva 2007 Spring obsahuje nový „2,5D“ správce Metisse.
  • srpen 2007: Dochází ke sjednocení projektů Compiz a Beryl pod názvem Compiz Fusion.

Obrázek:  13.jpg

Ovládací centrum Compiz Fusion


GLX - OpenGL Extension to the X Window System je rozšíření X serveru, které jej spojuje s OpenGL. Umožňuje oknům obsluhovaným X serverem používat rutiny z OpenGL.

Historie je dlouhá a plná různých zkratek, ovšem ten hlavní boom odstartoval až Xgl v únoru roku 2006. Od té doby se rotující kostka stala symbolem grafických schopností linuxových distribucí.

Obrázek:  00.jpg

Kostka je neodmyslitelným symbolem akcelerovaného desktopu v Linuxu


Co to vlastně je - aneb Definice

3D desktop, akcelerovaný desktop – to jsou dva hlavní pojmy, pod nimiž je obecně znám "takový ten desktop, kde jsou gumová okna a rotující kostka". Ovšem to není úplně správně a terminologie je trochu složitější:

  • Akcelerovaný desktop – Může být i klasický 2D desktop, v případě, že jsou vykreslovací operace akcelerovány pomocí grafické karty.
  • 3D desktop - Jedná se o zcela nový přístup k desktopu a práci s ním. Okna jsou plnými 3D objekty. Takto jsou koncipovány Looking Glass a OpenCroque.
  • Kompozitní desktop – mezivrstva aplikující různé efekty na okna, které jsou (v ideálním případě) prováděny prostřednictvím grafické karty.

Obrázek:  08.jpg

Compiz Fusion: Expo efekt


Paradoxně se i tento článek jmenuje (z čistě marketingových důvodů) naprosto špatně. Ovšem důležitá je tato poznámka:

3D nebo kompozitní desktop musí být akcelerovaný, pokud má být zároveň použitelný!


Obrázek:  09.jpg


Kompozitní správce oken

Kompozitní správce oken je nejdůležitější složkou toho, co se označuje jako akcelerovaný desktop. Jedná se o program, který z okna vytvoří pixmapu a tu spolu s transformačními příkazy pošle grafické kartě, která provede příslušné grafické operace. Schématicky je vše znázorněno obrázkem.

Obrázek:  20.jpg

Schéma fungování kompozitního správce oken


AIGLX a Xgl

OpenGL (Open Graphics Library) vzniklo rozšířením starší knihovny IRIS GL (Silicon Graphics IRIS Graphics Library), z čehož logicky plyne, že původním otcem této technologie je SGI. Dnes je OpenGL průmyslovým standardem pro počítačovou grafiku (jak 2D tak 3D), který je zastřešen konsorciem ARB (Architecture Review Board). Technicky jde o platformně nezávislé API, které umožňuje programátorům přistupovat přímo k funkcím grafické karty. Navíc existují i softwarové implementace této technologie (například Mesa), které ovšem umožňují provádět OpenGL funkce, které dostupný hardware přímo nedokáže akcelerovat.


Obrázek:  06.jpg

Compiz Fusion: zoom plugin


API (Aplication Programming Interface) je sada definovaných funkcí a datových struktur, pomocí kterých může programátor používat externí knihovny. Oddělení rozhraní od implementace je dobrým zvykem, protože umožňuje implementovat nejrůznější kontroly a navíc je možné průběžně optimalizovat implementaci, přičemž se nemusí měnit aplikace, které danou knihovnu používají. Změny API se obvykle dělají pouze při nové verzi knihovny.


V souvislosti s kompozitním desktopem na Linuxu jsou slyšel pojmy AIGLX a Xgl. Obě technologie dělají v konečném důsledku to samé, ovšem liší se tím, jak vlastně používají OpenGL ke komunikaci s grafickou kartou. AIGLX (či-li Accelerated Indirect GLX – akcelerované nepřímé GLX) vytváří speciální proud příkazů, který funguje obdobně, jako kreslicí rutiny X11 – způsobem klient/server. Tato nepřímá (proto slovíčko Indirect) cesta způsobuje, že jsou kreslicí příkazy odeslány na X server, který je pomocí GLX posílá grafické kartě. Nepřímý způsob umožňuje zachytit proud příkazů, udělat z něj pixmapu a příkazy pro grafickou kartu a to potom poslat grafické kartě.

Obrázek:  07.jpg

Compiz Fusion: enhanced zoom plugin (všimněte si tooltipu u tlačítka)


GLX_EXT_texture_from_pixmap je další možností, kterou jako první přinesly ovladače karet nVidia. Jedná se o rozšíření OpenGL, které umožňuje zachycení proudu OpenGL příkazů do textury, která se nakonec renderuje. Technicky umožní použít buffery barev jak pro rendering, tak pro texturování (čímž se podobá WGL_ARB_render_texture).

Naproti tomu Xgl používá jiný způsob – otevře okno, v němž se prostřednictvím OpenGL knihovny posílají příkazy přímo grafické kartě. O okno a akceleraci samotnou se pak stará přímo Xgl, který je druhým běžícím X serverem v systému.

Jak Xgl tak i AIGLX dělají prakticky to samé; lidé se ptají na vztah obou technologií. Podle vývojářů Fedory jde o důsledek uzavřeného vývoje technologie Xgl, která neumožňovala spolupráci s komunitou AIGLX.


xcompmgr a kcompmgr

Tito kompozitní správci s velice těžko vyslovitelným názvem se objevili těsně po tom, co získal X server podporu pro průhlednost oken a rozšíření Composite. Z technického hlediska mezi nimi není rozdíl, protože kcompmgr používá stejný kód, pouze přidává KDE nadstavbu. Navíc je v současné době integrován ve správci oken prostředí KDE kwin. Oba správci podporují:

  • Průhlednosti oken
  • Stíny
  • Stmívací efekty

Výhodou je, že jim stačí funkční 2D akcelerace, takže fungují prakticky vždy. Na druhou stranu jsou daleko pomalejší než Compiz a jeho varianty.

Obrázek:  11.jpg

Možnosti nastavení kompozitního správce v KDE


Obrázek:  12.jpg

Kompozitní správce kcompmgr v akci


Compiz, Beryl a Compiz-Fusion

Jedná se o názvy, které pravděpodobně zaslechl už každý, kdo něco o „gumových“ okýnkách v Linuxu ví. V únoru roku 2006 byl spolu s Xgl glxcompmgr, který byl záhy nahrazen i novým kompozitním správcem oken Compiz. Vzhledem k tomu, že je vývoj kompozitního správce atraktivní (výsledek se snadno prezentuje i neodborníkům) a poměrně jednoduchý, začal být David Reeman zavalen požadavky komunity na začlenění toho či onoho efektu. Postupem času se uzavřený způsob vývoje, který David reprezentoval, komunitě přestal líbit a jeden z vývojářů s přezdívkou QuinnStorm založil vlastní vývojovou větev compiz-quinnstorm, která se v září roku 2006 transformovala na projekt Beryl. Ten mimo otevření vývoje odstranil i tolik kritizovanou závislost na GNOME a gconfu a získal si popularitu.

Obrázek:  01.jpg

Průhlednost v akci


Časem se od sebe oba manažery - původní Compiz, na jehož vývoji se pokračovalo dál - a nový Beryl vzdálily natolik, že nebylo jednoduché portovat opravy z Compizu do Berylu nebo pluginy z Berylu do Compizu. Komunita Berylu také doplatila na překotný vývoj a soustředění se na pluginy, místo na architekturu jádra. Výsledkem dohody mezi vývojáři je tedy vznik projektu Compiz-Fusion. Ten používá stejné jádro jako Compiz, ovšem není závislý na gconf a má otevřenější vývoj pro pluginy. Díky tomu je možné do něj jednoduše přidávat vylepšení Compizu (který se stále vyvíjí) a z něj naopak užitečné efekty a pluginy. Compiz tedy poskytuje jádro a základní sadu pluginů, kdežto Compiz-Fusion je komunitní hřiště pro vývoj nových efektů. Compiz-Fusion je velmi podobný Berylu. Nabízí přepracovaného správce nastavení, nové GTK a KDE dekorátory oken a několik nových efektů. Pravděpodobně nejvíce užitečné jsou enhanced zoom a anotace.

Obrázek:  02.jpg

Compiz Fusion: průhlednost oken


Metisse

Metisse je produkt velmi zajímavého projektu zaměřeného na nové formy interakce člověka s počítačem. Projekt byl sponzorován Mandrivou a také byl uveden pouze v Mandriva 2007.1 Spring. Je to trochu škoda, protože na rozdíl od Compizu staví Metisse na použitelnosti. To se projevuje tím, že každý, jakkoli změněný grafický prvek není pouhá pixmapa, jako tomu je u Compizu, ale aktivní prvek, který je možné nadále používat.

Obrázek:  05.jpg

Compiz Fusion: jiný pohled na kostku


V terminologii OpenGL je bitmapa mapa bitů – monochromatický obraz, kde je každý pixel reprezentován jedním bitem. Pixmapa je mapa pixelů, přičemž je jeden pixel reprezentován více bity. Explicitní rozlišování těchto pojmů vypovídá o stáří technologie OpenGL. Více se dozvíte v sedmé části seriálu Grafická knihovna OpenGL na root.cz.


Je označován za 2,5D desktop a technicky jde o upravený Fwvm. Nejzajímavější technologií je bezesporu Fascades, které umožňují přesouvat jednotlivé prvky oken a postavit si tak vlastní uživatelské rozhraní na úrovni správce oken. Nevyhovuje vám výběr nástrojů v GIMPu? Udělejte si vlastní lištu.

Obrázek:  04.jpg

Compiz Fusion: efekt Exposé


Projekt Looking Glass

Je to pravý opak Metisse. Je zaměřený pouze na grafické efekty a je to spíše technologické demo společnosti Sun, které má ukázat, co vše jejich Java umí. Ano, Java, protože je Looking Glass napsáno v tomto programovacím jazyce. Kvůli tomu je nutné počítat s paměťovými nároky samotného JVM, ale pokud funguje akcelerace, je prostředí rychlé jako kterékoli jiné. K dispozici jsou verze pro Linux a Solaris, přičemž ta druhá je, dle ohlasů, o něco lepší. Pro odzkoušení není třeba instalovat, stačí si stáhnout příslušné LiveCD.

OpenCroquet

Jedná se open source prostředí pro tvorbu 3D a 2D vzájemně propojených více uživatelských aplikací, které běží na mnoha operačních systémech a zařízeních. Komunikace funguje na principu peer2peer technologie, podporu pro sdílení zdrojů a synchronizované výpočty. Aplikace potom automaticky vytváří propojení s ostatními a umožňují sdílení výsledků i pracovního prostředí. OpenCroquet používá prostředí Squeak a je napsáno v jazyce Smalltalk.

Obrázek:  14.jpg

Prostředí OpenCroquet v praxi


Tento článek je upravená přednáška Michala Vyskočila, kterou proslovil na konferencích LinuxAlt (konala se 3. a 4. 11. 2007 v Brně) a Open Workshop Olomouc (konala se 24. 11. 2007 v Olomouci).


Odkazy

Pokud si chcete přečíst více o této problematice, navštivte tyto odkazy: