Το Android Q+ μπορεί να χρησιμοποιήσει το Vulkan Graphics API για την απόδοση του UI

Η Skia, η μηχανή γραφικών ανοιχτού κώδικα της Google, διαθέτει ένα σύστημα υποστήριξης Vulkan Graphics API. Αυτό το backend μπορεί να χρησιμοποιηθεί για την απόδοση της διεπαφής χρήστη σε Android Q ή νεότερη έκδοση.

Η επόμενη μεγάλη έκδοση του Android, το Android 9, πρόκειται να κυκλοφορήσει τον επόμενο μήνα για πολλές συσκευές. Σε αντίθεση με το Android Oreo όπου οι κύριες βελτιώσεις ήταν ως επί το πλείστον κάτω από την κουκούλα, το Android P προσφέρει περισσότερες δυνατότητες που αντιμετωπίζουν οι χρήστες όπως η ανανεωμένη διεπαφή χρήστη, οι χειρονομίες πλοήγησης και η ψηφιακή ευημερία, ενώ παράλληλα συνεχίζεται η εργασία στο Project Τριπλάσιος. Όμως, στα παρασκήνια, η Google έχει ανανεώσει τον τρόπο λειτουργίας της απόδοσης γραφικών στο Android. Στο Android Oreo, η Google άρχισε να δοκιμάζει ένα OpenGL backend με επιτάχυνση υλικού στη μηχανή γραφικών Skia, το οποίο ολοκληρώθηκε στο Android P. Ωστόσο, η Google δεν σταματά εκεί, καθώς η εταιρεία σχεδιάζει να το εφαρμόσει Vulkan backend της μηχανής γραφικών Skia που θα προσγειωθεί στο Android Q ή σε μεταγενέστερη έκδοση.

Τα στοιχεία για αυτό προέρχονται από α σχόλιο υποβλήθηκε από έναν μηχανικό της Google στο ανοιχτού κώδικα Chromium Gerrit. Το σχόλιο αναφέρεται σε μια αναφορά σφάλματος σχετικά με την επερχόμενη εφαρμογή του Vulkan Graphics API για το πρόγραμμα περιήγησης Google Chrome στο Android. Το σχόλιο αναφέρει ότι, κάποια στιγμή στο μέλλον, "θα υπάρξει απαίτηση" να υπάρχει Vulkan API υποστήριξη για το Android WebView όταν το πλαίσιο "[Android] πρόκειται να αρχίσει να χρησιμοποιεί το Vulkan για HWUI."


Απόδοση γραφικών στο Android

Για γνώσεις υποβάθρου, το Skia είναι μια μηχανή γραφικών ανοιχτού κώδικα, 2D που χρησιμοποιείται στο Google Chrome, στο Chrome OS, στο Android, στο Flutter και σε άλλα μεγάλα έργα. Το Skia είναι μια μηχανή απόδοσης γραφικών που χρησιμοποιείται στις πρώτες εκδόσεις του Android για απόδοση Θέα και Καμβάς (οι κλάσεις που χρησιμοποιούνται για τη δημιουργία και τη σχεδίαση της διεπαφής χρήστη στις περισσότερες εφαρμογές.) Το Android 3.0 Honeycomb αντικατέστησε εν μέρει το Skia με το HWUI, μια βιβλιοθήκη που μετατρέπει Εντολές καμβά σε εντολές OpenGL με επιτάχυνση υλικού, αν και η βιβλιοθήκη γραφικών 2D Skia εξακολουθούσε να χρησιμοποιείται σε ορισμένες περιοχές όπως η διαδρομή ραστεροποίηση. Παράλληλα, η Google δημιούργησε επίσης ένα OpenGL backend για το Skia. Το αποτέλεσμα είναι ότι ορισμένες κλήσεις γραφικών θα πραγματοποιούνταν στη βιβλιοθήκη Skia ενώ άλλες θα πήγαιναν στο backend του OpenGL. Για να καθαρίσει την αρχιτεκτονική γραφικών, η Google αποφάσισε ότι το HWUI θα μιλήσει τώρα με τη Skia, η οποία η ίδια συνομιλεί με το σύστημα υποστήριξης OpenGL με επιτάχυνση υλικού, για να κάνει απόδοση διεπαφής χρήστη. Το αποτέλεσμα είναι ότι οι κλήσεις γραφικών για το πλαίσιο διεπαφής χρήστη θα ακολουθούν ένα μονοπάτι και όχι δύο.

