অভিযোজিত রিফ্রেশ হার

অ্যান্ড্রয়েড ১৫ অ্যাডাপ্টিভ রিফ্রেশ রেট (ARR) বৈশিষ্ট্যটি প্রবর্তন করে, যা ডিসপ্লে রিফ্রেশ রেটকে ডিসক্রিট VSync ধাপগুলি ব্যবহার করে কন্টেন্ট ফ্রেম রেটের সাথে খাপ খাইয়ে নিতে দেয়।

ARR বৈশিষ্ট্যটি নিম্নলিখিত সুবিধাগুলি প্রদান করে:

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

সংক্ষিপ্ত বিবরণ

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

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

নিচের চিত্রটিতে একটি ডিসপ্লে দেখানো হয়েছে যার vsyncPeriod 240 Hz এবং minFrameIntervalNs (সর্বোচ্চ রিফ্রেশ রেট) 120 Hz। VSync প্রতি 4.16 ms এ ঘটে। শেষ ফ্রেমের minFrameIntervalNs এর পরে VSync এর যেকোনো গুণিতকে একটি ফ্রেম উপস্থাপন করা যেতে পারে।

arr-example

চিত্র ১. ARR-এর উদাহরণ।

বাস্তবায়ন

অ্যান্ড্রয়েড ১৫ নতুন হার্ডওয়্যার কম্পোজার (HWC) HAL API এবং প্ল্যাটফর্ম পরিবর্তনের মাধ্যমে ARR সমর্থন করে। ARR সক্ষম করতে, OEM-গুলিকে অবশ্যই অ্যান্ড্রয়েড ১৫ এবং উচ্চতর সংস্করণে চলমান ডিভাইসগুলিতে কার্নেল এবং সিস্টেম পরিবর্তনগুলি সমর্থন করতে হবে এবং নিম্নলিখিত বিভাগগুলিতে তালিকাভুক্ত android.hardware.graphics.composer3 API-এর সংস্করণ 3 বাস্তবায়ন করতে হবে।

আরও তথ্যের জন্য ARR সমর্থনকারী API গুলির Pixel এর রেফারেন্স বাস্তবায়ন দেখুন।

DisplayConfiguration.aidl সম্পর্কে

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

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

    সকল ডিভাইসের জন্য বিক্রেতাদের অবশ্যই DisplayConfiguration.vsyncPeriod মান সেট করতে হবে। ARR-বহির্ভূত ডিসপ্লের জন্য, DisplayConfiguration.vsyncPeriod হল ডিসপ্লে রিফ্রেশ রেট। যদি কোনও ডিভাইস 120 Hz সমর্থন করে, তাহলে এই মানটি 8.3 ms হতে হবে।

    ARR ডিসপ্লের জন্য, DisplayConfiguration.vsyncPeriod হল TE সিগন্যাল ফ্রিকোয়েন্সি। যদি কোনও ডিভাইসের minFrameIntervalNs 8.3 ms থাকে কিন্তু TE 240 Hz হয়, তাহলে এই মানটি 4.16 ms হতে হবে।

VrrConfig.aidl সম্পর্কে

VrrConfig.aidl API-তে নিম্নলিখিত বৈশিষ্ট্যগুলি অন্তর্ভুক্ত রয়েছে:

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

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

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

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

DisplayCommand.frameIntervalNs

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

পরীক্ষামূলক

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

চিত্র ২-এ দেখানো ম্যানুয়াল পরীক্ষার জন্য TouchLatency test অ্যাপটি ব্যবহার করুন:

touchlatency-app

চিত্র ২। টাচলেটেন্সি টেস্ট অ্যাপ।

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