हार्डवेयर कंपोजर (एचडब्ल्यूसी) एचएएल, उपलब्ध हार्डवेयर के साथ बफ़र को कंपोज करने का सबसे असरदार तरीका तय करता है. एचएएल के तौर पर, इसे डिवाइस के हिसाब से लागू किया जाता है. आम तौर पर, डिसप्ले हार्डवेयर OEM इसे लागू करता है.
ओवरले प्लैन को ध्यान में रखते हुए, इस तरीके की अहमियत को आसानी से समझा जा सकता है. ये प्लैन, जीपीयू के बजाय डिसप्ले हार्डवेयर में कई बफ़र को कंपोज करते हैं. उदाहरण के लिए, पोर्ट्रेट ओरिएंटेशन में किसी सामान्य Android फ़ोन पर, सबसे ऊपर स्टेटस बार, सबसे नीचे नेविगेशन बार, और बाकी जगहों पर ऐप्लिकेशन कॉन्टेंट दिखता है. हर लेयर के कॉन्टेंट अलग-अलग बफ़र में होते हैं. कॉम्पोज़िशन को मैनेज करने के लिए, इनमें से किसी एक तरीके का इस्तेमाल किया जा सकता है:
- ऐप्लिकेशन के कॉन्टेंट को स्क्रैच बफ़र में रेंडर करना. इसके बाद, उस पर स्टेटस बार और उसके ऊपर नेविगेशन बार रेंडर करना. आखिर में, स्क्रैच बफ़र को डिसप्ले हार्डवेयर को पास करना.
- तीनों बफ़र को डिसप्ले हार्डवेयर को पास करना और उसे स्क्रीन के अलग-अलग हिस्सों के लिए, अलग-अलग बफ़र से डेटा पढ़ने का निर्देश देना.
दूसरा तरीका ज़्यादा असरदार हो सकता है.
डिसप्ले प्रोसेसर की सुविधाएं काफ़ी अलग-अलग होती हैं. एपीआई के ज़रिए, ओवरले की संख्या, लेयर को घुमाया या ब्लेंड किया जा सकता है या नहीं, और पोज़िशनिंग और ओवरलैप पर पाबंदियों के बारे में बताना मुश्किल हो सकता है. इन विकल्पों को शामिल करने के लिए, एचडब्ल्यूसी ये कैलकुलेशन करता है:
- SurfaceFlinger, HWC को लेयर की पूरी सूची उपलब्ध कराता है और पूछता है, "आपको इसे कैसे मैनेज करना है?"
- HWC, हर लेयर को डिवाइस या क्लाइंट कॉम्पोज़िशन के तौर पर मार्क करके जवाब देता है.
- SurfaceFlinger, किसी भी क्लाइंट की देखभाल करता है. इसके लिए, वह आउटपुट बफ़र को HWC को पास करता है और बाकी काम HWC को करने देता है.
हार्डवेयर वेंडर, फ़ैसला लेने वाले कोड को पसंद के मुताबिक बना सकते हैं. इसलिए, हर डिवाइस से बेहतर परफ़ॉर्मेंस हासिल की जा सकती है.
स्क्रीन पर कुछ न बदलने पर, ओवरले प्लेन, GL कंपज़िशन के मुकाबले कम असरदार हो सकते हैं. ऐसा तब होता है, जब ओवरले कॉन्टेंट में पारदर्शी पिक्सल हों और ओवरलैप होने वाली लेयर को ब्लेंड किया गया हो. ऐसे मामलों में, एचडब्ल्यूसी कुछ या सभी लेयर के लिए GLES कंपोज़िशन का अनुरोध कर सकता है और कंपोज़ किए गए बफ़र को बनाए रख सकता है. अगर SurfaceFlinger, बफ़र के एक ही सेट को कंपोज करने के लिए कहता है, तो HWC पहले से कंपोज किया गया स्क्रैच बफ़र दिखा सकता है. इससे, इस्तेमाल में न होने वाले डिवाइस की बैटरी लाइफ़ बेहतर हो सकती है.
आम तौर पर, Android डिवाइसों पर चार ओवरले प्लेन काम करते हैं. ओवरले के मुकाबले ज़्यादा लेयर को कंपोज करने की कोशिश करने पर, सिस्टम उनमें से कुछ के लिए GLES कंपोजिशन का इस्तेमाल करता है. इसका मतलब है कि किसी ऐप्लिकेशन में इस्तेमाल की गई लेयर की संख्या से, बिजली की खपत और परफ़ॉर्मेंस पर असर पड़ सकता है.