Donanım Oluşturucu HAL'si

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

Yer paylaşımlı düzlemler söz konusu olduğunda, bu yaklaşımın değerini anlamak kolaydır. Bu düzlemler, GPU yerine ekran donanımında birden fazla arabelleği bir araya getirir. Ö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 ele alabilirsiniz:

  • 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.
  • Üç arabelleği de ekran donanımına iletmek ve ekranın farklı bölümleri için farklı arabelleklerden gelen verileri okumasını istemek.

İkinci yaklaşım çok daha verimli olabilir.

Ekran işlemcilerinin özellikleri önemli ölçüde değişiklik gösterir. Yer paylaşımlarının sayısı ve katmanların döndürülüp döndürülemeyeceği ve konumlandırma ile ç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:

  1. SurfaceFlinger, HWC'ye katmanların tam listesini sağlar ve "Bunu nasıl işlemek istiyorsunuz?" diye sorar.
  2. HWC, her katmanı cihaz veya istemci bileşimi olarak işaretleyerek yanıt verir.
  3. SurfaceFlinger tüm müşterilerle ilgilenir, çıktı arabelleğini HWC'ye iletir ve gerisini HWC'ye bırakır.

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 kalan cihazların pil ömrünü uzatabilir.

Android cihazlar genellikle dört yer paylaşımlı düzlemi destekler. Yer paylaşımlarından daha fazla katman oluşturmaya çalışmak, sistemin bazı katmanlar için GLES kompozisyonunu 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.