Animasi yang mulus di Chrome OS

Salah satu masalah yang paling sulit bagi developer aplikasi adalah memastikan animasi yang mulus, bebas gangguan, dan tanpa jank. Masalah ini sangat sulit untuk di-debug saat sistem menjalankan juga tugas latar belakang yang menggunakan resource secara intensif. Tidak ada cara sederhana untuk menentukan apakah beberapa jank disebabkan oleh aplikasi atau sistem Anda. Namun, ada alat profiler yang dapat membantu Anda mengidentifikasi kemungkinan sumber perilaku buruk tersebut.

Permasalahan

Aplikasi yang disempurnakan, seperti game, biasanya menggunakan buffering ganda untuk mempertahankan waktu respons pengguna sesingkat mungkin. Namun, ada banyak hal yang dapat menurunkan performa. Misalnya, jika waktu perenderan frame terlalu lama, hasil yang dirender tidak siap untuk pertukaran buffer berikutnya, dan akibatnya frame sebelumnya akan diulang. Kemudian, perender tidak dapat memulai merender frame berikutnya, sehingga menyebabkan masalah lain. Skenario ini tidak asing lagi bagi developer Android “murni”. Jika aplikasi berjalan di Chrome OS, konteksnya menjadi lebih rumit.

Aplikasi yang berjalan di desktop tidak dirender secara langsung ke frame tampilan layar. Sebagai gantinya, datanya dirender menjadi tekstur. Biasanya ada beberapa aplikasi yang merender grafisnya menjadi tekstur. Sistem membuat tampilan pada layar menggunakan compositor untuk menggabungkan semua tekstur menjadi satu gambar desktop tunggal.

Compositor bekerja secara transparan di latar belakang. Namun, alat ini mengakibatkan penundaan waktu satu frame guna memaksimalkan penggunaan pipeline GPU. Dalam kondisi ideal hal ini mungkin tidak diperlukan, namun ini dapat memperlancar fluktuasi performa sistem dan membantu menyeimbangkan beban asimetris.

Saat OS bekerja sangat keras, GPU mungkin akan ditekan. Penundaan tambahan mungkin dapat terjadi saat frame dirender ketika muncul di layar. Sistem mungkin menggunakan buffering empat kali lipat untuk mengompensasi (bergantung pada hardware). Meskipun dengan buffering yang lebih mendalam, pipeline grafis mungkin tetap akan terganggu.

Tracer grafis ARC

Chrome OS memiliki alat profiling yang menunjukkan cara buffer melacak sistem, saat terjadi pertukaran memori, seberapa sibuk CPU/GPU, dan yang dilakukan aplikasi Anda pada waktu tertentu:

Menyiapkan profiler

Untuk menggunakan profiler, Anda harus menjalankan M75 (atau yang lebih baru) pada saluran beta. Untuk mendapatkan hasil terbaik, sebaiknya gunakan perangkat Intel.

Sebelum menggunakan profiler, Anda mungkin juga harus membuat seed aplikasi Anda dengan trace. Tambahkan Trace.traceCounter(Trace.TRACE_TAG_GRAPHICS, "Event", <number>); ke kode Anda. Event yang Anda gunakan harus diawali dengan awalan customTrace.. Awalan tidak akan muncul pada pesan trace.

Untuk menyiapkan profiler, ikuti langkah-langkah berikut:

  1. Aktifkan mode developer.
  2. Aktifkan setelan Chrome dan aktifkan alat visualisasi buffer grafis ARC.
  3. Buka chrome://arc-graphics-tracing

Menjalankan profiler

  1. Periksa berhenti saat jank.
  2. Jalankan aplikasi Android.
  3. Saat aplikasi Android aktif dan memiliki fokus, tekan Ctrl+Shift+G.

Saat beberapa jank terjadi, jendela browser akan muncul. Gunakan tombol w dan s untuk memperbesar dan memperkecil linimasa.