Android coraz bliżej Linuksa: dobrze jest mieć całkowicie otwarty system

Czy Android może być bliższy Linuksa? Tak, wiemy że Androidbazuje na Linuksie, ale zarazem architektura systemu niewiele mawspólnego z tym, co wykorzystywane jest w typowych desktopowychdystrybucjach, a nawet mobilnych systemach (np. Sailfishu czyTizenie). To jednak powoli się zmienia. W 2011 roku Linus Torvaldspowiedział, że kiedyś Android i Linux zejdą się razem,oceniając, że nastąpi to nie wcześniej niż za 5 lat. Efekty tegozbliżenia możemy już obserwować w stosie grafiki.

Android coraz bliżej Linuksa: dobrze jest mieć całkowicie otwarty system

22.09.2017 | aktual.: 23.09.2017 11:38

U podstaw stosu grafiki Androida znajduje się oczywiścielinuksowy kernel. Nad nim działa najczęściej własnościowysterownik producenta GPU – łączący się przez binarny interfejsblob, który właśnie tak bardzo utrudnia aktualizowanieandroidowych systemów. W blobie tym znajdziemy alokator pamięci,mechanizmy obsługi OpenGL czy Vulkana itd.

Nad kernelem i jego sterownikiem znajduje się Hardware ComposerHAL (obecnie HWC2), częściowo osadzony w sterowniku grafiki idziałający w przestrzeni użytkownika. Implementuje on interfejsygrafiki (OpenGL i Vulkan) zestawiając obiekty do wyświetlenia naekranie i wprowadzając opisujące je abstrakcje, pozwala teżwykorzystać sprzętową akcelerację kompozycji, procesu, którysamo GPU robi raczej słabo.

Własnościowy stos grafiki Androida vs opensource'owa implementacja (źródło: prezentacja Roberta Fossa)
Własnościowy stos grafiki Androida vs opensource'owa implementacja (źródło: prezentacja Roberta Fossa)

Na samym szczycie znajduje się menedżer wyświetlaniaSurfaceFlinger. Przyjmuje on obiekty graficzne od aplikacji iinterfejsu użytkownika (pasek stanu, pasek nawigacyjny, tło), łączyje w jeden bufor ramki i wprowadza go na ekran. Jego komunikacja zesterownikiem odbywa się właśnie przez HWC2.

Taka architektura sprawia, że wykorzystywane w Androidzielinuksowe jądra są dość przestarzałe. Staraniem Google’a iproducentów przenoszone są łatki i poprawki z nowszych wydańkernela, ale trudno tu mówić o długoterminowym wsparciu, większośćurządzeń zostaje zapomniana po 2-3 latach – a jeśli społecznośćnie dysponuje kodem źródłowym sterowników, to praktycznie nie maszans, by korzystać z nowych wersji kernela i pozostałychkomponentów oprogramowania.

Czy jest szansa, by kiedyś było inaczej, a użytkownicy Androidamogli korzystać z całkowicie wolnego i otwartego systemu, którywspierany będzie przez lata? Pod każdym względem wypada on lepiej,niż własnościowy odpowiednik: regularne aktualizacjebezpieczeństwa, stały dopływ nowości, poprawki błędów, rosnącawydajność, malejące zużycie energii. Oczywiście dla producentówsprzętu nie wygląda to za dobrze, nie jest w ich interesie, byużytkownik korzystał ze smartfonu dłużej niż 2 lata – więcobecny stan rzeczy może zostać zmieniony tylko przez społeczność.

Robert Foss, entuzjasta otwartego oprogramowania i ekspert odprocesorów Freescale i.MX, wystąpił na konferencji Open SourceSummit North America, przedstawiając możliwości uruchomieniaAndroida z całkowicie wolnym stosem grafiki, co w perspektywieotworzyłoby drogę do urządzeń mobilnych ze wsparciem sięgającym10 lat i więcej, urządzeń, które mogą przeżyć swoichproducentów.

Jak wyjaśniał, pozbywając się własnościowego sterownikagrafiki, konieczne jest dostarczenie zarówno otwartego sterownikadla samego GPU, jak i implementacji interfejsu programowania HWC2. Naszczęście ten ostatni już powstał, i to w samym Google – jakoprojekt drm_hwcomposer.Google stworzyło go w bardzo konkretnym celu – chodziło ouruchamianie aplikacji androidowych na ChromeOS-ie, z całkowitympominięciem implementacji dostarczanych przez producentów GPU.Wykorzystuje on bezpośrednio infrastrukturę renderującąlinuksowego kernela (DRM – Direct Rendering Manager), zawiera teżallokator pamięci gbm_gralloc i komponenty niezbędne do działaniabiblioteki grafiki 3D – Mesa.

Sam drm_hwcomposer nie wystarczył jednak, by zapewnić wsparciedla Androida. Dopiero ostatnie innowacje w kernelu na to pozwoliły.Najważniejszą z nich jest frameworksynchronizacji, który pozwala wielu komponentom pracować nawspółdzielonym buforze, dzielić pracę między CPU i GPU. Drugąważną zmianą jest wprowadzenie interfejsu programowania dla trybuatomicznego w DRM, pozwalającego na uzyskanie doskonałych ramek,rysowanych przy możliwie najmniejszym zużyciu energii. Ponownie,jest to implementacja rozwiązaniaopracowanego wcześniej przez Google, by poradzić sobie z mnogościąniekompatybilnych interfejsów grafiki mobilnych procesorówgraficznych.

iMX6 Android 5 Lollipop - L4B , Kernel 3.10.53

Oczywiście pozostaje kwestia samych sterowników grafiki. Jeśliszukamy całkowicie otwartych sterowników, sytuacja wyglądaznacznie gorzej. Możemy liczyć na niezbyt wydajny dziś już i.MX6z GPU Vivante gc3000, Snapdragony z serii 400 z GPU Adreno 306(Qualcomm wydał otwarty sterownik do płytki DragonBoard 410c) orazIntel HD Graphics z Atomów Bay Trail (płytka MinnowBoard Turbot).Niebawem dojdzie do tego Huawei Kirin 960 z grafiką Mali G71 (płytkaHiKey 960).

Szczególnie to ostatnie wygląda obiecująco: jeśli Huawei,jeden z największych dziś na świecie producentów smartfonów,dostarczy na androidowy rynek otwarty sterownik grafiki, może towpłynąć na Samsunga czy Qualcomma do zaoferowania czegoś innegoniż tylko binarne bloby. Urządzenia Huawei z procesorami Kirinmogłyby wówczas mieć zapewnione wsparcie na długie lata – i tobez specjalnych starań producenta.

Programy

Zobacz więcej
Wybrane dla Ciebie
Komentarze (183)