اعتبارًا من Android 15، تتيح ميزة معدل التحديث التكيُّفي (ARR) لمعدل تحديث الشاشة التكيُّف مع معدل عرض اللقطات للمحتوى، وذلك باستخدام خطوات Discrete VSync.
توفّر ميزة ARR المزايا التالية:
تقليل استهلاك الطاقة: تتيح ميزة ARR للأجهزة العمل تلقائيًا بمعدّلات أقل من الحدّ الأقصى لمعدّلات التحديث، ما يؤدي إلى الانتقال إلى معدّلات أعلى فقط عندما يكون ذلك ضروريًا لتجربة المستخدم، ما يقلّل من الاستهلاك غير الضروري للطاقة.
تقليل حالات التعطّل: يلغي ARR الحاجة إلى التبديل بين الأوضاع، وهو سبب معروف لحالات انقطاع الخدمة.
نظرة عامة
في اللوحات التي لا تتضمّن ميزة "عرض الإعلانات أثناء التشغيل"، يتمّ تعديل الشاشة بمعدّل ثابت يحدّده وضع العرض النشط.
على لوحات ARR، يتم فصل معدّل VSync ومعدّل التحديث في الشاشة، ما يسمح بتغيير معدّلات التحديث في وضع عرض واحد بناءً على وتيرة تحديث المحتوى. يمكن تشغيل اللوحات بمعدّلات تحديث قابلة للقسمة على أثر التمويه (TE) في اللوحة. تتوفّر لشركات المصنّعين الأصليّين المرونة في تنفيذ ميزة ARR استنادًا إلى مفاضلات الطاقة المفضّلة لديهم.
يعرض الشكل التالي شاشة ذات vsyncPeriod
(معدل تكرار الإطارات) يبلغ 240 هرتز و
minFrameIntervalNs
(الحد الأقصى لمعدل تكرار الإطارات) يبلغ 120 هرتز. يحدث التزامن العمودي للعرض كل
4.16 ملي ثانية. ويمكن عرض لقطة في أي مضاعفات لتزامن العرض العمودي بعد
minFrameIntervalNs
من اللقطة الأخيرة.
الشكل 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:
الشكل 2: تطبيق اختبار TouchLatency
في التطبيق التجريبي، استخدِم شريط التمرير لضبط معدّل العرض على قيم مختلفة لمعدلات التحديث المُقسِّمة لمعدّل تحديث الشاشة. راقِب كيفية تغيُّر عدد اللقطات في الثانية مقارنةً بمعدّل اللقطات في الثانية المطلوب.