Donanım Oluşturucu (HWC) HAL, arabellekleri mevcut donanımla birleştirmenin en verimli yolunu belirler. Bir HAL olarak, uygulanması cihaza özeldir ve genellikle ekran donanımı OEM'i tarafından yapılır.
GPU yerine ekran donanımında birden çok arabellek oluşturan bindirme düzlemlerini düşündüğünüzde, bu yaklaşımın değerini anlamak kolaydır. Örneğin, durum çubuğu üstte, gezinme çubuğu altta ve uygulama içeriği diğer her yerde olacak şekilde dikey yönlendirmeli tipik bir Android telefonu düşünün. Her katmanın içeriği ayrı arabelleklerde bulunur. Kompozisyonu aşağıdaki yöntemlerden birini kullanarak işleyebilirsiniz:
- Uygulama içeriğini bir çalışma arabelleğine işlemek, ardından bunun üzerinde durum çubuğunu, bunun üzerinde gezinme çubuğunu oluşturmak ve son olarak çizik arabelleğini ekran donanımına geçirmek.
- Üç ara belleğin tümünü ekran donanımına geçirmek ve ona ekranın farklı bölümleri için farklı arabelleklerden veri okuması talimatını vermek.
İkinci yaklaşım önemli ölçüde daha verimli olabilir.
Görüntü işlemcisi özellikleri önemli ölçüde farklılık gösterir. Katmanların döndürülüp döndürülemeyeceği veya karıştırılabileceği gibi bindirme sayısı ve konumlandırma ve örtüşme ile ilgili kısıtlamaların bir API aracılığıyla ifade edilmesi zor olabilir. Bu seçeneklere uyum sağlamak için HWC aşağıdaki hesaplamaları yapar:
- SurfaceFlinger, HWC'ye tam bir katman listesi sağlar ve "Bunu nasıl halletmek istersiniz?" diye sorar.
- HWC, her katmanı cihaz veya istemci bileşimi olarak işaretleyerek yanıt verir.
- SurfaceFlinger, çıktı arabelleğini HWC'ye geçirerek herhangi bir istemciyle ilgilenir ve gerisini HWC'nin halletmesine izin verir.
Donanım satıcıları karar verme kodunu özel olarak uyarlayabildiğinden, her cihazdan en iyi performansı elde etmek mümkündür.
Ekrandaki hiçbir şey değişmediğinde bindirme düzlemleri GL kompozisyonundan daha az verimli olabilir. Bu, özellikle bindirme içerikleri saydam piksellere sahip olduğunda ve örtüşen katmanlar karıştırıldığında geçerlidir. Bu gibi durumlarda, HWC, bazı veya tüm katmanlar için GLES bileşimi talep edebilir ve birleştirilmiş tamponu tutabilir. SurfaceFlinger aynı arabellek kümesini birleştirmeyi isterse, HWC önceden birleştirilmiş kazıma arabelleğini gösterebilir. Bu, boşta kalan bir cihazın pil ömrünü artırabilir.
Android cihazlar genellikle dört bindirme düzlemini destekler. Katmanlardan daha fazla katmanı birleştirmeye çalışmak, sistemin bazıları için GLES bileşimi kullanmasına neden olur; bu, bir uygulama tarafından kullanılan katman sayısının güç tüketimi ve performans üzerinde ölçülebilir bir etkisi olabileceği anlamına gelir.