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.
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 kenull, 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.vsyncPerioduntuk semua perangkat. Untuk layar non-ARR,DisplayConfiguration.vsyncPeriodadalah kecepatan refresh layar. Jika perangkat mendukung 120 Hz, nilai ini harus 8,3 md.Untuk layar ARR,
DisplayConfiguration.vsyncPeriodadalah frekuensi sinyal TE. Jika perangkat memilikiminFrameIntervalNs8,3 md, tetapi TE adalah 240 Hz, nilai ini harus 4,16 md.
VrrConfig.aidl
API VrrConfig.aidl mencakup atribut berikut:
minFrameIntervalNs: Kecepatan refresh maksimum yang dapat didukung layar.NotifyExpectedPresentConfig: Ini ditentukan oleh kapan layar memerlukan pemberitahuan lanjutan tentang frame mendatang.
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:
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.