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