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