হার্ডওয়্যার কম্পোজার এইচএএল

হার্ডওয়্যার কম্পোজার (HWC) HAL উপলব্ধ হার্ডওয়্যার ব্যবহার করে বাফার কম্পোজিট করার সবচেয়ে কার্যকর উপায় নির্ধারণ করে। একটি HAL হিসেবে, এর বাস্তবায়ন ডিভাইস-নির্দিষ্ট এবং সাধারণত ডিসপ্লে হার্ডওয়্যার প্রস্তুতকারক (OEM) দ্বারা সম্পন্ন করা হয়।

এই পদ্ধতির উপযোগিতা সহজেই বোঝা যায় যখন আপনি ওভারলে প্লেনগুলির কথা বিবেচনা করেন, যা জিপিইউ-এর পরিবর্তে ডিসপ্লে হার্ডওয়্যারে একাধিক বাফারকে একত্রিত করে। উদাহরণস্বরূপ, পোর্ট্রেট ওরিয়েন্টেশনে থাকা একটি সাধারণ অ্যান্ড্রয়েড ফোনের কথা ভাবুন, যার উপরে স্ট্যাটাস বার, নীচে নেভিগেশন বার এবং বাকি সব জায়গায় অ্যাপের কন্টেন্ট রয়েছে। প্রতিটি লেয়ারের বিষয়বস্তু আলাদা আলাদা বাফারে থাকে। আপনি নিম্নলিখিত পদ্ধতিগুলির যেকোনো একটি ব্যবহার করে কম্পোজিশন পরিচালনা করতে পারেন:

  • অ্যাপের কন্টেন্টকে একটি স্ক্র্যাচ বাফারে রেন্ডার করা, তারপর তার উপর স্ট্যাটাস বার, তার উপরে নেভিগেশন বার রেন্ডার করা এবং সবশেষে স্ক্র্যাচ বাফারটিকে ডিসপ্লে হার্ডওয়্যারে পাঠানো।
  • তিনটি বাফারকেই ডিসপ্লে হার্ডওয়্যারে পাঠানো এবং স্ক্রিনের বিভিন্ন অংশের জন্য ভিন্ন ভিন্ন বাফার থেকে ডেটা পড়ার নির্দেশ দেওয়া।

পরবর্তী পদ্ধতিটি উল্লেখযোগ্যভাবে আরও বেশি কার্যকর হতে পারে।

ডিসপ্লে প্রসেসরের সক্ষমতা ব্যাপকভাবে ভিন্ন হয়। ওভারলে-র সংখ্যা, লেয়ারগুলো ঘোরানো বা ব্লেন্ড করা যাবে কিনা, এবং পজিশনিং ও ওভারল্যাপের উপর বিধিনিষেধ একটি এপিআই (API)-এর মাধ্যমে প্রকাশ করা কঠিন হতে পারে। এই বিকল্পগুলো সমন্বয় করার জন্য, এইচডব্লিউসি (HWC) নিম্নলিখিত গণনাগুলো সম্পাদন করে:

  1. সারফেসফ্লিঙ্গার HWC-কে লেয়ারগুলোর একটি সম্পূর্ণ তালিকা প্রদান করে এবং জিজ্ঞাসা করে, "আপনি এটি কীভাবে পরিচালনা করতে চান?"
  2. HWC প্রতিটি লেয়ারকে ডিভাইস বা ক্লায়েন্ট কম্পোজিশন হিসেবে চিহ্নিত করে এর প্রতিক্রিয়া জানায়।
  3. SurfaceFlinger যেকোনো ক্লায়েন্টের দায়িত্ব নেয়, আউটপুট বাফারটি HWC-এর কাছে পাঠিয়ে দেয় এবং বাকি কাজটা HWC-এর ওপর ছেড়ে দেয়।

যেহেতু হার্ডওয়্যার বিক্রেতারা সিদ্ধান্ত গ্রহণের কোডকে প্রয়োজন অনুযায়ী তৈরি করতে পারে, তাই প্রতিটি ডিভাইস থেকে সেরা পারফরম্যান্স পাওয়া সম্ভব।

যখন স্ক্রিনে কোনো পরিবর্তন হয় না, তখন ওভারলে প্লেনগুলো জিএল কম্পোজিশনের চেয়ে কম কার্যকর হতে পারে। এটি বিশেষভাবে সত্য যখন ওভারলে কন্টেন্টে স্বচ্ছ পিক্সেল থাকে এবং ওভারল্যাপিং লেয়ারগুলো ব্লেন্ড করা হয়। এই ধরনের ক্ষেত্রে, HWC কিছু বা সমস্ত লেয়ারের জন্য GLES কম্পোজিশনের অনুরোধ করতে পারে এবং কম্পোজিট করা বাফারটি ধরে রাখতে পারে। যদি সারফেসফ্লিঙ্গার একই বাফার সেট কম্পোজিট করতে বলে, তাহলে HWC পূর্বে কম্পোজিট করা স্ক্র্যাচ বাফারটি দেখাতে পারে। এটি একটি নিষ্ক্রিয় ডিভাইসের ব্যাটারি লাইফ উন্নত করতে পারে।

অ্যান্ড্রয়েড ডিভাইসগুলো সাধারণত চারটি ওভারলে প্লেন সমর্থন করে। ওভারলের চেয়ে বেশি লেয়ার কম্পোজিট করার চেষ্টা করলে সিস্টেম সেগুলোর কয়েকটির জন্য GLES কম্পোজিশন ব্যবহার করে, যার ফলে একটি অ্যাপে ব্যবহৃত লেয়ারের সংখ্যা বিদ্যুৎ খরচ এবং পারফরম্যান্সের উপর পরিমাপযোগ্য প্রভাব ফেলতে পারে।