অ্যান্ড্রয়েড 15 থেকে শুরু করে, অভিযোজিত রিফ্রেশ রেট (ARR) বৈশিষ্ট্যটি ডিসক্রিট VSync ধাপগুলি ব্যবহার করে কন্টেন্ট ফ্রেম হারের সাথে মানিয়ে নিতে ডিসপ্লে রিফ্রেশ রেটকে সক্ষম করে।
ARR বৈশিষ্ট্য নিম্নলিখিত সুবিধাগুলি অফার করে:
বিদ্যুৎ খরচ কমানো: ডিফল্টরূপে, ARR ডিভাইসগুলিকে তাদের সর্বোচ্চ রিফ্রেশ হারের চেয়ে কম হারে কাজ করতে সক্ষম করে, শুধুমাত্র ব্যবহারকারীর অভিজ্ঞতার জন্য অপরিহার্য হলে উচ্চ হারে রূপান্তরিত হয়, যা অপ্রয়োজনীয় বিদ্যুত খরচ কমিয়ে দেয়।
জ্যাঙ্ক হ্রাস করা: ARR মোড স্যুইচিংয়ের প্রয়োজনীয়তা দূর করে, যা জ্যাঙ্কের একটি পরিচিত কারণ।
ওভারভিউ
নন-ARR প্যানেলে, ডিসপ্লে সক্রিয় ডিসপ্লে মোড দ্বারা নির্ধারিত একটি নির্দিষ্ট ক্যাডেন্সে রিফ্রেশ হয়।
ARR প্যানেলে, ডিসপ্লে VSync রেট এবং রিফ্রেশ রেট ডিকপল করা হয়, যা কন্টেন্ট আপডেট ক্যাডেন্সের উপর ভিত্তি করে একটি ডিসপ্লে মোডের মধ্যে রিফ্রেশ রেট পরিবর্তন করতে দেয়। প্যানেলগুলি রিফ্রেশ হারে চলতে পারে যা প্যানেলের টিয়ারিং ইফেক্ট (TE) এর বিভাজক। OEM-দের তাদের পছন্দের পাওয়ার ট্রেড-অফের উপর ভিত্তি করে ARR প্রয়োগ করার নমনীয়তা রয়েছে।
নিম্নলিখিত চিত্রটি 240 Hz এর vsyncPeriod
এবং 120 Hz এর minFrameIntervalNs
(সর্বোচ্চ রিফ্রেশ রেট) সহ একটি প্রদর্শন। VSync প্রতি 4.16 ms হয়। শেষ ফ্রেম থেকে minFrameIntervalNs
এর পরে VSync-এর যেকোনো গুণে একটি ফ্রেম উপস্থাপন করা যেতে পারে।
চিত্র 1. ARR এর উদাহরণ।
বাস্তবায়ন
Android 15 নতুন হার্ডওয়্যার কম্পোজার (HWC) HAL API এবং প্ল্যাটফর্ম পরিবর্তনের সাথে ARR সমর্থন করে। ARR সক্ষম করার জন্য, OEM গুলিকে অবশ্যই Android 15 এবং পরবর্তীতে চলমান ডিভাইসগুলিতে কার্নেল এবং সিস্টেম পরিবর্তনগুলি সমর্থন করতে হবে এবং নিম্নলিখিত বিভাগে তালিকাভুক্ত android.hardware.graphics.composer3
API-এর সংস্করণ 3 প্রয়োগ করতে হবে৷
আরও তথ্যের জন্য এআরআর সমর্থন করে এমন APIগুলির পিক্সেলের রেফারেন্স বাস্তবায়ন দেখুন।
DisplayConfiguration.aidl
DisplayConfiguration.aidl
API ডিসপ্লে অ্যাট্রিবিউট ব্যবহার করে ডিসপ্লে কনফিগারেশন নির্দিষ্ট করে, ARR-এর জন্য নিম্নলিখিত অ্যাট্রিবিউট সহ:
- ঐচ্ছিক
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 এবং 16.6 ms এর frameIntervalNs
সহ কল করা হয়, তাহলে পরবর্তী ফ্রেমটি বর্তমান সময় N এর পরে N + 16.6 ms হয়। বর্তমান সময় N এর পরে, আরও পরিবর্তন না হওয়া পর্যন্ত ফ্রেমের ক্যাডেন্স 16.6 ms হয়।
IComposerClient.notifyExpectedPresent
শুধুমাত্র তখনই কল করা হয় যখন DisplayConfiguration.notifyExpectedPresentConfig
সেট করা থাকে, এবং যদি নিম্নলিখিত টাইমিং শর্তগুলির মধ্যে একটি ঘটে:
- ক্যাডেন্সের বাইরে বর্তমান সময়: পরবর্তী ফ্রেমের প্রত্যাশিত উপস্থাপনা সময়
frameIntervalNs
দ্বারা সংজ্ঞায়িত ডিসপ্লের নিয়মিত রিফ্রেশ হার থেকে বিচ্যুত হয়। - সময়সীমা অতিক্রম করেছে: পূর্ববর্তী ফ্রেমের মধ্যে সময়ের ব্যবধানটি
notifyExpectedPresentConfig.timeoutNs
এর চেয়ে বেশি বা সমান।
DisplayCommand.frameIntervalNs
DisplayCommand.frameIntervalNs
ন্যানোসেকেন্ডে আসন্ন ফ্রেমের ক্যাডেন্স সম্পর্কে একটি ইঙ্গিত প্রদান করে।
টেস্টিং
ডিবাগ করার জন্য onRefreshRateChangedDebug
ব্যবহার করুন। এই পদ্ধতিটি ক্লায়েন্টকে জানায় যে ডিসপ্লের রিফ্রেশ রেট পরিবর্তিত হয়েছে।
চিত্র 2-তে দেখানো হিসাবে ম্যানুয়াল পরীক্ষার জন্য TouchLatency
পরীক্ষা অ্যাপ ব্যবহার করুন:
চিত্র 2. টাচ লেটেন্সি টেস্ট অ্যাপ।
পরীক্ষা অ্যাপে, আপনার ডিসপ্লের রিফ্রেশ হারের ভাজক রিফ্রেশ রেটগুলির বিভিন্ন মানের সাথে রেন্ডার রেট সামঞ্জস্য করতে স্লাইডারটি ব্যবহার করুন৷ অনুরোধ করা হারের সাথে ফ্রেমের হার কীভাবে পরিবর্তিত হয় তা পর্যবেক্ষণ করুন।
,অ্যান্ড্রয়েড 15 থেকে শুরু করে, অভিযোজিত রিফ্রেশ রেট (ARR) বৈশিষ্ট্যটি ডিসক্রিট VSync ধাপগুলি ব্যবহার করে কন্টেন্ট ফ্রেম হারের সাথে মানিয়ে নিতে ডিসপ্লে রিফ্রেশ রেটকে সক্ষম করে।
ARR বৈশিষ্ট্য নিম্নলিখিত সুবিধাগুলি অফার করে:
বিদ্যুৎ খরচ কমানো: ডিফল্টরূপে, ARR ডিভাইসগুলিকে তাদের সর্বোচ্চ রিফ্রেশ হারের চেয়ে কম হারে কাজ করতে সক্ষম করে, শুধুমাত্র ব্যবহারকারীর অভিজ্ঞতার জন্য অপরিহার্য হলে উচ্চ হারে রূপান্তরিত হয়, যা অপ্রয়োজনীয় বিদ্যুত খরচ কমিয়ে দেয়।
জ্যাঙ্ক হ্রাস করা: ARR মোড স্যুইচিংয়ের প্রয়োজনীয়তা দূর করে, যা জ্যাঙ্কের একটি পরিচিত কারণ।
ওভারভিউ
নন-ARR প্যানেলে, ডিসপ্লে সক্রিয় ডিসপ্লে মোড দ্বারা নির্ধারিত একটি নির্দিষ্ট ক্যাডেন্সে রিফ্রেশ হয়।
ARR প্যানেলে, ডিসপ্লে VSync রেট এবং রিফ্রেশ রেট ডিকপল করা হয়, যা কন্টেন্ট আপডেট ক্যাডেন্সের উপর ভিত্তি করে একটি ডিসপ্লে মোডের মধ্যে রিফ্রেশ রেট পরিবর্তন করতে দেয়। প্যানেলগুলি রিফ্রেশ হারে চলতে পারে যা প্যানেলের টিয়ারিং ইফেক্ট (TE) এর বিভাজক। OEM-দের তাদের পছন্দের পাওয়ার ট্রেড-অফের উপর ভিত্তি করে ARR প্রয়োগ করার নমনীয়তা রয়েছে।
নিম্নলিখিত চিত্রটি 240 Hz এর vsyncPeriod
এবং 120 Hz এর minFrameIntervalNs
(সর্বোচ্চ রিফ্রেশ রেট) সহ একটি প্রদর্শন। VSync প্রতি 4.16 ms হয়। শেষ ফ্রেম থেকে minFrameIntervalNs
এর পরে VSync-এর যেকোনো গুণে একটি ফ্রেম উপস্থাপন করা যেতে পারে।
চিত্র 1. ARR এর উদাহরণ।
বাস্তবায়ন
Android 15 নতুন হার্ডওয়্যার কম্পোজার (HWC) HAL API এবং প্ল্যাটফর্ম পরিবর্তনের সাথে ARR সমর্থন করে। ARR সক্ষম করার জন্য, OEM গুলিকে অবশ্যই Android 15 এবং পরবর্তীতে চলমান ডিভাইসগুলিতে কার্নেল এবং সিস্টেম পরিবর্তনগুলি সমর্থন করতে হবে এবং নিম্নলিখিত বিভাগে তালিকাভুক্ত android.hardware.graphics.composer3
API-এর সংস্করণ 3 প্রয়োগ করতে হবে৷
আরও তথ্যের জন্য এআরআর সমর্থন করে এমন APIগুলির পিক্সেলের রেফারেন্স বাস্তবায়ন দেখুন।
DisplayConfiguration.aidl
DisplayConfiguration.aidl
API ডিসপ্লে অ্যাট্রিবিউট ব্যবহার করে ডিসপ্লে কনফিগারেশন নির্দিষ্ট করে, ARR-এর জন্য নিম্নলিখিত অ্যাট্রিবিউট সহ:
- ঐচ্ছিক
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 এবং 16.6 ms এর frameIntervalNs
সহ কল করা হয়, তাহলে পরবর্তী ফ্রেমটি বর্তমান সময় N এর পরে N + 16.6 ms হয়। বর্তমান সময় N এর পরে, আরও পরিবর্তন না হওয়া পর্যন্ত ফ্রেমের ক্যাডেন্স 16.6 ms হয়।
IComposerClient.notifyExpectedPresent
শুধুমাত্র তখনই কল করা হয় যখন DisplayConfiguration.notifyExpectedPresentConfig
সেট করা থাকে, এবং যদি নিম্নলিখিত টাইমিং শর্তগুলির মধ্যে একটি ঘটে:
- ক্যাডেন্সের বাইরে বর্তমান সময়: পরবর্তী ফ্রেমের প্রত্যাশিত উপস্থাপনা সময়
frameIntervalNs
দ্বারা সংজ্ঞায়িত ডিসপ্লের নিয়মিত রিফ্রেশ হার থেকে বিচ্যুত হয়। - সময়সীমা অতিক্রম করেছে: পূর্ববর্তী ফ্রেমের মধ্যে সময়ের ব্যবধানটি
notifyExpectedPresentConfig.timeoutNs
এর চেয়ে বেশি বা সমান।
DisplayCommand.frameIntervalNs
DisplayCommand.frameIntervalNs
ন্যানোসেকেন্ডে আসন্ন ফ্রেমের জন্য ক্যাডেন্স সম্পর্কে একটি ইঙ্গিত প্রদান করে।
টেস্টিং
ডিবাগ করার জন্য onRefreshRateChangedDebug
ব্যবহার করুন। এই পদ্ধতিটি ক্লায়েন্টকে জানায় যে ডিসপ্লের রিফ্রেশ রেট পরিবর্তিত হয়েছে।
চিত্র 2-তে দেখানো হিসাবে ম্যানুয়াল পরীক্ষার জন্য TouchLatency
পরীক্ষা অ্যাপ ব্যবহার করুন:
চিত্র 2. টাচ লেটেন্সি টেস্ট অ্যাপ।
পরীক্ষা অ্যাপে, আপনার ডিসপ্লের রিফ্রেশ হারের ভাজক রিফ্রেশ রেটগুলির বিভিন্ন মানের সাথে রেন্ডার রেট সামঞ্জস্য করতে স্লাইডারটি ব্যবহার করুন৷ অনুরোধ করা হারের সাথে ফ্রেমের হার কীভাবে পরিবর্তিত হয় তা পর্যবেক্ষণ করুন।