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

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

توفّر ميزة ARR المزايا التالية:

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

  • تقليل حالات التعطّل: يلغي ARR الحاجة إلى التبديل بين الأوضاع، وهو سبب معروف لحالات انقطاع الخدمة.

نظرة عامة

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

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

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

مثال على arr

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

التنفيذ

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

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

DisplayConfiguration.aidl

تحدّد واجهة برمجة التطبيقات DisplayConfiguration.aidl إعدادات الشاشة باستخدام سمات العرض، بالإضافة إلى السمات التالية لأجل ARR:

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

    على المورّدين ضبط القيمة 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

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