تحدّد طبقة HAL الخاصة بـ Hardware Composer (HWC) الطريقة الأكثر فعالية لدمج المخازن المؤقتة باستخدام الأجهزة المتاحة. وباعتبارها طبقة تجريد للأجهزة، فإنّ تنفيذها يكون خاصًا بالجهاز ويتم عادةً من قِبل المصنّع الأصلي للأجهزة التي تتضمّن شاشة عرض.
تتضح قيمة هذا الأسلوب عند التفكير في طبقات التراكب التي تجمع بين مخازن مؤقتة متعددة في أجهزة العرض بدلاً من وحدة معالجة الرسومات. على سبيل المثال، لنفترض أنّ لديك هاتف Android عاديًا في الوضع العمودي، مع شريط الحالة في الأعلى وشريط التنقّل في الأسفل ومحتوى التطبيق في كل مكان آخر. يتم تخزين محتوى كل طبقة في مخازن مؤقتة منفصلة. يمكنك التعامل مع التركيب باستخدام إحدى الطريقتين التاليتين:
- يتم عرض محتوى التطبيق في مخزن مؤقت، ثم يتم عرض شريط الحالة فوقه، وشريط التنقل فوقه، وأخيرًا يتم تمرير المخزن المؤقت إلى أجهزة العرض.
- تمرير جميع المخازن المؤقتة الثلاثة إلى أجهزة العرض وإصدار تعليمات لها بقراءة البيانات من مخازن مؤقتة مختلفة لأجزاء مختلفة من الشاشة
ويمكن أن تكون الطريقة الأخيرة أكثر فعالية بشكل كبير.
تختلف إمكانات معالج العرض بشكل كبير. قد يكون من الصعب التعبير عن عدد التراكبات وما إذا كان يمكن تدوير الطبقات أو مزجها والقيود المفروضة على تحديد المواضع والتداخل من خلال واجهة برمجة تطبيقات. لاستيعاب هذه الخيارات، تجري أداة HWC العمليات الحسابية التالية:
- يقدّم SurfaceFlinger إلى HWC قائمة كاملة بالطبقات ويسأل: "كيف تريد التعامل مع هذا؟"
- تستجيب HWC من خلال وضع علامة على كل طبقة باعتبارها تركيبة جهاز أو عميل.
- يتولّى SurfaceFlinger أي عميل، ويمرّر المخزن المؤقت للإخراج إلى HWC، ويسمح لـ HWC بمعالجة بقية العمل.
بما أنّ مورّدي الأجهزة يمكنهم تخصيص رمز اتّخاذ القرار، من الممكن تحقيق أفضل أداء من كل جهاز.
قد تكون طبقات التراكب أقل كفاءة من تركيب GL عندما لا يتغيّر أي شيء على الشاشة. وينطبق ذلك بشكل خاص عندما تتضمّن محتويات التراكب وحدات بكسل شفافة ويتم دمج الطبقات المتداخلة. في مثل هذه الحالات، يمكن أن يطلب HWC إنشاء تركيبة GLES لبعض الطبقات أو كلها والاحتفاظ بالمخزن المؤقت الذي تم إنشاؤه. إذا طلب SurfaceFlinger دمج المجموعة نفسها من المخازن المؤقتة، يمكن أن تعرض HWC المخزن المؤقت السابق المدمج. يمكن أن يؤدي ذلك إلى تحسين عمر بطارية الجهاز غير النشط.
تتوافق أجهزة Android عادةً مع أربع طبقات متراكبة. محاولة دمج عدد من الطبقات أكبر من عدد التراكبات يؤدي إلى استخدام النظام لعملية الدمج في GLES لبعضها، ما يعني أنّ عدد الطبقات التي يستخدمها التطبيق يمكن أن يكون له تأثير ملحوظ في استهلاك الطاقة والأداء.