Android 13'ten itibaren Donanım Oluşturucu (HWC) HAL'si şurada tanımlanmıştır:
AIDL ve HIDL sürümleri
android.hardware.graphics.composer@2.1
-
android.hardware.graphics.composer@2.4
desteği sonlandırıldı.
Bu sayfada, HWC ve AIDL HAL'nin uygulanması ve test edilmesi.
RACI matrisinde AIDL'nin sunduğu avantajlar, tedarikçilerin bu riskleri AIDL besteci HAL'si başlatılıyor HIDL sürümü yerine Android 13. Bkz. Uygulama bölümüne bakın.
AIDL ve HIDL HAL'ler arasındaki farklar
AIDL bestecisinin android.hardware.graphics.composer3
adlı yeni HAL'si:
IComposer.aidl
içinde tanımlanmıştır.
HIDL HAL'ye benzer bir API sunar.
Aşağıdaki değişikliklerle android.hardware.graphics.composer@2.4
:
Hızlı Mesaj Sırası (FMQ) özelliğinin kaldırılması tercih ediliyor.
AIDL HAL, önemli yazımlara göre komut arayüzünü tanımlar ayrıştırılabilir türleri ile çalışır. Bu komutlar için kararlı bir arayüz ve nasıl çalıştığının daha okunaklı bir tanımını sağlar komut yükü yorumlanır.
executeCommands
yöntemiIComposerClient.aidl
içinde tanımlanmıştır olmasıCommandResultPayload[] executeCommands(in DisplayCommand[] commands);
Bu örnekte her komut,
DisplayCommand.aidl
. Komut yanıtları,CommandResultPayload.aidl
.Bu yöntem için etkin bir istemci olmadığından
IComposerClient.getClientTargetSupport
kaldırıldı.Renklerin bayt yerine kayan noktalı olarak temsil edilmesi, Android'de
ASurfaceTransaction_setColor
bölümünde tanımlandığı şekilde üst grafik yığını.HDR içeriğini kontrol etmek için yeni alanlar eklendi.
AIDL HAL'de, karışık SDR/HDR katman yığınları, mevcut öğenin sorunsuz bir şekilde karartılmasını Bir HDR katmanı ekranda aynı anda göründüğünde SDR katmanları olur.
LayerCommand
tablosundakibrightness
alanı SurfaceFlinger'ın katman başına bir parlaklık belirtmesine olanak tanır. Böylece HWC, katmanın içeriğini gama alanında değil, doğrusal ışık alanında görürsünüz.ClientTargetPropertyWithBrightness
tablosundakibrightness
alanı HWC'nin, istemci bileşimi ve sayfa içeriği için parlaklık alanını belirtmesineRenderEngine
talimatı istemci bileşiminde SDR katmanlarının karartılıp azaltılmayacağını belirler.dimmingStage
alanı,RenderEngine
ürününün içeriği karartması gerektiğinde HWC'nin yapılandırmasına olanak tanır. Bu gamada loş yapmayı tercih edebilecek, tedarikçi firma tarafından tanımlananColorModes
kullanılır sağlayan, tedarikçi firma tarafından tanımlanan kontrast geliştirmelerine olanak tanıyan bir kontrol panelidir.Şu öğe için yeni bir beste türü
DISPLAY_DECORATION
eklendi:Composition.aidl
ekran süslemeleri olarak düşünün.Bazı cihazların alfa maskesini çizmeyi optimize edecek özel Ekranlardaki yuvarlak köşeleri ve kesikleri düzgünleştirir. Bu tür donanımlara sahip cihazlar
IComposerClient.getDisplayDecorationSupport
'i uygulaDisplayDecorationSupport
DisplayDecorationSupport.aidl
. Bu yapıda,PixelFormat
açıklanmaktadır. veAlphaInterpretation
enum'lar içerir. Bu uygulamanın ardından, Sistem Arayüzü alfa maske katmanınıDISPLAY_DECORATION
olarak tanımlarsanız yeni bir beste türü oluşturun.Yeni bir
expectedPresentTime
eklenmesi alanınıDisplayCommand.aidl
değerine ayarlayın.expectedPresentTime
alanı, SurfaceFlinger'ın beklenen değeri ayarlamasını sağlar ne zamana kadar geçerli içeriğin ekranda gösterilmesi gerektiğini belirleyebilirsiniz. Bununla Bu özellik kullanıma sunulmadan önce, SurfaceFlinger önceden Bu da bestenin daha fazla işini ana hatlarıyla hazırlamasını sağlıyor.Başlatma ekranı yapılandırmasını kontrol etmek için yeni API'lerin eklenmesi.
BOOT_DISPLAY_CONFIG
sayesinde, tedarikçi firma, başlatma ekranı yapılandırmasının desteklendiğini belirtebilir. İlgili içeriği oluşturmak için kullanılansetBootDisplayConfig
clearBootDisplayConfig
, vegetPreferredBootDisplayConfig
yöntemBOOT_DISPLAY_CONFIG
şu şekildedir:setBootDisplayConfig
sayesinde, çerçeve, tedarikçileri başlatma süresi görüntüleme yapılandırması hakkında bilgilendirir. Tedarikçiler önyükleme ekranı yapılandırmasında önbelleğe almalı ve sonraki tekrar başlat. Cihaz, bu yapılandırmada başlatılamazsa tedarikçi firmanın bu yapılandırmanın çözünürlüğü ve yenileme hızıyla eşleşen bir yapılandırma bulun. Böyle bir belge yoksa bir yapılandırma mevcutsa tedarikçi firma, tercih ettiği ekran yapılandırmasını kullanmalıdır.clearBootDisplayConfig
sayesinde, çerçeve, tedarikçileri başlatma ekranı yapılandırmasını temizlemeleri konusunda bilgilendirir ve başlatma sırasında kullanılması gereken cihazları tercih eder.getPreferredBootDisplayConfig
sayesinde, çerçeve, satıcının tercih ettiği başlatma modunu sorgular.
Başlatma ekranı yapılandırması desteklenmediğinde bu yöntemler
UNSUPPORTED
değerine ayarlanır.Ekran boşta kalma zamanlayıcısını kontrol etmek için yeni API'ler eklendi.
DISPLAY_IDLE_TIMER
sayesinde, tedarikçiler etkin olmama zamanlayıcısının tedarikçi tarafından bu ekrana göz atın. Bu özellik boştayken yenileme hızını daha düşük bir hıza ayarlar ayarını değiştirin. PlatformdasetIdleTimerEnabled
kullanılıyor zaman aşımını kontrol etmek ve bazı durumlarda devre dışı bırakmak için kullanarak istenmeyen yenileme hızında değişiklik olmasını önleyebilirsiniz.IComposerCallback.onVsyncIdle
'ı kullanma geri çağırma, platforma ekranın boşta olduğunu vevsync
ilerleme ritmi değişti. Platform, bu geri çağırmayavsync
modeli. Sonraki karedevsync
işlemini yeniden senkronize eder ve yeni kareyi öğrenirvsync
ritm.
Uygulama
Tedarikçi firmaların Android 13 için AIDL HAL'yi uygulaması zorunlu değildir. Ancak, AIDL'yi uygulamaları önerilir. yeni işlevleri ve API'leri kullanmak için HIDL sürümü yerine oluşturucu HAL'si.
Referans uygulama AIDL HWC HAL'nin uygulanması Android emülatörlerde uygulanmıştır.
Test
Uygulamanızı test etmek için VtsHalGraphicsComposer3_TargetTest
komutunu çalıştırın.