Impeller adalah engine rendering generasi berikutnya yang dikembangkan untuk Flutter. Impeller memfokuskan pada performa yang lebih dapat diprediksi dan fleksibilitas tinggi dalam mengendalikan pipeline grafis.
Impeller memanfaatkan precompiled shaders untuk mengatasi masalah dropped frames yang disebabkan oleh kompilasi shader, dan juga memanfaatkan chipsets terbaru dan hardware-accelerated API seperti Metal dan Vulkan, API modern yang digunakan pada iOS dan Android.
Selain itu, Impeller juga mampu mengoptimalkan penggunaan konkurensi, membagi beban kerja satu frame ke beberapa thread. Dengan demikian, Impeller dapat meningkatkan performa dan membuka peluang baru bagi Flutter dalam membuat aplikasi menjadi lebih cepat.
Menggantikan SKIA
Sebelumnya, flutter masih menggunakan render engine Skia, yang merupakan render engine yang digunakan di Chrome. Namun, render engine jenis ini masih memiliki masalah terutama dalam mengolah animasi. Pastinya hal tersebut menjadi masalah besar.
Nah, untuk mengatasi masalah tersebut, tim flutter bekerja keras untuk membangun render engine baru bernama Impeller.
Berikut ini adalah contoh video yang membandingkan perbedaan antara rendering engine pada versi sebelumnya (sebelah kiri) dan dengan versi terbaru 3.7 dari flutter (sebelah kanan).
Impeller sudah tersedia untuk IOS dan Android. Namun untuk preview pada android masih dalam pengembangan aktif oleh tim Flutter.
Tujuan Impeller
Impeller menawarkan kecepatan refresh 60 Hertz yang mulus (smooth). Kecepatan ini akan terasa pada aplikasi biasa, dan pastinya mampu untuk kebutuhan game juga.
Secara keseluruhan, Impeller memiliki tujuan sebagai berikut:
- Predictable Performance: Semua kompilasi shader dan refleksi dilakukan offline saat waktu build. Semua objek state pipeline dibangun sejak dini. Penyimpanan cache adalah eksplisit dan di bawah kontrol mesin.
- Instrumentable: Semua sumber daya grafis (textures, buffers, pipeline state objects, dll.) diberi tag dan label. Animasi dapat ditangkap dan disimpan ke disk tanpa mempengaruhi performa rendering per-frame.
- Portable: Tidak terikat pada API rendering client tertentu. Shader ditulis satu kali dan dikonversi menjadi format spesifik backend seperti yang diperlukan.
- Menggunakan API Grafis Modern dengan Efektif: Menggunakan fitur yang tersedia dalam API Modern seperti Metal dan Vulkan. Menggunakan Konkurensi dengan Efektif: Dapat membagikan beban kerja single-frame ke beberapa thread jika diperlukan.
Kesimpulan
SKIA dan Impeller adalah dua teknologi berbeda yang digunakan dalam pengembangan aplikasi Flutter.
SKIA adalah sebuah mesin rendering yang bersifat open source yang digunakan oleh Flutter untuk membuat gambar dan grafik dalam aplikasi. Ini bertanggung jawab untuk mengubah widget Flutter menjadi gambar yang dapat ditampilkan pada layar.
Sedangkan, Impeller adalah mesin rendering berikutnya yang dikembangkan oleh Flutter. Impeller diklaim memiliki kinerja yang lebih dapat diprediksi dan memiliki kemampuan untuk memanfaatkan primitif yang tersedia dalam API modern seperti Metal dan Vulkan. Impeller juga membuat efektif penggunaan konkurensi dan dapat meningkatkan kinerja aplikasi dalam beberapa skenario tertentu.