অ্যাডাপ্টিভ রিফ্রেশ রেট

Android 15-এ অ্যাডাপ্টিভ রিফ্রেশ রেট (ARR) ফিচার চালু করা হয়েছে, যা ডিসপ্লে রিফ্রেশ রেটকে ডিসক্রিট VSync স্টেপ ব্যবহার করে কন্টেন্ট ফ্রেম রেটের সাথে মানিয়ে নিতে দেয়।

ARR ফিচারের মাধ্যমে নিম্নলিখিত সুবিধাগুলি পাওয়া যায়:

  • বিদ্যুৎ খরচ কমানো: ডিফল্ট হিসেবে, ARR ডিভাইসগুলিকে তাদের সর্বাধিক রিফ্রেশ রেটের চেয়ে কম রেটে অপারেট করতে দেয়। ব্যবহারকারীর অভিজ্ঞতার জন্য প্রয়োজন হলেই শুধুমাত্র বেশি রেটে ট্রানজিট করে, যা অপ্রয়োজনীয় বিদ্যুৎ খরচ কমিয়ে দেয়।
  • জ্যাঙ্ক কমানো: ARR মোড পরিবর্তন করার প্রয়োজনীয়তা দূর করে, যা জ্যাঙ্কের একটি পরিচিত কারণ।

এক নজরে

ARR নয় এমন প্যানেলে, অ্যাক্টিভ ডিসপ্লে মোড দ্বারা নির্ধারিত একটি নির্দিষ্ট ক্যাডেন্স অনুযায়ী ডিসপ্লে রিফ্রেশ হয়।

ARR প্যানেলে, ডিসপ্লে VSync রেট ও রিফ্রেশ রেট ডিকাপল করা থাকে, যার ফলে কন্টেন্ট আপডেট ক্যাডেন্সের উপর ভিত্তি করে একটি ডিসপ্লে মোডের মধ্যে রিফ্রেশ রেট পরিবর্তন করা যায়। প্যানেল এমন রিফ্রেশ রেটে চলতে পারে যা প্যানেলের টিয়ারিং এফেক্টের (TE) ভাজক। OEM-রা তাদের পছন্দের পাওয়ার ট্রেড-অফ অনুযায়ী ARR প্রয়োগ করতে পারে।

নিচের ছবিতে ২৪০ Hz-এর vsyncPeriod এবং ১২০ Hz-এর minFrameIntervalNs (সর্বাধিক রিফ্রেশ রেট) সহ একটি ডিসপ্লে দেখানো হয়েছে। VSync প্রতি ৪.১৬ মিলিসেকেন্ডে ঘটে। শেষ ফ্রেম থেকে minFrameIntervalNs-এর পরে VSync-এর যেকোনও গুণিতকে একটি ফ্রেম উপস্থাপন করা যেতে পারে।

arr-example

ছবি ১. ARR-এর উদাহরণ।

প্রয়োগ

Android 15-এ নতুন Hardware Composer (HWC) HAL API ও প্ল্যাটফর্ম পরিবর্তনের সাথে ARR কাজ করে। ARR চালু করতে, OEM-কে Android 15 এবং তার পরবর্তী যেকোনও ভার্সনে চলা ডিভাইসে কার্নেল এবং সিস্টেম পরিবর্তনগুলি অবশ্যই সাপোর্ট করতে হবে এবং নিম্নলিখিত বিভাগে তালিকাভুক্ত android.hardware.graphics.composer3 API-এর ভার্সন ৩ প্রয়োগ করতে হবে।

ARR কাজ করে এমন API-এর Pixel-এর রেফারেন্স ইমপ্লিমেন্টেশন দেখুন। আরও তথ্য পাবেন।

DisplayConfiguration.aidl

