Android 15, ekran yenileme hızının ayrı VSync adımları kullanarak içerik kare hızına uyarlanmasını sağlayan uyarlanabilir yenileme oranı (ARR) özelliğini sunar.
ARR özelliği aşağıdaki avantajları sunar:
- Güç tüketimini azaltma: ARR, varsayılan olarak cihazların maksimum yenileme hızlarından daha düşük hızlarda çalışmasına olanak tanır ve yalnızca kullanıcı deneyimi için gerekli olduğunda daha yüksek hızlara geçerek gereksiz güç tüketimini en aza indirir.
- Jank'ı azaltma: ARR, jank'ın bilinen bir nedeni olan mod değiştirme ihtiyacını ortadan kaldırır.
Genel Bakış
ARR olmayan panellerde ekran, etkin ekran moduna göre belirlenen sabit bir sıklıkta yenilenir.
ARR panellerinde, ekran VSync hızı ve yenileme hızı birbirinden bağımsızdır. Bu sayede, içerik güncelleme sıklığına bağlı olarak yenileme hızları tek bir ekran modunda değişebilir. Paneller, panelin yırtılma etkisinin (TE) bölenleri olan yenileme hızlarında çalışabilir. OEM'ler, tercih ettikleri güç dengelerine göre ARR'yi uygulayabilir.
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 itibaren minFrameIntervalNs değeri geçtikten sonra VSync'in herhangi bir katında gösterilebilir.
Şekil 1. Yıllık yinelenen gelir örneği.
Uygulama
Android 15, yeni Hardware Composer (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 listelendiği gibi android.hardware.graphics.composer3 API'lerinin 3. sürümünü uygulaması gerekir.
ARR'yi destekleyen API'lerin Pixel'in referans uygulaması hakkında daha fazla bilgi edinin.
DisplayConfiguration.aidl
DisplayConfiguration.aidl API'si, ARR için aşağıdaki özelliklerle birlikte görüntüleme özelliklerini 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.nullolarak ayarlanırsa ekran 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 ikisi birden yapılandırılamaz. vsyncPeriod: Ekranın VSync oranı. ARR ekranlarında bu değer, desteklenen ayrı yenileme hızlarını elde etmek için kullanılır.Tedarikçiler, tüm cihazlar için
DisplayConfiguration.vsyncPerioddeğerini ayarlamalıdır. ARR olmayan ekranlardaDisplayConfiguration.vsyncPeriod, ekran yenileme hızıdır. Bir cihaz 120 Hz'i destekliyorsa bu değer 8, 3 ms olmalıdır.ARR ekranlarında
DisplayConfiguration.vsyncPeriod, TE sinyal frekansıdır. Bir cihazınminFrameIntervalNsdeğeri 8,3 ms ancak TE değeri 240 Hz ise bu değer 4,16 ms olmalıdır.
VrrConfig.aidl
VrrConfig.aidl API'si 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
görüntülemenin kendi kendini yenileme süresini buna göre ayarlayabilmesi için
büyük olasılıkla sunulacak bir kare hakkında ipucu sağlar. frameIntervalNs, expectedPresentTime'den sonraki mevcut ritmi gösterir. Örneğin, notifyExpectedPresent, expectedPresentTime N ve 16,6 ms'lik frameIntervalNs ile çağrılırsa bir sonraki kare, mevcut N zamanından N + 16,6 ms sonra olur. Şu anki zaman N'den sonra, başka değişiklikler yapılana kadar kare hızı 16,6 ms'dir.
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:
- Kadenstan çıkmış sunu zamanı: Bir sonraki karenin beklenen sunu zamanı,
frameIntervalNsile tanımlanan ekranın normal yenileme hızından sapıyor. - Zaman aşımı aşıldı: Önceki kareler arasındaki zaman aralığı
notifyExpectedPresentConfig.timeoutNsdeğerinden büyük veya bu değere eşit.
DisplayCommand.frameIntervalNs
DisplayCommand.frameIntervalNs
Yaklaşan karelerin nanosaniye cinsinden ritmi hakkında ipucu verir.
Test
Hata ayıklama için
onRefreshRateChangedDebug
kullanın. Bu yöntem, istemciye 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, kaydırma çubuğunu kullanarak reklam öğesi oluşturma oranını ekranın yenileme hızının çeşitli bölme yenileme hızlarına göre ayarlayın. İstenen hıza göre kare hızının nasıl değiştiğini gözlemleyin.