Android 15'ten itibaren uyarlanabilir yenileme hızı (ARR) özelliği, ayrı VSync adımları kullanarak ekran yenileme hızının içerik kare hızına uyum sağlamasını sağlar.
ARR özelliği aşağıdaki avantajları sunar:
Güç tüketimini azaltma: Varsayılan olarak ARR, cihazların maksimum yenileme hızlarından daha düşük hızlarda çalışmasını sağlar ve yalnızca kullanıcı deneyimi için gerekli olduğunda daha yüksek hızlara geçiş yapar. Bu sayede gereksiz güç tüketimi en aza indirilir.
Takılmaları azaltma: ARR, takılmalara neden olduğu bilinen mod değiştirme ihtiyacını ortadan kaldırır.
Genel Bakış
ARR olmayan panellerde ekran, etkin görüntüleme modu tarafından belirlenen sabit bir kadansta yenilenir.
ARR panellerinde, görüntü VSync hızı ve yenileme hızı ayrıştırılır. Bu sayede, içerik güncelleme sıklığına bağlı olarak yenileme hızlarının tek bir görüntüleme modunda değişebilmesi sağlanır. Paneller, panelin yırtılma etkisinin (TE) bölenleri olan yenileme hızlarında çalışabilir. OEM'ler, tercih ettikleri güç dengelemeleri doğrultusunda ARR'yi uygulama esnekliğine sahiptir.
Aşağıdaki şekilde, vsyncPeriod
değeri 240 Hz ve minFrameIntervalNs
(maksimum yenileme hızı) değeri 120 Hz olan bir ekran gösterilmektedir. VSync her 4,16 ms'de bir gerçekleşir. Bir kare, son kareden sonraki minFrameIntervalNs
'den sonra VSync'in herhangi bir katı olarak sunulabilir.
Şekil 1. ARR örneği.
Uygulama
Android 15, yeni Donanım Oluşturucu (HWC) HAL API'leri ve platform değişiklikleriyle ARR'yi destekler. ARR'yi etkinleştirmek için OEM'lerin Android 15 ve sonraki sürümleri çalıştıran cihazlarda çekirdek ve sistem değişikliklerini desteklemesi ve aşağıdaki bölümlerde listelenen android.hardware.graphics.composer3
API'lerinin 3. sürümünü uygulaması gerekir.
Daha fazla bilgi için ARR'yi destekleyen API'lerin Pixel'in referans uygulaması bölümüne bakın.
DisplayConfiguration.aidl
DisplayConfiguration.aidl
API, görüntüleme özelliklerini ve ARR için aşağıdaki özellikleri kullanarak görüntüleme yapılandırmasını belirtir:
- İsteğe bağlı
vrrConfig
: Ayarlanırsa belirli yapılandırmalar için ARR etkinleştirilir.null
olarak ayarlanırsa görüntüleme modu, çoklu yenileme hızı (MRR) gibi ARR dışı modlara ayarlanır. Bu özellik sayesinde bir ekran, MRR veya ARR olarak yapılandırılabilir ancak her ikisi olarak yapılandırılamaz. vsyncPeriod
: Ekranın VSync hızı. ARR ekranlarda bu değer, desteklenen ayrı yenileme hızlarını belirlemek için kullanılır.Tedarikçiler, tüm cihazlar için
DisplayConfiguration.vsyncPeriod
değerini ayarlamalıdır. ARR olmayan ekranlar içinDisplayConfiguration.vsyncPeriod
, ekran yenileme hızıdır. Bir cihaz 120 Hz'i destekliyorsa bu değer 8, 3 ms olmalıdır.ARR ekranlarda
DisplayConfiguration.vsyncPeriod
, TE sinyali sıklığıdır. Bir cihazınminFrameIntervalNs
değeri 8,3 ms ise ancak TE 240 Hz ise bu değer 4,16 ms olmalıdır.
VrrConfig.aidl
VrrConfig.aidl
API aşağıdaki özellikleri içerir:
minFrameIntervalNs
: Ekranın destekleyebileceği maksimum yenileme hızı.NotifyExpectedPresentConfig
: Bu, ekranın yaklaşan bir kare için önceden bildirim gerektirdiği zamana göre belirlenir.
IComposerClient.notifyExpectedPresent
, ekranın kendi kendini yenileme süresini buna göre uyarlayabilmesi için gösterilmesi muhtemel bir çerçeveyle ilgili ipucu sağlar. frameIntervalNs
, expectedPresentTime
'den sonra gelen mevcut ritmi temsil eder. Örneğin, notifyExpectedPresent
, expectedPresentTime
N ve 16,6 ms frameIntervalNs
ile çağrılırsa sonraki kare, mevcut N zamanından N + 16,6 ms sonradır. Mevcut N zamanından sonra, başka bir değişiklik yapılana kadar kare hızı 16,6 ms olur.
IComposerClient.notifyExpectedPresent
yalnızca DisplayConfiguration.notifyExpectedPresentConfig
ayarlandığında ve aşağıdaki zamanlama koşullarından biri gerçekleştiğinde çağrılır:
- Ritim dışı mevcut zaman: Sonraki karenin beklenen sunu zamanı, ekranın
frameIntervalNs
tarafından tanımlanan normal yenileme hızından sapıyor. - Zaman aşımı aşıldı: Önceki kareler arasındaki zaman aralığı
notifyExpectedPresentConfig.timeoutNs
veya daha büyüktür.
DisplayCommand.frameIntervalNs
DisplayCommand.frameIntervalNs
, sonraki karelerin saniyedeki kare sayısıyla ilgili ipucu sağlar.
Test
Hata ayıklama için onRefreshRateChangedDebug
bağlantısını kullanın. Bu yöntem, müşteriye ekranın yenileme hızının değiştiğini bildirir.
Şekil 2'de gösterildiği gibi manuel test için TouchLatency
test uygulamasını kullanın:
Şekil 2. TouchLatency test uygulaması.
Test uygulamasında, oluşturma hızını ekranınızın yenileme hızının bölen yenileme hızlarının çeşitli değerlerine ayarlamak için kaydırma çubuğunu kullanın. Kare hızının, istenen hıza göre nasıl değiştiğini gözlemleyin.