بدءًا من نظام Android 13، يتم تحديد HAL Composer (HWC) في
وAIDL وإصدارات HIDL التي تتراوح بين
من android.hardware.graphics.composer@2.1
إلى
تم إيقاف android.hardware.graphics.composer@2.4
نهائيًا.
تصف هذه الصفحة الاختلافات بين AIDL وHIDL HAL HWC وتنفيذ واختبار HAL HAL.
بسبب المزايا التي تقدّمها AIDL نشجع البائعين على تنفيذ بدء HAL للمؤلف AIDL يعمل بنظام التشغيل Android 13 بدلاً من إصدار HIDL. يمكنك الاطّلاع على التنفيذ لمزيد من المعلومات.
الاختلافات بين AIDL وHIDL HALs
إنّ صاحب قناة HAL الجديد في قناة AIDL، واسمه "android.hardware.graphics.composer3
"، هو
محددة في IComposer.aidl
.
تعرض واجهة برمجة تطبيقات مشابهة لـ HIDL HAL.
android.hardware.graphics.composer@2.4
مع إجراء التغييرات التالية:
إزالة قائمة انتظار الرسائل السريعة (FMQ) في لصالح الأوامر القابلة للتحسين.
يحدد AIDL HAL واجهة الأوامر بناءً على الكلمات المكتوبة بخط كبير أنواع البيانات القابلة للإرسال بدلاً من الأوامر المتسلسلة باستخدام FMQ في HIDL. هذا النمط يوفر واجهة مستقرة للأوامر وتعريفًا أكثر قابلية للقراءة لكيفية يتم تفسير حمولة الأمر.
executeCommands
يتم تحديد طريقة فيIComposerClient.aidl
كـCommandResultPayload[] executeCommands(in DisplayCommand[] commands);
حيث يكون كل أمر نوعًا من الأجزاء القابلة للفصل والمحددة بشكل واضح
DisplayCommand.aidl
تكون استجابات الأوامر عبارة عن عناصر مكتوبة بدرجة كبيرة يتم تعريفها فيCommandResultPayload.aidl
تتم إزالة
IComposerClient.getClientTargetSupport
لعدم توفُّر برامج نشطة لهذه الطريقة.تمثيل الألوان على شكل أعداد عشرية بدلاً من بايت للمحاذاة بشكل أفضل مع حزمة الرسومات العلوية في Android كما هو محدّد في
ASurfaceTransaction_setColor
.إضافة حقول جديدة للتحكّم في محتوى النطاق العالي الديناميكية
في AIDL HAL، تدعم مجموعات طبقات SDR/HDR المختلطة تعتيم طبقات SDR عند عرض طبقة HDR على الشاشة في آنٍ واحد
الحقل
brightness
فيLayerCommand
يتيح لـ SurfaceFlinger تحديد مستوى السطوع لكل طبقة، بحيث يخفي HWC طبقة المحتوى في فضاء الضوء الخطي، على عكس مسافة غاما.الحقل
brightness
فيClientTargetPropertyWithBrightness
تتيح لهواة HWC تحديد مساحة السطوع لتكوين برنامج العميل تعليماتRenderEngine
ما إذا كان سيتم تعتيم طبقات SDR في تكوين العميل أم لا.dimmingStage
يسمح الحقل "HWC" بضبط الوقت الذي يجب فيه تعتيم المحتوى علىRenderEngine
. هذا النمط يتوافق معColorModes
الذي يحدده المورّد، والذي قد يفضّل تعتيمه بدرجة غاما المساحة، للسماح بتحسينات التباين التي يحددها البائع في مسارات الألوان لديهم.إضافة نوع مقطوعة موسيقية جديد
DISPLAY_DECORATION
فيComposition.aidl
لتزيينات الشاشة.تمتلك بعض الأجهزة أجهزة مخصصة لتحسين رسم قناع ألفا لتجميل الزوايا الدائرية والقواطع على الشاشات. يجب أن تحتوي الأجهزة المزوّدة بهذه الأجهزة تنفيذ
IComposerClient.getDisplayDecorationSupport
لعرض بنيةDisplayDecorationSupport
كما هو محدّد في النموذج الجديدDisplayDecorationSupport.aidl
تصف هذه البنيةPixelFormat
وAlphaInterpretation
التعدادات المطلوبة بواسطة الجهاز. وعند هذا التنفيذ، تضع واجهة مستخدم النظام علامة طبقة قناع ألفا باسمDISPLAY_DECORATION
، نوع تركيب جديد يستفيد من الأجهزة المخصّصة.إضافة
expectedPresentTime
جديد إلىDisplayCommand.aidl
.يتيح الحقل
expectedPresentTime
لـ SurfaceFlinger تحديد القيمة المتوقعة الوقت الحالي الذي يجب فيه عرض المحتوى الحالي على الشاشة. مع هذا فإن SurfaceFlinger ترسل أمرًا حاليًا إلى التنفيذ قبل مما يسمح بتناول المزيد من أعمال التركيب.إضافة واجهات برمجة تطبيقات جديدة للتحكم في تهيئة عرض بدء التشغيل.
باستخدام
BOOT_DISPLAY_CONFIG
، يمكن للمورّدين تحديد أن إعداد شاشة التمهيد متاح. تشير رسالة الأشكال البيانيةsetBootDisplayConfig
,clearBootDisplayConfig
، وgetPreferredBootDisplayConfig
طرق استخدامBOOT_DISPLAY_CONFIG
على النحو التالي:باستخدام
setBootDisplayConfig
، يُعلم إطار العمل الموردين بإعدادات عرض وقت التشغيل. الموردون أن يخزّن في إعدادات عرض التشغيل، ويبدأ في هذه الإعدادات في المرة التالية إعادة التشغيل. إذا تعذر تشغيل الجهاز في هذه التهيئة، على المورد العثور على الإعدادات التي تتطابق مع درجة الدقة ومعدل التحديث في هذه الإعدادات. إذا لم يكن كذلك حاليًا، يجب على المورد استخدام تهيئة العرض المفضلة لديه.باستخدام
clearBootDisplayConfig
، يطلب إطار العمل من البائعين محو تهيئة عرض التشغيل بدء تشغيل تكوين العرض المفضل لديهم خلال عملية إعادة التشغيل التالية.باستخدام
getPreferredBootDisplayConfig
، يطلب إطار العمل وضع التشغيل المفضل لدى البائع.
عندما لا يكون إعداد شاشة التمهيد متوافقًا، تعرض هذه الطرق بقيمة
UNSUPPORTED
.إضافة واجهات برمجة تطبيقات جديدة للتحكّم في موقّت عدم نشاط العرض
باستخدام
DISPLAY_IDLE_TIMER
، يمكن للبائعين تحديد مؤقت عدم النشاط من قبل المورد هذه الشاشة. وفي حال عدم النشاط، تعمل هذه الميزة على تغيير معدّل التحديث إلى قيمة أقل. للحفاظ على الطاقة. تستخدم المنصةsetIdleTimerEnabled
للتحكم في مهلة الموقّت، وفي بعض الحالات، إيقافه لمنع تبديل معدل التحديث غير المرغوب فيه في وضع عدم النشاط.استخدام
IComposerCallback.onVsyncIdle
يشير رد الاتصال إلى النظام الأساسي بأنّ الشاشة غير مستخدَمة حاليًا وvsync
لقد تغير الإيقاع. تستجيب المنصة لمعاودة الاتصال هذه من خلال إعادة ضبط نموذجvsync
يفرض هذا الإعداد إعادة مزامنةvsync
في الإطار التالي ويتعرّف على الإطار الجديد معدّل الإيقاع:vsync
التنفيذ
لا يُطلَب من المورّدين تنفيذ اتفاقية AIDL HAL لنظام التشغيل Android 13. ومع ذلك، ننصح بتنفيذ دليل الذكاء الاصطناعي (AIDL). HAL بدلاً من إصدار HIDL لاستخدام الوظائف الجديدة وواجهات برمجة التطبيقات.
تنفيذ مرجع لـ AIDL HWC HAL في محاكيات Android.
الاختبار
لاختبار عملية التنفيذ، شغِّل VtsHalGraphicsComposer3_TargetTest
.