Kecepatan refresh adaptif

Android 15 memperkenalkan fitur kecepatan refresh adaptif (ARR), yang memungkinkan kecepatan refresh layar beradaptasi dengan kecepatan frame konten menggunakan langkah-langkah VSync diskrit.

Fitur ARR menawarkan manfaat berikut:

  • Mengurangi konsumsi daya: Secara default, ARR memungkinkan perangkat beroperasi pada kecepatan yang lebih rendah daripada kecepatan refresh maksimumnya, dan beralih ke kecepatan yang lebih tinggi hanya jika penting untuk pengalaman pengguna, sehingga meminimalkan konsumsi daya yang tidak perlu.
  • Mengurangi jank: ARR menghilangkan kebutuhan untuk mengganti mode, yang merupakan penyebab jank yang diketahui.

Ringkasan

Pada panel non-ARR, tampilan di-refresh pada irama tetap yang ditentukan oleh mode tampilan aktif.

Pada panel ARR, kecepatan VSync layar dan kecepatan refresh tidak digabungkan, sehingga kecepatan refresh dapat berubah dalam satu mode layar berdasarkan irama pembaruan konten. Panel dapat berjalan pada kecepatan refresh yang merupakan pembagi efek tearing panel (TE). OEM dapat menerapkan ARR berdasarkan trade-off daya pilihan mereka.

Gambar berikut menunjukkan layar dengan vsyncPeriod 240 Hz dan minFrameIntervalNs (kecepatan refresh maksimum) 120 Hz. VSync terjadi setiap 4,16 md. Frame dapat ditampilkan pada kelipatan VSync setelah minFrameIntervalNs dari frame terakhir.

arr-example

Gambar 1. Contoh ARR.

Implementasi

Android 15 mendukung ARR dengan API HAL Hardware Composer (HWC) baru dan perubahan platform. Untuk mengaktifkan ARR, OEM harus mendukung perubahan kernel dan sistem di perangkat yang menjalankan Android 15 dan yang lebih tinggi, serta menerapkan API android.hardware.graphics.composer3 versi 3, seperti yang tercantum di bagian berikut.

Lihat implementasi referensi API Pixel yang mendukung ARR untuk mengetahui informasi selengkapnya.

DisplayConfiguration.aidl

API DisplayConfiguration.aidl menentukan konfigurasi tampilan menggunakan atribut tampilan, beserta atribut berikut untuk ARR:

  • Opsional vrrConfig: Jika disetel, ARR diaktifkan untuk konfigurasi tertentu. Jika disetel ke null, mode tampilan disetel ke mode non-ARR seperti beberapa kecepatan refresh (MRR). Dengan atribut ini, tampilan dapat dikonfigurasi sebagai MRR atau ARR, tetapi tidak keduanya.
  • vsyncPeriod: Kecepatan VSync layar. Pada layar ARR, nilai ini digunakan untuk mendapatkan kecepatan refresh diskrit yang didukung.

    Vendor harus menetapkan nilai DisplayConfiguration.vsyncPeriod untuk semua perangkat. Untuk layar non-ARR, DisplayConfiguration.vsyncPeriod adalah kecepatan refresh layar. Jika perangkat mendukung 120 Hz, maka nilai ini harus 8,3 md.

    Untuk tampilan ARR, DisplayConfiguration.vsyncPeriod adalah frekuensi sinyal TE. Jika perangkat memiliki minFrameIntervalNs sebesar 8,3 md, tetapi TE adalah 240 Hz, nilai ini harus 4,16 md.

VrrConfig.aidl

API VrrConfig.aidl mencakup atribut berikut:

IComposerClient.notifyExpectedPresent memberikan petunjuk untuk frame yang kemungkinan akan ditampilkan, sehingga layar dapat menyesuaikan periode refresh otomatisnya. frameIntervalNs mewakili irama saat ini yang mengikuti setelah expectedPresentTime. Misalnya, jika notifyExpectedPresent dipanggil dengan expectedPresentTime N dan frameIntervalNs 16,6 md, maka frame berikutnya berada di N + 16,6 md setelah waktu saat ini N. Setelah waktu saat ini N, irama frame adalah 16,6 md hingga ada perubahan lebih lanjut.

IComposerClient.notifyExpectedPresent dipanggil hanya saat DisplayConfiguration.notifyExpectedPresentConfig ditetapkan, dan jika salah satu kondisi waktu berikut terjadi:

  • Waktu saat ini di luar irama: Waktu presentasi yang diharapkan dari frame berikutnya berbeda dari kecepatan refresh reguler layar yang ditentukan oleh frameIntervalNs.
  • Waktu tunggu habis: Interval waktu antara frame sebelumnya lebih besar dari atau sama dengan notifyExpectedPresentConfig.timeoutNs.

DisplayCommand.frameIntervalNs

DisplayCommand.frameIntervalNs memberikan petunjuk tentang irama untuk frame mendatang dalam nanodetik.

Pengujian

Gunakan onRefreshRateChangedDebug untuk proses debug. Metode ini memberi tahu klien bahwa kecepatan refresh layar telah berubah.

Gunakan aplikasi pengujian TouchLatency untuk pengujian manual seperti yang ditunjukkan pada Gambar 2:

touchlatency-app

Gambar 2. Aplikasi pengujian TouchLatency.

Di aplikasi pengujian, gunakan penggeser untuk menyesuaikan kecepatan rendering ke berbagai nilai kecepatan refresh pembagi kecepatan refresh tampilan. Amati bagaimana kecepatan frame berubah berdasarkan kecepatan yang diminta.