Android Q+ dapat menggunakan Vulkan Graphics API untuk merender UI

Skia, mesin grafis sumber terbuka Google, memiliki backend Vulkan Graphics API. Backend ini dapat digunakan untuk merender UI di Android Q atau lebih baru.

Versi utama Android berikutnya, Android 9, akan dirilis bulan depan untuk beberapa perangkat. Berbeda dengan Android Oreo yang perbaikan utamanya sebagian besar dilakukan secara tersembunyi, Android P menawarkan lebih banyak fitur yang dapat diakses oleh pengguna seperti antarmuka pengguna yang diperbarui, gerakan navigasi, dan Kesejahteraan Digital sambil terus mengerjakan Project Tiga kali lipat. Namun di balik layar, Google telah mengubah cara kerja rendering grafis di Android. Di Android Oreo, Google mulai menguji backend akselerasi perangkat keras OpenGL ke mesin grafis Skia yang diselesaikan di Android P. Namun Google tidak berhenti di situ, karena perusahaan berencana menerapkannya Bagian belakang Vulkan dari mesin grafis Skia yang akan mendarat di Android Q atau rilis lebih baru.

Buktinya berasal dari a komentar dikirimkan oleh insinyur Google pada sumber terbuka Chromium Gerrit. Komentar tersebut mengacu pada laporan bug pada implementasi Vulkan Graphics API yang akan datang untuk browser Google Chrome di Android. Komentar tersebut menyatakan bahwa, suatu saat nanti, "akan ada persyaratan" untuk memiliki Vulkan API dukungan untuk Android WebView ketika kerangka kerja "[Android] akan mulai menggunakan Vulkan untuk HWUI."


Rendering Grafik di Android

Sebagai latar belakang pengetahuan, Skia adalah mesin grafis 2D sumber terbuka yang digunakan di Google Chrome, Chrome OS, Android, Flutter, dan proyek besar lainnya. Skia adalah mesin rendering grafis yang digunakan di versi awal Android untuk merender Melihat Dan Kanvas (kelas yang digunakan untuk membuat dan menggambar UI di sebagian besar aplikasi.) Android 3.0 Honeycomb menggantikan sebagian Skia dengan HWUI, sebuah pustaka yang mengonversi Perintah Canvas menjadi perintah OpenGL yang dipercepat perangkat keras, meskipun perpustakaan grafis Skia 2D masih digunakan di beberapa area seperti jalur rasterisasi. Secara paralel, Google juga membuat backend OpenGL untuk Skia. Hasilnya adalah beberapa panggilan grafis akan dilakukan ke perpustakaan Skia sementara yang lain akan masuk ke backend OpenGL. Untuk membersihkan arsitektur grafis, Google memutuskan bahwa HWUI sekarang akan berkomunikasi dengan Skia, yang juga berkomunikasi dengan backend OpenGL yang dipercepat perangkat keras, untuk melakukan rendering UI. Hasilnya adalah panggilan grafis untuk kerangka UI akan mengikuti satu jalur dan bukan dua.

Beberapa dari Anda mungkin ingat Opsi Pengembang yang disebut "Setel GPU Renderer" di Pratinjau Pengembang awal Android 8.0 Oreo. Opsi pengembang ini memungkinkan Anda memaksa HWUI untuk menggunakan Skia dan backend OpenGL yang dipercepat perangkat kerasnya sebagai perender GPU untuk kerangka UI. Opsi pengembang telah dihapus karena perilaku ini sekarang menjadi default.

Opsi pengembang "Setel GPU Renderer" di Pratinjau Pengembang Android O

Langkah Google selanjutnya untuk meningkatkan rendering grafis adalah beralih dari backend dengan akselerasi perangkat keras OpenGL ke backend dengan akselerasi perangkat keras Vulkan. Ini sama sekali bukan langkah yang tidak terduga dan merupakan kemajuan yang logis, tetapi senang melihat bahwa upaya sedang dilakukan untuk meningkatkan rendering grafis di Android. Meskipun langkah ini tidak akan memperbaiki semua sumber kelambatan di Android, langkah ini akan mengurangi waktu render frame dengan mengurangi pemrosesan yang dilakukan oleh CPU. Mengingat bahwa ini masih dalam proses (belum selesai di Android P), kami memperkirakan ini akan diluncurkan dengan Android Q atau rilis Android lainnya di masa mendatang.


Pratinjau penggunaan Vulkan Graphics API untuk Merender UI

Sebenarnya dimungkinkan untuk menguji backend Vulkan untuk Skia di Android P sekarang. Ada parameter debug yang dapat Anda atur untuk memaksa Android menggunakan pipeline Skia Vulkan. Cukup reboot setelah menambahkan baris berikut ke /system/build.prop:

debug.hwui.renderer=skiavk

Menambahkan baris ini pada perangkat yang menjalankan Android Oreo akan mengakibatkan crash, jadi kami tidak menyarankannya. Meskipun perangkat Anda akan boot dengan tanda ini di Android P, saat ini perangkat tersebut cukup bermasalah. Peluncur Google Pixel sebagian besar gagal merender latar belakang apa pun, video animasi di Pengaturan gagal dimuat, dan ada beberapa gangguan grafis pada bilah status dan notifikasi. Selain itu, sebagian besar aplikasi, bahkan video YouTube dan game seperti Doodle Jump, tampaknya dapat dimuat dengan baik.

Terima kasih banyak kepada Pengembang yang Diakui XDA luca020400 atas bantuan mereka dalam menulis artikel ini, untuk menyediakan tangkapan layar yang menunjukkan kode libhwui.so yang telah dibongkar, dan untuk menyediakan tanda debug untuk menguji backend Vulkan.


Sumber 1: Talkin’ Treble: Bagaimana para insinyur Android memenangkan perang melawan fragmentasi [ArsTechnica]

Sumber 2: Saluran Grafik Android: Dari Tombol ke Framebuffer [blog inovex]

Sumber 3: Halaman web Skia [Google]

Sumber 4: Komentar oleh Romain Guy, Grafik Android & Kotlin @ Google [reddit]