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.
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 kenull
, 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 memilikiminFrameIntervalNs
sebesar 8,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
: Hal ini ditentukan oleh waktu saat layar memerlukan pemberitahuan awal tentang frame yang akan datang.
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:
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.