Login
Newsletter
Werbung

Di, 18. Dezember 2018, 13:52

Software::Kernel

Android erstmals mit Standard-Linux-Grafikschicht

Erstmals nutzt Android jetzt die Standard-Linux-Grafikschicht - allerdings nur auf einzelnen Geräten. Zuvor hatte Android auf Eigenentwicklungen gesetzt, statt die Linux-Grafikschicht direkt zu verbessern.

android.com

Gustavo Padovan von Collabora feiert in einem Blog-Beitrag die Tatsache, dass Android-Geräte jetzt ohne Google-Modifikationen bei der Grafikschicht auskommen können. Das erste Gerät, das tatsächlich mit Standard-Linux-Grafiktreibern läuft, ist das Pixel 3 von Google. Padovan bezeichnet das als einen Traum, der wahr wurde. Es dauerte allerdings zehn Jahre, dieses Ziel zu erreichen.

Padovan rekapituliert in seinem Beitrag die Historie der Grafiktreiber von Android und Linux. Als Android 2008 erschien, besaß es keine wirkliche Grafikschicht, sondern schrieb seine Ausgaben direkt in den Framebuffer. Dies funktionierte in den ersten Jahren, wohl weil immer nur eine Applikation gleichzeitig aktiv sein konnte. Als jedoch die Anforderungen stiegen, schaute sich das Android-Team vor etwa sechs Jahren die Linux-Grafikschicht an und stellte fest, dass sie den Anforderungen nicht genügte. Sie war sicherlich ausreichend für X11, konnte aber keine atomaren Bildschirm-Updates und keine explizite Synchronisation anbieten, auch führte sie zu zu hohem Energiebedarf für mobile Geräte. Weil wohl wie üblich die Zeit drängte, startete Google einen Fork der Grafikschicht, während gleichzeitig die Grafikschicht im offiziellen Kernel an diversen Problemen litt und ihre Schnittstelle veraltet war. Die Entwickler kannten die Probleme, doch sie zu lösen kostete einige Zeit.

Das Einstellen des Grafikmodus wurde bis 2008 den Anwendungen wie X11 überlassen, dann wurde es im Kernel implementiert (Kernel Modeset, KMS). Wie Padovan berichtet, war dies bereits ein revolutionärer Fortschritt, aber perfekt war es nicht. Zum Erzeugen der Ausgabe waren mehrere Systemaufrufe nötig, und die mangelnde Synchronisation führte dabei oft zu Flackereffekten. Es dauerte bis 2015, bis eine Gruppe um Daniel Vetter von Intel das atomare Einstellen des Grafikmodus implementiert hatte. Um dies zu ermöglichen, wurde das DRM-Subsystem ganz neu strukturiert. In der Folge wurde es viel einfacher, Treiber zu schreiben. Die wichtigsten Treiber wurden nacheinander umgestellt, und viele neue kamen hinzu.

Was dann noch fehlte, war die explizite Synchronisation. Android hatte sie bereits implementiert, damit die Anzeige jederzeit verzögerungsfrei war und das System den Zustand der Puffer genau kannte. In maßgeblich von Collabora geleisteter Arbeit wurde das Android-Sync-Framework umstrukturiert und in den offiziellen Linux-Kernel gebracht. Zugleich wurde die explizite Synchronisation zur DRM-Schicht hinzugefügt.

Damit waren alle Voraussetzungen erfüllt, dass Android mit der Standard-Linux-Grafikschicht laufen konnte. Realität wurde dies erst im November mit dem neuen Pixel 3-Smartphone von Google. Wann andere Hersteller folgen, ist unbekannt. Eine weitere interessante Frage ist, wie groß der Abstand zwischen den Android-Kernel und dem offiziellen Linux-Kernel noch ist. Er ist in den letzten Jahren auf jeden Fall stark gesunken, aktuell unterscheiden sich der gemeinsame Android-Kernel und Linux 4.14.0 noch in 355 Änderungen, von denen ein großer Teil Treiber sind. Die Smartphone-Hersteller fügen allerdings oft noch eigene Änderungen hinzu. Auch diese dürften größtenteils Treiber betreffen.

Werbung
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung