Kecepatan refresh adaptif

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

Fitur ARR menawarkan manfaat berikut:

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

Ringkasan

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

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

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 apa pun setelah minFrameIntervalNs dari frame terakhir.

arr-example

Gambar 1. Contoh ARR.

Penerapan

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

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

DisplayConfiguration.aidl

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

  • Opsional vrrConfig: Jika ditetapkan, ARR akan diaktifkan untuk konfigurasi tertentu. Jika ditetapkan ke null, mode layar akan ditetapkan ke mode non-ARR seperti kecepatan refresh ganda (MRR). Dengan atribut ini, layar 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, nilai ini harus 8,3 md.

    Untuk layar ARR, DisplayConfiguration.vsyncPeriod adalah frekuensi sinyal TE. Jika perangkat memiliki minFrameIntervalNs 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, frame berikutnya akan 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 hanya dipanggil jika DisplayConfiguration.notifyExpectedPresentConfig ditetapkan, dan jika salah satu kondisi waktu berikut terjadi:

  • Waktu saat ini di luar irama: Waktu presentasi yang diharapkan dari frame berikutnya menyimpang dari kecepatan refresh reguler layar yang ditentukan oleh frameIntervalNs.
  • Waktu tunggu terlampaui: 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 rasio render ke berbagai nilai kecepatan refresh pembagi kecepatan refresh layar. Amati bagaimana kecepatan frame berubah berdasarkan kecepatan yang diminta.