Rubriky: Mozilla

Azure jako náhrada knihovny Cairo

Joe Drew, vývojář Mozilly věnující se grafice a její akceleraci, se na svém blogu rozepsal o budoucnosti renderování v Mozille — projektu Azure a možnosti náhrady grafické knihovny Cairo.

Při vykreslování stránky je nejprve stránka dle své struktury rozdělena na nezávislé vrstvy. Každá z těchto vrstev je pak vykreslena pomocí multiplatformní 2D knihovny Cairo. Toto vykreslování může být dle platformy hardwarově akcelerováno (tzv. akcelerace obsahu) – např. pomocí Direct2D na Windows Vista a 7. Po vykreslení jednotlivých vrstev jsou vrstvy poskládány dohromady a vykresleny na obrazovce, což může být provedeno opět pomocí knihovny Cairo, či v lepším případě přímo pomocí prostředků Direct3D/OpenGL (tzv. akcelerace kompozice).

Pří zjišťování možností zrychlení vykreslování bylo objeveno, že velkou brzdou je samotné použití knihovny Cairo. Ta totiž pro své výpočty používá formát pevné řádové čárky, zatímco interní výpočty a volání Direct2D probíhají ve formátu plovoucí řádové čárky. Pro každou hodnotu je tak potřeba dvakrát konvertovat číselný typ. Další režii pak přidává samotná stavovost knihovny Cairo, která je vzhledem ke stavovosti ostatních komponent zbytečná.

Z výše uvedených důvodů se proto vývojáři rozhodli vytvořit novou 2D grafickou knihovnu Azure, která bude bezstavová a její API bude blízké Direct2D. Spolu s ní vytvoří i několik 3D backendů, které umožní provádět 2D volání Azure pomocí 3D API. Cílem tohoto kroku je dostat hardwarovou akceleraci obsahu i na platformy, které 2D akceleraci v současnosti nemají – např. Windows XP, mobilní telefony, atd.

Vzhledem ke kvalitě 3D ovládačů grafických karet však Cairo z Mozilly jen tak nezmizí, bude se totiž používat jako nouzové řešení pro případ chybné či žádné podpory 3D.

4 komentářů k článku “Azure jako náhrada knihovny Cairo”

  1. DiGi napsal(a)

    Mě by zajímalo jak to je vlastně s výsledným zatížením systému. Je sice báječné, že vykreslování sebereme CPU a dáme jej GPU – ale GPU obvykle žere mnohem více než CPU. Jaká je tedy výsledná výdrž nějakého notebooku při testovacím používání s vypnutou a se zapnutou HW akcelerací.

  2. Pavel napsal(a)

    Řekl bych, že v českém prostředí se spíš používají výrazy „pevná/plovoucí řádová ČÁRKA“ 🙂 Ale to je jen detail…

  3. Pavel Franc napsal(a)

    Pravda, u nás máme čárky 🙂

  4. Tom napsal(a)

    [1] na tohle nejde odpovědět stylem zapnutá akcelerace = vyšší/nižší spotřeba. Ano, GPU mají v plném zatížení vyšší odběr než průměrný CPU, ale taky mají mnohonásobně vyšší výpočetní výkon. Takže je potřeba zjistit, jak render určitého prvku stránky zatíží procesor a jak GPU a po jakou dobu. Podle toho a podle počtu prvků na stránce se teprve dá určit jestli zrovna tahle stránka zatěžuje zrovna tenhle hardware víc při použití GPU nebo procesoru.
    Když bych to měl shrnout: každá stránka bude každý hardware zatěžovat trochu jinak, ale jestli čekáte rozdíly typu když zapnu akceleraci tak se mi zvýší/sníží výdrž počítače o půl hodiny, tak na to rovnou zapomeňte…