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