DisplayConfiguration.aidl API ডিসপ্লে অ্যাট্রিবিউট ব্যবহার করে ডিসপ্লে কনফিগারেশন নির্দিষ্ট করে, এর সাথে ARR-এর জন্য নিম্নলিখিত অ্যাট্রিবিউটও থাকে:

  • ঐচ্ছিক vrrConfig: সেট করা থাকলে, নির্দিষ্ট কনফিগারেশনের জন্য ARR চালু করা হয়। null-এ সেট করা হলে, ডিসপ্লে মোড নন-ARR মোডে সেট করা হয়, যেমন একাধিক রিফ্রেশ রেট (MRR)। এই অ্যাট্রিবিউট সহ, কোনও ডিসপ্লেকে MRR বা ARR হিসেবে কনফিগার করা যেতে পারে, তবে দুটি হিসেবেই নয়।
  • vsyncPeriod: ডিসপ্লের VSync রেট। ARR ডিসপ্লেতে, এই ভ্যালু ব্যবহার করে কাজ করে এমন ডিসক্রিট রিফ্রেশ রেট পাওয়া যায়।

    সব ডিভাইসের জন্য ভেন্ডরকে DisplayConfiguration.vsyncPeriod ভ্যালু সেট করতে হবে। ARR নয় এমন ডিসপ্লের ক্ষেত্রে, DisplayConfiguration.vsyncPeriod হল ডিসপ্লে রিফ্রেশ রেট। কোনও ডিভাইসে ১২০ Hz কাজ করলে, এই ভ্যালু অবশ্যই ৮.৩ ms হতে হবে।

    ARR ডিসপ্লের জন্য, DisplayConfiguration.vsyncPeriod হল TE সিগন্যাল ফ্রিকোয়েন্সি। কোনও ডিভাইসের minFrameIntervalNs যদি ৮.৩ ms হয় কিন্তু TE is ২৪০ Hz হয়, তাহলে এই মান ৪.১৬ ms হতে হবে।

VrrConfig.aidl

VrrConfig.aidl API-তে নিম্নলিখিত অ্যাট্রিবিউট অন্তর্ভুক্ত থাকে:

  • minFrameIntervalNs: ডিসপ্লেতে কাজ করতে পারে এমন সর্বাধিক রিফ্রেশ রেট।
  • NotifyExpectedPresentConfig: এটি নির্ধারণ করা হয় ডিসপ্লেতে কখন আসন্ন ফ্রেমের আগাম বিজ্ঞপ্তি প্রয়োজন।

IComposerClient.notifyExpectedPresent সম্ভাব্য ফ্রেমের ব্যাপারে ইঙ্গিত দেয়, যাতে ডিসপ্লে সেই অনুযায়ী নিজের সেল্ফ-রিফ্রেশ পিরিয়ড অ্যাডজাস্ট করতে পারে। frameIntervalNs বর্তমান ক্যাডেন্সকে দেখায় যা expectedPresentTime-এর পরে আসে। যেমন, যদি notifyExpectedPresent expectedPresentTime N এবং frameIntervalNs ১৬.৬ ms দিয়ে কল করা হয়, তাহলে বর্তমান সময় N-এর পরে পরবর্তী ফ্রেম N + ১৬.৬ ms-এ থাকবে। বর্তমান সময় N-এর পরে, আরও পরিবর্তন না হওয়া পর্যন্ত ফ্রেম ক্যাডেন্স ১৬.৬ ms হবে।

IComposerClient.notifyExpectedPresent শুধুমাত্র তখনই কল করা হয় যখন DisplayConfiguration.notifyExpectedPresentConfig সেট করা থাকে এবং যদি নিম্নলিখিত সময় সংক্রান্ত শর্তগুলির মধ্যে একটি ঘটে:

  • আউট-অফ-ক্যাডেন্স প্রেজেন্ট টাইম: পরবর্তী ফ্রেমের প্রত্যাশিত প্রেজেন্টেশন টাইম frameIntervalNs দ্বারা নির্ধারিত ডিসপ্লের নিয়মিত রিফ্রেশ রেট থেকে বিচ্যুত হয়।
  • টাইমআউট পেরিয়ে গেছে: আগের ফ্রেমের মধ্যে সময়ের ব্যবধান notifyExpectedPresentConfig.timeoutNs-এর চেয়ে বেশি বা সমান।

DisplayCommand.frameIntervalNs

DisplayCommand.frameIntervalNs আসন্ন ফ্রেমের ক্যাডেন্স সম্পর্কে ন্যানোসেকেন্ডে ইঙ্গিত দেয়।

পরীক্ষা করা

ডিবাগ করার জন্য onRefreshRateChangedDebug ব্যবহার করুন। এই পদ্ধতি ক্লায়েন্টকে বিজ্ঞপ্তি পাঠায় যে ডিসপ্লের রিফ্রেশ রেট পরিবর্তন করা হয়েছে।

ম্যানুয়াল টেস্টিংয়ের জন্য TouchLatency টেস্ট অ্যাপ ব্যবহার করুন, যেমনটি ২ নম্বর ছবিতে দেখানো হয়েছে:

touchlatency-app

ছবি ২. TouchLatency টেস্ট অ্যাপ।

টেস্ট অ্যাপে, ডিসপ্লের রিফ্রেশ রেটের ডিভাইসর রিফ্রেশ রেটের বিভিন্ন ভ্যালুতে রেন্ডার রেট অ্যাডজাস্ট করতে স্লাইডার ব্যবহার করুন। অনুরোধ করা রেটের ভিত্তিতে ফ্রেম রেট কীভাবে পরিবর্তিত হয় তা লক্ষ্য করুন।