Google Besutkan Vulkan sebagai Pengganti OpenGL ES untuk Tingkatkan Kinerja GPU


Vulkan API Banner

[Sumber: Wikimedia]

Pada peluncurannya, Android N Developer Preview 2 dibekali dengan tools pengembangan baru, yaitu Vulkan. Vulkan merupakan API penerjemah 3D terbaru yang akan membantu para developer dalam mengembangkan kontrol GPU (Graphics Processor Unit) dengan overhead yang rendah.

Dengan hal tersebut, kini para developer dapat menggunakan benchmark buatan yang bekerja 10 kali lebih cepat pada inti tunggal dibandingkan OpenGL ES. Dan apabila dikombinasikan dengan desain API yang mengizinkan penggunaan banyak inti secara pararel, maka efisiensi dan kinerja dari GPU dapat meningkat secara signifikan.

Sesuai dengan Android N Developer Preview, Vulkan dapat mendukung perangkat yang mendukung versi pratinjau dari Android tersebut, termasuk di dalamnya Nexus 5X dan Nexus 6P, yang mana para developer juga masih dapat menggunakan OpenGL ES dengan baik.

Vulkan dan OpenGL ES memiliki banyak persamaan, akan tetapi Vulkan menawarkan fitur-fitur baru kepada para developer, seperti Application control of memory allocation, Asynchronous command generation, No hidden work, Multithreaded design, Mobile-friendly features, Offline shader compilation, dan Optional validation.

Dengan menggunakan Vulkan, para developer dapat mengalokasikan dan mendaur ulang memori sendiri sesuai dengan aplikasi yang sedang dikembangkan. Vulkan dibekali dengan Application control of memory allocation yang menyediakan mekanisme kontrol terbaik dalam mengalokasikan memori pada GPU. Sehingga eksekusi dan overhead dari konsumsi memori dapat tereduksi dengan menggunakan Vulkan. Dengan kata lain, aplikasi dapat mengatur alokasi memori saat terjadi konsumsi memori yang besar.

Berbeda dengan OpenGL ES, aplikasi adalah pembuat panggilan untuk perintah buffer dalam Vulkan. Sehingga, proses untuk merekam dan membentuk permintaan panggilan menjadi terpisah dengan fitur Asynchronous command generation pada Vulkan. Sebagai dampaknya, aplikasi dapat berjalan dengan lebih efisien dalam menggunakan inti banyak yang terdapat pada GPU.

Vulkan juga memiliki fitur No hidden work yang tidak dapat dinikmati di OpenGL ES. Pada OpenGL ES, semua perintah untuk memicu kerja tidak terjabar secara eksplisit dalam spesifikasi API atau dibuat secara jelas untuk para developer. Akan tetapi, Vulkan membuat kinerja lebih mudah untuk diprediksi dan konsisten dengan menentukan perintah-perintah eskplisit yand dapat memicu kerja dan tidak memicu apapun.

Perbedaan lainya, Vulkan mengizinkan aplikasi untuk melakukan pekerjaan secara pararel dalam waktu bersamaan, sedangkan aplikasi OpenGL ES harus mengeluarkan perintah untuk setiap konteks dalam satu thread. Vulkan memiliki fitur Multithreaded design sehingga seluruh kekuatan dan tanggung jawab untuk mengelola sinkronisasi thread berada di tangan aplikasi.

Selain itu, Vulkan memiliki fitur yang sangat membantu untuk mencapai kinerja tinggi pada GPU yang digunakan pada berbagai macam perangkat mobile. Fitur tersebut adalah Mobile-friendly features.

Dengan fitur Mobile-friendly features, aplikasi dapat menyediakan informasi tentang interaksi antara fase-fase pembentukan yang terpisah-pisah. Fitur ini juga mengizinkan GPU untuk membuat penggunaan bandwidth memori terbatas yang lebih efektif dan menghindarkan pembacaan off-chip.

Fitur lain dari Vulkan adalah Offline shader compilation. Dengan fitur ini, para developer dapat mengkompilasi awal shader dari waktu dan binari SPIR-V dengan aplikasi mereka. Para developer juga dapat melakukan kompilasi GLSL kedalam SPIR-V dengan Shaderc.

Selain itu, Vulkan memiliki perbedaan dengan OpenGL ES pada validasi setiap perintah yang diminta. Vulkan tidak memberikan validasi untuk setiap perintah, akan tetapi para developer dapat menggunakan debug tools secara opsional. Berikut ini cara melakukan debugging untuk API ini.

Untuk mempelajari lebih lanjut tentang Vulkan, pembaca dapat membaca dokumentasi-dokumentasi dari Vulkan, contoh-contoh dari Vulkan, dan tutorial penggunaan Vulkan.

 

[via Android Developer Blog]