Donanım Bestecisi HAL

Donanım Oluşturucu (HWC) HAL, mevcut donanımla arabellekleri birleştirmenin en verimli yolunu belirler. Bir HAL olarak, uygulaması cihaza özgüdür ve genellikle ekran donanımı OEM tarafından yapılır.

Bu yaklaşımın değerini, GPU yerine ekran donanımında birden çok arabelleği birleştiren bindirme düzlemlerini düşündüğünüzde fark etmek kolaydır. Örneğin, üstte durum çubuğu, altta gezinme çubuğu ve diğer her yerde uygulama içeriği bulunan dikey yönde tipik bir Android telefonu düşünün. Her katmanın içeriği ayrı tamponlardadır. Aşağıdaki yöntemlerden birini kullanarak kompozisyonu yönetebilirsiniz:

  • Uygulama içeriğini bir çalışma arabelleğine dönüştürmek, ardından durum çubuğunu bunun üzerinde, gezinme çubuğunu bunun üzerine oluşturmak ve son olarak çalışma arabelleğini ekran donanımına geçirmek.
  • Üç arabellek de ekran donanımına aktarılır ve ona ekranın farklı bölümleri için farklı arabelleklerden veri okuması talimatı verilir.

İkinci yaklaşım, önemli ölçüde daha verimli olabilir.

Ekran işlemcisi yetenekleri önemli ölçüde değişiklik gösterir. Katmanlar ister döndürülebilir ister karıştırılabilir olsun, bindirme sayısı ve konumlandırma ve örtüşme üzerindeki kısıtlamaların bir API aracılığıyla ifade edilmesi zor olabilir. Bu seçenekleri barındırmak için HWC aşağıdaki hesaplamaları gerçekleştirir:

  1. SurfaceFlinger, HWC'ye tam bir katman listesi sağlar ve "Bunu nasıl halletmek istiyorsunuz?" Diye sorar.
  2. HWC, her katmanı cihaz veya istemci bileşimi olarak işaretleyerek yanıt verir.
  3. SurfaceFlinger herhangi bir müşteriyle ilgilenir, çıktı tamponunu HWC'ye iletir ve geri kalanı 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 üst üste binen katmanlar karıştırıldığında doğrudur. Bu gibi durumlarda, HWC katmanlar için bazı veya tüm katmanlar için GLES bileşimini talep edebilir ve birleştirilmiş tamponu tutabilir. SurfaceFlinger aynı tampon setini birleştirmek isterse, HWC önceden birleştirilmiş çalışma tamponunu gösterebilir. Bu, boşta olan bir cihazın pil ömrünü artırabilir.

Android cihazlar genellikle dört bindirme düzlemini destekler. Kaplamalardan daha fazla katmanı birleştirmeye çalışmak, sistemin bazıları için GLES bileşimini 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.