معدّل التحديث التكيفي

اعتبارًا من Android 15، تتيح ميزة معدل التحديث التكيُّفي (ARR) لمعدل تحديث الشاشة التكيُّف مع معدل عرض اللقطات للمحتوى، وذلك باستخدام خطوات Discrete VSync المفصَّلة.

توفّر ميزة "معدل الاحتفاظ بالاشتراكات" المزايا التالية:

  • الحد من استهلاك الطاقة: يسمح وضع "معدل التحديث التكيُّفي" للأجهزة تلقائيًا بالعمل بمعدلات تشكل نسبتها أقل من الحد الأقصى لمعدلات التحديث، ولا تنتقل إلى معدلات أعلى إلا عند الضرورة لتحسين تجربة المستخدم، ما يقلل من استهلاك الطاقة غير الضروري.

  • تقليل الارتباك: تقضي ميزة ARR على الحاجة إلى تبديل الأوضاع، وهو أحد الأسباب المعروفة للارتباك.

نظرة عامة

في اللوحات التي لا تتضمّن ميزة "عرض الإعلانات أثناء التشغيل"، يتمّ تعديل الشاشة بمعدّل ثابت يحدّده وضع العرض النشط.

في لوحات ARR، يتم فصل معدل VSync للعرض عن معدل التحديث، ما يسمح بتغيير معدلات التحديث ضمن وضع عرض واحد، استنادًا إلى سرعة تعديل المحتوى. يمكن تشغيل اللوحات بمعدّلات تحديث قابلة للقسمة على أثر التمويه (TE) في اللوحة. تتوفّر لشركات المصنّعين الأصليّين المرونة في تنفيذ ميزة "الاستجابة السريعة للطلبات" استنادًا إلى مفاضلات الطاقة المفضّلة لديهم.

يعرض الشكل التالي شاشة ذات vsyncPeriod‏(معدل تكرار الإطارات) يبلغ 240 هرتز و minFrameIntervalNs (الحد الأقصى لمعدل تكرار الإطارات) يبلغ 120 هرتز. يحدث تنسيق VSync كل 4.16 ملي ثانية. يمكن عرض لقطة بعد أي عدد من مرّات تنسيق VSync بعد minFrameIntervalNs من اللقطة الأخيرة.

arr-example

الشكل 1: مثال على معدل الإرجاع

التنفيذ

يتيح نظام التشغيل Android 15 ميزة "الاستجابة السريعة للإعلانات" من خلال واجهات برمجة تطبيقات جديدة لواجهة Hardware Composer (HWC) HAL وتغييرات في النظام الأساسي. لتفعيل ميزة "الاستجابة السريعة للإعلانات"، على المصنّعين الأصليّين للأجهزة إتاحة تغييرات نظام التشغيل والنواة على الأجهزة التي تعمل بالإصدار 15 من نظام التشغيل Android والإصدارات الأحدث، وتنفيذ الإصدار 3 من واجهة برمجة التطبيقات android.hardware.graphics.composer3 ، كما هو موضّح في الأقسام التالية.

اطّلِع على النموذج المرجعي لتنفيذ Pixel لواجهات برمجة التطبيقات التي تتيح ميزة "الاستجابة السريعة للإعلانات" للحصول على مزيد من المعلومات.

DisplayConfiguration.aidl

