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

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

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

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

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

نظرة عامة

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

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

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

arr-example

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

التنفيذ

يتيح نظام التشغيل Android 15 ميزة "الاستجابة السريعة للإعلانات" (ARR) من خلال واجهات برمجة تطبيقات جديدة لواجهة Hardware Composer (HWC) HAL وتغييرات في النظام الأساسي. لتفعيل ميزة "الاستجابة السريعة للإعلانات"، على المصنّعين الأصليّين للأجهزة إتاحة تغييرات نظام التشغيل والنواة على الأجهزة التي تعمل بنظام التشغيل Android 15 والإصدارات الأحدث، وتنفيذ الإصدار 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

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