Android 15 ویژگی نرخ بازسازی تطبیقی (ARR) را معرفی میکند که به نرخ بازسازی نمایشگر اجازه میدهد بااستفاده از مراحل VSync مجزا با نرخ قاب محتوا تطبیق پیدا کند.
ویژگی ARR مزایای زیر را ارائه میدهد:
- کاهش مصرف برق: بهطور پیشفرض، ARR به دستگاهها اجازه میدهد با نرخهایی کمتر از حداکثر نرخ بازآوریشان کار کنند و فقط زمانی به نرخهای بالاتر بروند که برای تجربه کاربری ضروری باشد، که این امر مصرف برق غیرضروری را به حداقل میرساند.
- کاهش پرش: ARR نیاز به تغییر حالت را که علت شناختهشدهای برای پرش است ازبین میبرد.
نمای کلی
در پانلهای غیر ARR، نمایشگر با آهنگ ثابتی که توسط حالت نمایشگر فعال تعیین میشود، بازآوری میشود.
در پنلهای ARR، نرخ VSync نمایشگر و نرخ بازآوری ازهم جدا میشوند که باعث میشود نرخهای بازآوری در یک حالت نمایشگر براساس آهنگ بهروزرسانی محتوا تغییر کنند. پانلها میتوانند با نرخهای بازآوریای اجرا شوند که مقسومعلیه اثر پارگی (TE) پانل هستند. تولیدکنندگان اصلی تجهیزات میتوانند ARR را براساس موازنههای توان ترجیحی خود پیادهسازی کنند.
شکل زیر نمایشگری با vsyncPeriod از ۲۴۰ هرتز و
minFrameIntervalNs (حداکثر نرخ بازآوری) از ۱۲۰ هرتز را نشان میدهد. VSync هر
۴٫۱۶ میلیثانیه رخ میدهد. قاب میتواند در هر مضربی از VSync پساز
minFrameIntervalNs از قاب آخر ارائه شود.
شکل ۱. مثالی از ARR.
پیادهسازی
Android 15 از ARR با میاناهای برنامهسازی کاربردی HAL جدید Hardware Composer (HWC) و تغییرات پلاتفرم پشتیبانی میکند. برای فعال کردن ARR، سازندگان اصلی تجهیزات باید از تغییرات هسته و سیستم در دستگاههای دارای Android 15 و بالاتر پشتیبانی کنند و نسخه ۳ از
android.hardware.graphics.composer3 API را، همانطور که در بخشهای زیر فهرست شده است، پیادهسازی کنند.
برای اطلاعات بیشتر، پیادهسازی مرجع Pixel از میاناهای برنامهسازی کاربردی را که از ARR پشتیبانی میکنند ببینید.
DisplayConfiguration.aidl
میانای برنامهسازی کاربردی DisplayConfiguration.aidl پیکربندی نمایشگر را
بااستفاده از مشخصههای نمایشگر، همراه با مشخصههای زیر برای ARR مشخص میکند:
- اختیاری
vrrConfig: اگر تنظیم شود، ARR برای پیکربندیهای خاص فعال میشود. اگر رویnullتنظیم شود، حالت نمایشگر روی حالتهای غیر ARR مثل نرخ بازآوری چندگانه (MRR) تنظیم میشود. با این مشخصه، نمایشگر میتواند بهعنوان MRR یا ARR پیکربندی شود، اما نمیتواند هر دو باشد. vsyncPeriod: نرخ VSync نمایشگر. در نمایشگرهای ARR، از این مقدار برای استخراج نرخهای بازآوری گسسته پشتیبانیشده استفاده میشود.فروشندگان باید مقدار
DisplayConfiguration.vsyncPeriodرا برای همه دستگاهها تنظیم کنند. برای نمایشگرهای غیر ARR،DisplayConfiguration.vsyncPeriodنرخ بازآوری نمایشگر است. اگر دستگاهی از ۱۲۰ هرتز پشتیبانی میکند، این مقدار باید ۸٫۳ میلیثانیه باشد.برای نمایشگرهای ARR،
DisplayConfiguration.vsyncPeriodفرکانس سیگنال TE است. اگر دستگاهیminFrameIntervalNsبرابر با ۸٫۳ میلیثانیه داشته باشد اما TE آن ۲۴۰ هرتز باشد، این مقدار باید ۴٫۱۶ میلیثانیه باشد.
VrrConfig.aidl
API VrrConfig.aidl شامل ویژگیهای زیر است:
minFrameIntervalNs: حداکثر نرخ بازسازی که نمایشگر میتواند پشتیبانی کند.NotifyExpectedPresentConfig: این زمان براساس وقتی تعیین میشود که نمایشگر به پیشاعلامیه برای قاب بعدی نیاز دارد.
IComposerClient.notifyExpectedPresent
نکتهای برای قابی ارائه میدهد که احتمالاً ارائه خواهد شد تا نمایشگر بتواند
دوره بازآوری خودکارش را براساس آن تطبیق دهد. frameIntervalNs نشاندهنده آهنگ فعلی است که پساز expectedPresentTime میآید. برای مثال، اگر
notifyExpectedPresent با expectedPresentTime N و
frameIntervalNs از ۱۶٫۶ میلیثانیه فراخوانده شود، قاب بعدی در N + ۱۶٫۶ میلیثانیه
بعداز زمان فعلی N است. پساز زمان کنونی N، آهنگ قاب تا زمانی که تغییرات بیشتری اعمال شود، ۱۶٫۶ میلیثانیه است.
IComposerClient.notifyExpectedPresent فقط زمانی فراخوانده میشود که
DisplayConfiguration.notifyExpectedPresentConfig تنظیم شده باشد و اگر یکی از
شرایط زمانبندی زیر رخ دهد:
- زمان ارائه خارج از آهنگ: زمان ارائه موردانتظار قاب بعدی از نرخ بازآوری معمولی نمایشگر که توسط
frameIntervalNsتعریف شده است منحرف میشود. - مهلت زمانی تمام شد: فاصله زمانی بین قابهای قبلی بزرگتر
از یا مساوی با
notifyExpectedPresentConfig.timeoutNsاست.
DisplayCommand.frameIntervalNs
DisplayCommand.frameIntervalNs
نکتهای درباره آهنگ فریمهای آینده برحسب نانوثانیه ارائه میدهد.
آزمایش
برای اشکالزدایی از
onRefreshRateChangedDebug
استفاده کنید. این روش به مشتری اطلاع میدهد که نرخ بازآوری نمایشگر تغییر کرده است.
از برنامه آزمایشی
TouchLatency
برای آزمایش دستی همانطور که در «شکل ۲» نشان داده شده است استفاده کنید:
شکل ۲. برنامه آزمایش «تأخیر لمس».
در برنامه آزمایشی، از لغزنده برای تنظیم نرخ رندر به مقادیر مختلف نرخهای بازآوری تقسیمکننده نرخ بازآوری نمایشگر استفاده کنید. مشاهده کنید که نرخ فریم براساس نرخ درخواستی چگونه تغییر میکند.