Donanım Oluşturucu HAL'si için AIDL

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öntemi IComposerClient.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ı, resmin HDR katmanı ekranda aynı anda göründüğünde SDR katmanları

    LayerCommand tablosundaki brightness 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 tablosundaki brightness alanı HWC'nin, istemci bileşimi ve sayfa içeriği için parlaklık alanını belirtmesine RenderEngine 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ımlanan ColorModes 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 uygulama DisplayDecorationSupport DisplayDecorationSupport.aidl. Bu yapıda, PixelFormat açıklanmaktadır. ve AlphaInterpretation 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 tanımlar. 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ılan setBootDisplayConfig clearBootDisplayConfig, ve getPreferredBootDisplayConfig yöntem BOOT_DISPLAY_CONFIG şu şekilde:

    • 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. Platformda setIdleTimerEnabled 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 ve vsync ilerleme ritmi değişti. Platform, bu geri çağırmaya vsync modeli. Sonraki karede vsync işlemini yeniden senkronize eder ve yeni kareyi öğrenir vsync 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.