تحدِّد واجهة برمجة التطبيقات DisplayConfiguration.aidl إعدادات العرض باستخدام سمات العرض، بالإضافة إلى السمات التالية لميزة "الإعلانات المتجاوبة على شبكة البحث":

  • اختياري vrrConfig: في حال ضبط هذا الخيار، يتم تفعيل ميزة "إعادة التوجيه التلقائي للطلبات" لإعدادات معيّنة. في حال ضبطه على null، يتم ضبط وضع العرض على أوضاع غير "معدل تكرار الإطارات المتغير"، مثل معدل التحديث المتعدّد (MRR). باستخدام هذه السمة، يمكن ضبط العرض على أنّه MRR أو ARR، ولكن ليس كليهما.
  • vsyncPeriod: معدل VSync للشاشة. في شاشات معدل التحديث المتغير، تُستخدَم هذه القيمة لاشتقاق معدّلات التحديث المنفصلة المسموح بها.

    على المورّدين ضبط القيمة DisplayConfiguration.vsyncPeriod لجميع الأجهزة. بالنسبة إلى شاشات العرض غير المزوّدة بميزة "إعادة عرض الإعلانات أثناء التشغيل"، يمثّل DisplayConfiguration.vsyncPeriod معدّل إعادة تحميل الشاشة. إذا كان الجهاز يدعم معدل تكرار 120 هرتز، يجب أن تكون هذه القيمة 8.3 ملي ثانية.

    بالنسبة إلى شاشات ARR، يمثّل DisplayConfiguration.vsyncPeriod معدل تكرار إشارة TE. إذا كان جهاز معيّن يعرض قيمة minFrameIntervalNs تبلغ 8.3 ملي ثانية ولكن معدل الإرسال العميق هو 240 هرتز، يجب أن تكون هذه القيمة 4.16 ملي ثانية.

VrrConfig.aidl

تتضمّن واجهة برمجة التطبيقات VrrConfig.aidl السمات التالية:

  • minFrameIntervalNs: الحد الأقصى لمعدّل إعادة تحميل الشاشة
  • NotifyExpectedPresentConfig: يتم تحديد ذلك حسب وقت طلب الشاشة لإشعار مُسبَق بالإطار القادم.

IComposerClient.notifyExpectedPresent يقدّم تلميحًا للإطار الذي يُرجّح عرضه، لكي تتمكّن الشاشة من تعديل فترة إعادة التحميل الذاتي وفقًا لذلك. يمثّل frameIntervalNs الوتيرة الحالية التي تأتي بعد expectedPresentTime. على سبيل المثال، إذا تم استدعاء notifyExpectedPresent باستخدام expectedPresentTime N و frameIntervalNs‏ 16.6 ملي ثانية، سيكون الإطار التالي عند N + 16.6 ملي ثانية بعد الوقت الحالي N. بعد الوقت الحالي N، يكون معدل عرض اللقطات هو 16.6 ملي ثانية إلى أن تحدث تغييرات أخرى.

لا يتمّ استدعاء IComposerClient.notifyExpectedPresent إلا عند ضبط DisplayConfiguration.notifyExpectedPresentConfig، وفي حال حدوث أحد شروط التوقيت التالية:

  • وقت العرض خارج الإيقاع: يختلف وقت العرض المتوقّع للإطار التالي عن معدّل إعادة التحميل العادي للشاشة الذي يحدّده frameIntervalNs.
  • انتهت مهلة الانتظار: الفاصل الزمني بين اللقطات السابقة أكبر من notifyExpectedPresentConfig.timeoutNs أو يساويه.

DisplayCommand.frameIntervalNs

DisplayCommand.frameIntervalNs يعرض هذا العمود تلميحًا حول إيقاع اللقطات القادمة بالنانوثواني.

الاختبار

استخدِم رمز onRefreshRateChangedDebug لتصحيح الأخطاء. تُعلم هذه الطريقة العميل بأنّه تم تغيير معدل تحديث الشاشة.

استخدِم TouchLatency تطبيق الاختبار لإجراء الاختبار اليدوي كما هو موضّح في الشكل 2:

touchlatency-app

الشكل 2: تطبيق اختبار TouchLatency

في التطبيق التجريبي، استخدِم شريط التمرير لضبط معدّل العرض على قيم مختلفة لمعدلات إعادة التحديث المُقسِّمة لمعدل إعادة التحديث في الشاشة. راقِب كيفية تغيُّر معدل عرض اللقطات مقارنةً بالمعدل المطلوب.