با شروع اندروید 15، ویژگی نرخ تازه سازی تطبیقی (ARR) با استفاده از مراحل گسسته VSync، نرخ تازه سازی نمایشگر را قادر می سازد تا با نرخ فریم محتوا سازگار شود.
ویژگی ARR مزایای زیر را ارائه می دهد:
کاهش مصرف انرژی: به طور پیشفرض، ARR دستگاهها را قادر میسازد تا با نرخهای کمتر از حداکثر نرخ تازهسازی خود کار کنند، و تنها زمانی که برای تجربه کاربر ضروری است، به نرخهای بالاتر منتقل میشوند، که مصرف انرژی غیرضروری را به حداقل میرساند.
کاهش jank: ARR نیاز به تغییر حالت را که یک علت شناخته شده برای jank است، از بین می برد.
نمای کلی
در پانل های غیر ARR، صفحه نمایش با آهنگ ثابتی که توسط حالت نمایش فعال تعیین می شود، تازه می شود.
در پانلهای ARR، نرخ VSync نمایشگر و نرخ تازهسازی از هم جدا میشوند، که به این امکان را میدهد تا نرخهای تازهسازی در یک حالت نمایش، بر اساس آهنگ بهروزرسانی محتوا، تغییر کند. پنلها میتوانند با نرخهای تازهسازی اجرا شوند که مقسومکنندههای اثر پارگی پانل (TE) هستند. OEM ها انعطاف پذیری برای پیاده سازی ARR بر اساس مبادله توان ترجیحی خود را دارند.
شکل زیر نمایشگری با vsyncPeriod
240 هرتز و minFrameIntervalNs
(حداکثر نرخ تازه سازی) 120 هرتز است. VSync هر 4.16 میلی ثانیه اتفاق می افتد. یک فریم می تواند در هر مضرب VSync بعد از minFrameIntervalNs
های آخرین فریم ارائه شود.
شکل 1. مثالی از ARR.
پیاده سازی
Android 15 از ARR با APIهای HAL جدید Hardware Composer (HWC) و تغییرات پلت فرم پشتیبانی می کند. برای فعال کردن ARR، OEMها باید از تغییرات هسته و سیستم در دستگاههای دارای Android 15 و بالاتر پشتیبانی کنند و نسخه 3 APIهای android.hardware.graphics.composer3
را که در بخشهای زیر فهرست شده است، پیادهسازی کنند.
برای اطلاعات بیشتر به پیادهسازی مرجع Pixel از APIهایی که از ARR پشتیبانی میکنند، مراجعه کنید.
DisplayConfiguration.aidl
DisplayConfiguration.aidl
API پیکربندی صفحه نمایش را با استفاده از ویژگی های نمایش به همراه ویژگی های زیر برای ARR مشخص می کند:
-
vrrConfig
اختیاری: اگر تنظیم شود، ARR برای پیکربندیهای خاص فعال میشود. اگر رویnull
تنظیم شود، حالت نمایش روی حالت های غیر ARR مانند نرخ تجدید چندگانه (MRR) تنظیم می شود. با این ویژگی، یک نمایشگر را می توان به عنوان MRR یا ARR پیکربندی کرد، اما نه هر دو. vsyncPeriod
: نرخ VSync نمایشگر. در نمایشگرهای ARR، از این مقدار برای استخراج نرخهای تازهسازی گسسته پشتیبانی شده استفاده میشود.فروشندگان باید مقدار
DisplayConfiguration.vsyncPeriod
را برای همه دستگاه ها تنظیم کنند. برای نمایشگرهای غیر ARR،DisplayConfiguration.vsyncPeriod
نرخ تازه سازی نمایشگر است. اگر دستگاهی از 120 هرتز پشتیبانی می کند، این مقدار باید 8.3 میلی ثانیه باشد.برای نمایشگرهای ARR،
DisplayConfiguration.vsyncPeriod
فرکانس سیگنال TE است. اگر دستگاهی دارایminFrameIntervalNs
8.3 میلی ثانیه است اما TE 240 هرتز است، این مقدار باید 4.16 میلی ثانیه باشد.
VrrConfig.aidl
VrrConfig.aidl
API شامل ویژگی های زیر است:
-
minFrameIntervalNs
: حداکثر نرخ تازه سازی که نمایشگر می تواند پشتیبانی کند. -
NotifyExpectedPresentConfig
: زمانی که نمایشگر نیاز به اطلاع قبلی از یک فریم آینده داشته باشد، تعیین می شود.
IComposerClient.notifyExpectedPresent
راهنمایی برای فریمی که احتمالاً ارائه می شود ارائه می دهد، به طوری که نمایشگر می تواند دوره بازخوانی خود را مطابق با آن تطبیق دهد. frameIntervalNs
نمایانگر کادری فعلی است که پس از expectedPresentTime
می رود. به عنوان مثال، اگر notifyExpectedPresent
با expectedPresentTime
N و frameIntervalNs
16.6 ms فراخوانی شود، فریم بعدی در N + 16.6 ms بعد از زمان فعلی N است.
IComposerClient.notifyExpectedPresent
فقط زمانی فراخوانی می شود که DisplayConfiguration.notifyExpectedPresentConfig
تنظیم شده باشد و اگر یکی از شرایط زمان بندی زیر رخ دهد:
- زمان حال خارج از آهنگ: زمان مورد انتظار ارائه فریم بعدی از نرخ به روز رسانی منظم نمایشگر که توسط
frameIntervalNs
تعریف شده است انحراف دارد. - مدت زمان فراتر از زمان: فاصله زمانی بین فریم های قبلی بیشتر از یا مساوی است تا با
notifyExpectedPresentConfig.timeoutNs
.
DisplayCommand.frameIntervalNs
DisplayCommand.frameIntervalNs
اشارهای درباره سرعت فریمهای آینده در نانوثانیه ارائه میدهد.
تست کردن
برای رفع اشکال از onRefreshRateChangedDebug
استفاده کنید. این روش به مشتری اطلاع می دهد که نرخ به روز رسانی صفحه نمایش تغییر کرده است.
همانطور که در شکل 2 نشان داده شده است، از برنامه تست TouchLatency
برای آزمایش دستی استفاده کنید:
شکل 2. برنامه تست تأخیر لمسی.
در برنامه آزمایشی، از نوار لغزنده استفاده کنید تا نرخ رندر را بر اساس مقادیر مختلف نرخ تازهسازی مقسومکننده نرخ تازهسازی نمایشگرتان تنظیم کنید. مشاهده کنید که نرخ فریم با توجه به نرخ درخواستی چگونه تغییر می کند.
،با شروع اندروید 15، ویژگی نرخ تازه سازی تطبیقی (ARR) با استفاده از مراحل گسسته VSync، نرخ تازه سازی نمایشگر را قادر می سازد تا با نرخ فریم محتوا سازگار شود.
ویژگی ARR مزایای زیر را ارائه می دهد:
کاهش مصرف انرژی: به طور پیشفرض، ARR دستگاهها را قادر میسازد تا با نرخهای کمتر از حداکثر نرخ تازهسازی خود کار کنند، و تنها زمانی که برای تجربه کاربر ضروری است، به نرخهای بالاتر منتقل میشوند، که مصرف انرژی غیرضروری را به حداقل میرساند.
کاهش jank: ARR نیاز به تغییر حالت را که یک علت شناخته شده برای jank است، از بین می برد.
نمای کلی
در پانل های غیر ARR، صفحه نمایش با آهنگ ثابتی که توسط حالت نمایش فعال تعیین می شود، تازه می شود.
در پانلهای ARR، نرخ VSync نمایشگر و نرخ تازهسازی از هم جدا میشوند، که به این امکان را میدهد تا نرخهای تازهسازی در یک حالت نمایش، بر اساس آهنگ بهروزرسانی محتوا، تغییر کند. پنلها میتوانند با نرخهای تازهسازی اجرا شوند که مقسومکنندههای اثر پارگی پانل (TE) هستند. OEM ها انعطاف پذیری برای پیاده سازی ARR بر اساس مبادله توان ترجیحی خود را دارند.
شکل زیر نمایشگری با vsyncPeriod
240 هرتز و minFrameIntervalNs
(حداکثر نرخ تازه سازی) 120 هرتز است. VSync هر 4.16 میلی ثانیه اتفاق می افتد. یک فریم می تواند در هر مضرب VSync بعد از minFrameIntervalNs
های آخرین فریم ارائه شود.
شکل 1. مثالی از ARR.
پیاده سازی
Android 15 از ARR با APIهای HAL جدید Hardware Composer (HWC) و تغییرات پلت فرم پشتیبانی می کند. برای فعال کردن ARR، OEMها باید از تغییرات هسته و سیستم در دستگاههای دارای Android 15 و بالاتر پشتیبانی کنند و نسخه 3 APIهای android.hardware.graphics.composer3
را که در بخشهای زیر فهرست شده است، پیادهسازی کنند.
برای اطلاعات بیشتر به پیادهسازی مرجع Pixel از APIهایی که از ARR پشتیبانی میکنند، مراجعه کنید.
DisplayConfiguration.aidl
DisplayConfiguration.aidl
API پیکربندی صفحه نمایش را با استفاده از ویژگی های نمایش به همراه ویژگی های زیر برای ARR مشخص می کند:
-
vrrConfig
اختیاری: اگر تنظیم شود، ARR برای پیکربندیهای خاص فعال میشود. اگر رویnull
تنظیم شود، حالت نمایش روی حالت های غیر ARR مانند نرخ تجدید چندگانه (MRR) تنظیم می شود. با این ویژگی، یک نمایشگر را می توان به عنوان MRR یا ARR پیکربندی کرد، اما نه هر دو. vsyncPeriod
: نرخ VSync نمایشگر. در نمایشگرهای ARR، از این مقدار برای استخراج نرخهای تازهسازی گسسته پشتیبانی شده استفاده میشود.فروشندگان باید مقدار
DisplayConfiguration.vsyncPeriod
را برای همه دستگاه ها تنظیم کنند. برای نمایشگرهای غیر ARR،DisplayConfiguration.vsyncPeriod
نرخ تازه سازی نمایشگر است. اگر دستگاهی از 120 هرتز پشتیبانی می کند، این مقدار باید 8.3 میلی ثانیه باشد.برای نمایشگرهای ARR،
DisplayConfiguration.vsyncPeriod
فرکانس سیگنال TE است. اگر دستگاهی دارایminFrameIntervalNs
8.3 میلی ثانیه است اما TE 240 هرتز است، این مقدار باید 4.16 میلی ثانیه باشد.
VrrConfig.aidl
VrrConfig.aidl
API شامل ویژگی های زیر است:
-
minFrameIntervalNs
: حداکثر نرخ تازه سازی که نمایشگر می تواند پشتیبانی کند. -
NotifyExpectedPresentConfig
: زمانی که نمایشگر نیاز به اطلاع قبلی از یک فریم آینده داشته باشد، تعیین می شود.
IComposerClient.notifyExpectedPresent
راهنمایی برای فریمی که احتمالاً ارائه می شود ارائه می دهد، به طوری که نمایشگر می تواند دوره بازخوانی خود را مطابق با آن تطبیق دهد. frameIntervalNs
نشاندهنده آهنگ فعلی است که پس از expectedPresentTime
دنبال میشود. به عنوان مثال، اگر notifyExpectedPresent
با expectedPresentTime
N و frameIntervalNs
16.6 ms فراخوانی شود، فریم بعدی در N + 16.6 ms بعد از زمان فعلی N است.
IComposerClient.notifyExpectedPresent
فقط زمانی فراخوانی می شود که DisplayConfiguration.notifyExpectedPresentConfig
تنظیم شده باشد و اگر یکی از شرایط زمان بندی زیر رخ دهد:
- زمان حال خارج از آهنگ: زمان مورد انتظار ارائه فریم بعدی از نرخ به روز رسانی منظم نمایشگر که توسط
frameIntervalNs
تعریف شده است انحراف دارد. - زمان بیش از حد: فاصله زمانی بین فریم های قبلی بزرگتر یا مساوی با
notifyExpectedPresentConfig.timeoutNs
است.
DisplayCommand.frameIntervalNs
DisplayCommand.frameIntervalNs
اشارهای درباره سرعت فریمهای آینده در نانوثانیه ارائه میدهد.
تست کردن
برای رفع اشکال از onRefreshRateChangedDebug
استفاده کنید. این روش به مشتری اطلاع می دهد که نرخ به روز رسانی صفحه نمایش تغییر کرده است.
همانطور که در شکل 2 نشان داده شده است، از برنامه تست TouchLatency
برای آزمایش دستی استفاده کنید:
شکل 2. برنامه تست تأخیر لمسی.
در برنامه آزمایشی، از نوار لغزنده استفاده کنید تا نرخ رندر را بر اساس مقادیر مختلف نرخ تازهسازی مقسومکننده نرخ تازهسازی نمایشگرتان تنظیم کنید. مشاهده کنید که نرخ فریم با توجه به نرخ درخواستی چگونه تغییر می کند.