Μερικοί από εσάς μπορεί να θυμάστε μια Επιλογή προγραμματιστή που ονομάζεται "Set GPU Renderer" στις πρώιμες προεπισκοπήσεις προγραμματιστών του Android 8.0 Oreo. Αυτή η επιλογή προγραμματιστή σάς επέτρεψε να αναγκάσετε το HWUI να χρησιμοποιήσει το Skia και το σύστημα υποστήριξης OpenGL με επιτάχυνση υλικού ως απόδοση GPU για το πλαίσιο διεπαφής χρήστη. Η επιλογή προγραμματιστή καταργήθηκε καθώς αυτή η συμπεριφορά είναι πλέον η προεπιλεγμένη.

Η επιλογή προγραμματιστή "Set GPU Renderer" στις προεπισκοπήσεις προγραμματιστών Android O

Η επόμενη κίνηση της Google για τη βελτίωση της απόδοσης γραφικών είναι η μετάβαση από ένα backend με επιτάχυνση υλικού OpenGL σε ένα backend με επιτάχυνση υλικού Vulkan. Δεν είναι καθόλου απροσδόκητη κίνηση και είναι μια λογική εξέλιξη, αλλά είναι ωραίο να βλέπουμε ότι γίνεται δουλειά για τη βελτίωση της απόδοσης γραφικών στο Android. Αν και η κίνηση δεν θα διορθώσει κάθε πηγή καθυστέρησης στο Android, θα πρέπει να μειώσει τους χρόνους απόδοσης καρέ περιορίζοντας την επεξεργασία που γίνεται από την CPU. Δεδομένου ότι αυτό είναι σε μεγάλο βαθμό ένα έργο σε εξέλιξη (είναι ημιτελές στο Android P), αναμένουμε να κυκλοφορήσει με το Android Q ή άλλη μελλοντική έκδοση Android.


Μια προεπισκόπηση της χρήσης του Vulkan Graphics API για την απόδοση του UI

Είναι πραγματικά δυνατό να δοκιμάσετε το backend Vulkan για το Skia στο Android P τώρα. Υπάρχει μια παράμετρος εντοπισμού σφαλμάτων που μπορείτε να ορίσετε για να αναγκάσετε το Android να χρησιμοποιήσει τον αγωγό Skia Vulkan. Απλώς επανεκκινήστε αφού προσθέσετε την ακόλουθη γραμμή στο /system/build.prop:

debug.hwui.renderer=skiavk

Η προσθήκη αυτής της γραμμής σε μια συσκευή που εκτελεί Android Oreo θα οδηγήσει σε σφάλμα, επομένως δεν το συνιστούμε. Ενώ η συσκευή σας θα εκκινήσει με αυτήν τη σημαία στο Android P, αυτή τη στιγμή είναι αρκετά προβληματική. Το Google Pixel Launcher αποτυγχάνει ως επί το πλείστον να αποδώσει φόντο, τα κινούμενα βίντεο στις Ρυθμίσεις αποτυγχάνουν να φορτωθούν και υπάρχουν αρκετές γραφικές δυσλειτουργίες με τη γραμμή κατάστασης και τις ειδοποιήσεις. Εκτός από αυτό, οι περισσότερες εφαρμογές, ακόμη και τα βίντεο YouTube και τα παιχνίδια όπως το Doodle Jump, φαίνεται να φορτώνουν μια χαρά.

Ευχαριστούμε πολύ τον Αναγνωρισμένο προγραμματιστή XDA luca020400 για τη βοήθειά τους στη σύνταξη αυτού του άρθρου, για την παροχή των στιγμιότυπων οθόνης που δείχνουν τον αποσυναρμολογημένο κώδικα libhwui.so και για την παροχή της σημαίας εντοπισμού σφαλμάτων για τη δοκιμή του συστήματος υποστήριξης Vulkan.


Πηγή 1: Talkin’ Treble: Πώς οι μηχανικοί Android κερδίζουν τον πόλεμο κατά του κατακερματισμού [ArsTechnica]

Πηγή 2: Android Graphics Pipeline: From Button to Framebuffer [blog inovex]

Πηγή 3: Ιστοσελίδα Σκιά [Google]

Πηγή 4: Σχόλια από Romain Guy, Android Graphics & Kotlin @ Google [Reddit]