হার্ডওয়্যার কম্পোজার (HWC) HAL উপলব্ধ হার্ডওয়্যারের সাথে কম্পোজিট বাফারের সবচেয়ে কার্যকর উপায় নির্ধারণ করে। HAL হিসাবে, এটির বাস্তবায়ন ডিভাইস-নির্দিষ্ট এবং সাধারণত ডিসপ্লে হার্ডওয়্যার OEM দ্বারা করা হয়।
আপনি যখন ওভারলে প্লেনগুলি বিবেচনা করেন তখন এই পদ্ধতির মানটি সনাক্ত করা সহজ হয়, যা GPU এর পরিবর্তে ডিসপ্লে হার্ডওয়্যারে একাধিক বাফারকে সংমিশ্রিত করে। উদাহরণস্বরূপ, পোর্ট্রেট ওরিয়েন্টেশনে একটি সাধারণ অ্যান্ড্রয়েড ফোন বিবেচনা করুন, উপরে স্ট্যাটাস বার, নীচে নেভিগেশন বার এবং অন্য সব জায়গায় অ্যাপ সামগ্রী। প্রতিটি স্তরের জন্য বিষয়বস্তু পৃথক বাফার আছে. আপনি নিম্নলিখিত পদ্ধতিগুলির যেকোনো একটি ব্যবহার করে রচনা পরিচালনা করতে পারেন:
- অ্যাপের বিষয়বস্তুকে স্ক্র্যাচ বাফারে রেন্ডার করা, তারপরে স্ট্যাটাস বারটি রেন্ডার করা, তার উপরে নেভিগেশন বার, এবং অবশেষে ডিসপ্লে হার্ডওয়্যারে স্ক্র্যাচ বাফার পাস করা।
- ডিসপ্লে হার্ডওয়্যারে তিনটি বাফার পাস করা এবং স্ক্রিনের বিভিন্ন অংশের জন্য বিভিন্ন বাফার থেকে ডেটা পড়ার নির্দেশ দেওয়া।
পরবর্তী পদ্ধতি উল্লেখযোগ্যভাবে আরো দক্ষ হতে পারে.
ডিসপ্লে প্রসেসরের ক্ষমতা উল্লেখযোগ্যভাবে পরিবর্তিত হয়। ওভারলেগুলির সংখ্যা, স্তরগুলি ঘোরানো বা মিশ্রিত করা যায় কিনা এবং অবস্থান এবং ওভারল্যাপের উপর সীমাবদ্ধতা একটি API এর মাধ্যমে প্রকাশ করা কঠিন হতে পারে। এই বিকল্পগুলিকে মিটমাট করার জন্য, HWC নিম্নলিখিত গণনাগুলি সম্পাদন করে:
- সারফেসফ্লিংগার HWC কে স্তরগুলির একটি সম্পূর্ণ তালিকা প্রদান করে এবং জিজ্ঞাসা করে, "আপনি কীভাবে এটি পরিচালনা করতে চান?"
- HWC প্রতিটি স্তরকে ডিভাইস বা ক্লায়েন্ট রচনা হিসাবে চিহ্নিত করে প্রতিক্রিয়া জানায়।
- SurfaceFlinger যেকোন ক্লায়েন্টের যত্ন নেয়, আউটপুট বাফার HWC-তে পাস করে, এবং HWC কে বাকিটা পরিচালনা করতে দেয়।
যেহেতু হার্ডওয়্যার বিক্রেতারা দর্জির সিদ্ধান্ত নেওয়ার কোড কাস্টম করতে পারে, তাই প্রতিটি ডিভাইস থেকে সেরা পারফরম্যান্স পাওয়া সম্ভব।
ওভারলে প্লেনগুলি GL কম্পোজিশনের তুলনায় কম কার্যকরী হতে পারে যখন স্ক্রিনে কিছুই পরিবর্তন হয় না। এটি বিশেষভাবে সত্য যখন ওভারলে বিষয়বস্তুতে স্বচ্ছ পিক্সেল থাকে এবং ওভারল্যাপিং স্তরগুলি মিশ্রিত হয়। এই ধরনের ক্ষেত্রে, HWC কিছু বা সমস্ত স্তরের জন্য GLES রচনার অনুরোধ করতে পারে এবং সংমিশ্রিত বাফারটি ধরে রাখতে পারে। যদি SurfaceFlinger বাফারের একই সেট কম্পোজিট করতে বলে, HWC পূর্বে সংমিশ্রিত স্ক্র্যাচ বাফার দেখাতে পারে। এটি একটি নিষ্ক্রিয় ডিভাইসের ব্যাটারি জীবন উন্নত করতে পারে৷
অ্যান্ড্রয়েড ডিভাইসগুলি সাধারণত চারটি ওভারলে প্লেন সমর্থন করে। ওভারলেগুলির চেয়ে আরও বেশি স্তর সংমিশ্রিত করার চেষ্টা করার ফলে সিস্টেমটি তাদের কয়েকটির জন্য GLES কম্পোজিশন ব্যবহার করে, যার অর্থ একটি অ্যাপ দ্বারা ব্যবহৃত স্তরগুলির সংখ্যা পাওয়ার খরচ এবং কর্মক্ষমতার উপর একটি পরিমাপযোগ্য প্রভাব ফেলতে পারে৷
,হার্ডওয়্যার কম্পোজার (HWC) HAL উপলব্ধ হার্ডওয়্যারের সাথে কম্পোজিট বাফারের সবচেয়ে কার্যকর উপায় নির্ধারণ করে। HAL হিসাবে, এটির বাস্তবায়ন ডিভাইস-নির্দিষ্ট এবং সাধারণত ডিসপ্লে হার্ডওয়্যার OEM দ্বারা করা হয়।
আপনি যখন ওভারলে প্লেনগুলি বিবেচনা করেন তখন এই পদ্ধতির মানটি সনাক্ত করা সহজ হয়, যা GPU এর পরিবর্তে ডিসপ্লে হার্ডওয়্যারে একাধিক বাফারকে সংমিশ্রিত করে। উদাহরণস্বরূপ, পোর্ট্রেট ওরিয়েন্টেশনে একটি সাধারণ অ্যান্ড্রয়েড ফোন বিবেচনা করুন, উপরে স্ট্যাটাস বার, নীচে নেভিগেশন বার এবং অন্য সব জায়গায় অ্যাপ সামগ্রী। প্রতিটি স্তরের জন্য বিষয়বস্তু পৃথক বাফার আছে. আপনি নিম্নলিখিত পদ্ধতিগুলির যেকোনো একটি ব্যবহার করে রচনা পরিচালনা করতে পারেন:
- অ্যাপের বিষয়বস্তুকে স্ক্র্যাচ বাফারে রেন্ডার করা, তারপরে স্ট্যাটাস বারটি রেন্ডার করা, তার উপরে নেভিগেশন বার, এবং অবশেষে ডিসপ্লে হার্ডওয়্যারে স্ক্র্যাচ বাফার পাস করা।
- ডিসপ্লে হার্ডওয়্যারে তিনটি বাফার পাস করা এবং স্ক্রিনের বিভিন্ন অংশের জন্য বিভিন্ন বাফার থেকে ডেটা পড়ার নির্দেশ দেওয়া।
পরবর্তী পদ্ধতি উল্লেখযোগ্যভাবে আরো দক্ষ হতে পারে.
ডিসপ্লে প্রসেসরের ক্ষমতা উল্লেখযোগ্যভাবে পরিবর্তিত হয়। ওভারলেগুলির সংখ্যা, স্তরগুলি ঘোরানো বা মিশ্রিত করা যায় কিনা এবং অবস্থান এবং ওভারল্যাপের উপর সীমাবদ্ধতা একটি API এর মাধ্যমে প্রকাশ করা কঠিন হতে পারে। এই বিকল্পগুলিকে মিটমাট করার জন্য, HWC নিম্নলিখিত গণনাগুলি সম্পাদন করে:
- সারফেসফ্লিংগার HWC কে স্তরগুলির একটি সম্পূর্ণ তালিকা প্রদান করে এবং জিজ্ঞাসা করে, "আপনি কীভাবে এটি পরিচালনা করতে চান?"
- HWC প্রতিটি স্তরকে ডিভাইস বা ক্লায়েন্ট রচনা হিসাবে চিহ্নিত করে প্রতিক্রিয়া জানায়।
- SurfaceFlinger যেকোন ক্লায়েন্টের যত্ন নেয়, আউটপুট বাফার HWC-তে পাস করে, এবং HWC কে বাকিটা পরিচালনা করতে দেয়।
যেহেতু হার্ডওয়্যার বিক্রেতারা দর্জির সিদ্ধান্ত নেওয়ার কোড কাস্টম করতে পারে, তাই প্রতিটি ডিভাইস থেকে সেরা পারফরম্যান্স পাওয়া সম্ভব।
ওভারলে প্লেনগুলি GL কম্পোজিশনের তুলনায় কম কার্যকরী হতে পারে যখন স্ক্রিনে কিছুই পরিবর্তন হয় না। এটি বিশেষভাবে সত্য যখন ওভারলে বিষয়বস্তুতে স্বচ্ছ পিক্সেল থাকে এবং ওভারল্যাপিং স্তরগুলি মিশ্রিত হয়। এই ধরনের ক্ষেত্রে, HWC কিছু বা সমস্ত স্তরের জন্য GLES রচনার অনুরোধ করতে পারে এবং সংমিশ্রিত বাফারটি ধরে রাখতে পারে। যদি SurfaceFlinger বাফারের একই সেট কম্পোজিট করতে বলে, HWC পূর্বে সংমিশ্রিত স্ক্র্যাচ বাফার দেখাতে পারে। এটি একটি নিষ্ক্রিয় ডিভাইসের ব্যাটারি জীবন উন্নত করতে পারে৷
অ্যান্ড্রয়েড ডিভাইসগুলি সাধারণত চারটি ওভারলে প্লেন সমর্থন করে। ওভারলেগুলির চেয়ে আরও বেশি স্তর সংমিশ্রিত করার চেষ্টা করার ফলে সিস্টেমটি তাদের কয়েকটির জন্য GLES কম্পোজিশন ব্যবহার করে, যার অর্থ একটি অ্যাপ দ্বারা ব্যবহৃত স্তরগুলির সংখ্যা পাওয়ার খরচ এবং কর্মক্ষমতার উপর একটি পরিমাপযোগ্য প্রভাব ফেলতে পারে৷
,হার্ডওয়্যার কম্পোজার (HWC) HAL উপলব্ধ হার্ডওয়্যারের সাথে কম্পোজিট বাফারের সবচেয়ে কার্যকর উপায় নির্ধারণ করে। HAL হিসাবে, এটির বাস্তবায়ন ডিভাইস-নির্দিষ্ট এবং সাধারণত ডিসপ্লে হার্ডওয়্যার OEM দ্বারা করা হয়।
আপনি যখন ওভারলে প্লেনগুলি বিবেচনা করেন তখন এই পদ্ধতির মানটি সনাক্ত করা সহজ হয়, যা GPU এর পরিবর্তে ডিসপ্লে হার্ডওয়্যারে একাধিক বাফারকে সংমিশ্রিত করে। উদাহরণস্বরূপ, পোর্ট্রেট ওরিয়েন্টেশনে একটি সাধারণ অ্যান্ড্রয়েড ফোন বিবেচনা করুন, উপরে স্ট্যাটাস বার, নীচে নেভিগেশন বার এবং অন্য সব জায়গায় অ্যাপ সামগ্রী। প্রতিটি স্তরের জন্য বিষয়বস্তু পৃথক বাফার আছে. আপনি নিম্নলিখিত পদ্ধতিগুলির যেকোনো একটি ব্যবহার করে রচনা পরিচালনা করতে পারেন:
- অ্যাপের বিষয়বস্তুকে স্ক্র্যাচ বাফারে রেন্ডার করা, তারপরে স্ট্যাটাস বারটি রেন্ডার করা, তার উপরে নেভিগেশন বার, এবং অবশেষে ডিসপ্লে হার্ডওয়্যারে স্ক্র্যাচ বাফার পাস করা।
- ডিসপ্লে হার্ডওয়্যারে তিনটি বাফার পাস করা এবং স্ক্রিনের বিভিন্ন অংশের জন্য বিভিন্ন বাফার থেকে ডেটা পড়ার নির্দেশ দেওয়া।
পরবর্তী পদ্ধতি উল্লেখযোগ্যভাবে আরো দক্ষ হতে পারে.
ডিসপ্লে প্রসেসরের ক্ষমতা উল্লেখযোগ্যভাবে পরিবর্তিত হয়। ওভারলেগুলির সংখ্যা, স্তরগুলি ঘোরানো বা মিশ্রিত করা যায় কিনা এবং অবস্থান এবং ওভারল্যাপের উপর সীমাবদ্ধতা একটি API এর মাধ্যমে প্রকাশ করা কঠিন হতে পারে। এই বিকল্পগুলিকে মিটমাট করার জন্য, HWC নিম্নলিখিত গণনাগুলি সম্পাদন করে:
- সারফেসফ্লিংগার HWC কে স্তরগুলির একটি সম্পূর্ণ তালিকা প্রদান করে এবং জিজ্ঞাসা করে, "আপনি কীভাবে এটি পরিচালনা করতে চান?"
- HWC প্রতিটি স্তরকে ডিভাইস বা ক্লায়েন্ট রচনা হিসাবে চিহ্নিত করে প্রতিক্রিয়া জানায়।
- SurfaceFlinger যেকোন ক্লায়েন্টের যত্ন নেয়, আউটপুট বাফার HWC-তে পাস করে, এবং HWC কে বাকিটা পরিচালনা করতে দেয়।
যেহেতু হার্ডওয়্যার বিক্রেতারা দর্জির সিদ্ধান্ত নেওয়ার কোড কাস্টম করতে পারে, তাই প্রতিটি ডিভাইস থেকে সেরা পারফরম্যান্স পাওয়া সম্ভব।
ওভারলে প্লেনগুলি GL কম্পোজিশনের তুলনায় কম কার্যকরী হতে পারে যখন স্ক্রিনে কিছুই পরিবর্তন হয় না। এটি বিশেষভাবে সত্য যখন ওভারলে বিষয়বস্তুতে স্বচ্ছ পিক্সেল থাকে এবং ওভারল্যাপিং স্তরগুলি মিশ্রিত হয়। এই ধরনের ক্ষেত্রে, HWC কিছু বা সমস্ত স্তরের জন্য GLES রচনার অনুরোধ করতে পারে এবং সংমিশ্রিত বাফারটি ধরে রাখতে পারে। যদি SurfaceFlinger বাফারের একই সেট কম্পোজিট করতে বলে, HWC পূর্বে সংমিশ্রিত স্ক্র্যাচ বাফার দেখাতে পারে। এটি একটি নিষ্ক্রিয় ডিভাইসের ব্যাটারি জীবন উন্নত করতে পারে৷
অ্যান্ড্রয়েড ডিভাইসগুলি সাধারণত চারটি ওভারলে প্লেন সমর্থন করে। ওভারলেগুলির চেয়ে আরও বেশি স্তর সংমিশ্রিত করার চেষ্টা করার ফলে সিস্টেমটি তাদের কয়েকটির জন্য GLES কম্পোজিশন ব্যবহার করে, যার অর্থ একটি অ্যাপ দ্বারা ব্যবহৃত স্তরগুলির সংখ্যা পাওয়ার খরচ এবং কর্মক্ষমতার উপর একটি পরিমাপযোগ্য প্রভাব ফেলতে পারে৷