Uyarlanabilir yenileme oranı

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çer. Bu da gereksiz güç tüketimini en aza indirir.

  • Kesintileri azaltma: ARR, kesintilerin 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 ritimde yenilenir.

ARR panellerinde ekran VSync hızı ve yenileme hızı birbirinden ayrılır. Bu sayede, yenileme hızları içerik güncelleme sıklığına göre 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üç 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 kareye ait minFrameIntervalNs değerinden sonra VSync'in herhangi bir katı olarak sunulabilir.

arr-example

Şekil 1. ARR örneği.

Uygulama

Android 15, yeni Donanım Bestecisi (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'deki referans uygulamasına 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 ARR belirli yapılandırmalar için 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, DisplayConfiguration.vsyncPeriod değerini tüm cihazlar için ayarlamalıdır. ARR olmayan ekranlar için DisplayConfiguration.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ın minFrameIntervalNs 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'si aşağıdaki özellikleri içerir:

IComposerClient.notifyExpectedPresent, ekranın kendi kendini yenileme süresini buna göre uyarlayabilmesi için gösterilme olasılığı yüksek 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ı, frameIntervalNs tarafından tanımlanan ekranın normal yenileme hızından sapıyor.
  • Zaman aşımı aşıldı: Önceki kareler arasındaki zaman aralığı notifyExpectedPresentConfig.timeoutNs veya daha uzundur.

DisplayCommand.frameIntervalNs

DisplayCommand.frameIntervalNs, sonraki karelerin saniyedeki kare sayısıyla ilgili ipucu sağlar.

Test

Hata ayıklama için onRefreshRateChangedDebug simgesini kullanın. Bu yöntem, müşteriye ekranın yenileme hızının değiştiğini bildirir.

Manuel test için Şekil 2'de gösterildiği gibi TouchLatency test uygulamasını kullanın:

touchlatency-app

Ş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.