Donanım Oluşturucu (HWC) HAL, mevcut donanımla arabellekleri birleştirmenin en verimli yolunu belirler. HAL olarak uygulanması cihaza özgüdür ve genellikle ekran donanım OEM'si tarafından yapılır.
GPU yerine ekran donanımında birden fazla arabellek oluşturan yer paylaşımı düzlemlerini göz önünde bulundurduğunuzda bu yaklaşımın değerini kolayca anlayabilirsiniz. Örneğin, dikey yönde bir Android telefonu düşünün. Bu telefonun üst kısmında durum çubuğu, alt kısmında gezinme çubuğu ve diğer kısımlarında uygulama içeriği yer alıyor. Her katmanın içeriği ayrı arabelleklerdedir. Kompozisyonu aşağıdaki yöntemlerden birini kullanarak yönetebilirsiniz:
- Uygulama içeriğini bir geçici arabelleğe, ardından durum çubuğunu ve bunun üzerine gezinme çubuğunu oluşturma ve son olarak geçici arabelleği ekran donanımına aktarma.
- Üç tamponun da ekran donanımına aktarılması ve ekranın farklı bölümleri için farklı tamponlardan veri okuması talimatı verilmesi.
İkinci yaklaşım çok daha verimli olabilir.
Ekran işlemcisi özellikleri önemli ölçüde değişiklik gösterir. Yer paylaşımı sayısının, katmanların döndürülüp döndürülemeyeceğinin veya harmanlanıp harmanlanamayacağının yanı sıra konumlandırma ve çakışmayla ilgili kısıtlamaların API aracılığıyla ifade edilmesi zor olabilir. HWC, bu seçenekleri karşılamak için aşağıdaki hesaplamaları yapar:
- SurfaceFlinger, HWC'ye katmanların tam listesini sağlar ve "Bunu nasıl işlemek istiyorsunuz?" diye sorar.
- HWC, her katmanı cihaz veya istemci bileşimi olarak işaretleyerek yanıt verir.
- SurfaceFlinger, çıkış arabelleğini HWC'ye aktararak tüm istemcileri yönetir ve gerisini HWC'nin halletmesine izin verir.
Donanım tedarikçileri karar verme kodunu özelleştirebildiğinden her cihazdan en iyi performansı elde etmek mümkündür.
Ekrandaki hiçbir şey değişmediğinde yer paylaşımı düzlemleri GL kompozisyonundan daha verimsiz olabilir. Bu durum özellikle yer paylaşımı içeriklerinde şeffaf pikseller 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 isteyebilir ve birleştirilmiş arabelleği saklayabilir. SurfaceFlinger aynı arabellek grubunu birleştirmeyi isterse HWC, daha önce birleştirilmiş olan çizim arabelleğini gösterebilir. Bu, boşta duran bir cihazın pil ömrünü uzatabilir.
Android cihazlar genellikle dört yer paylaşımı düzlemi destekler. Yer paylaşımlarından daha fazla katman oluşturmaya çalışmak, sistemin bazı katmanlar için GLES kompozisyonu kullanmasına neden olur. Bu da bir uygulamanın kullandığı katman sayısının güç tüketimi ve performans üzerinde ölçülebilir bir etkisi olabileceği anlamına gelir.