بدءًا من Android 13 ، يتم تعريف HAL في مؤلف الأجهزة (HWC) في AIDL ويتم إهمال إصدارات HIDL التي تتراوح من android.hardware.graphics.composer@2.1
إلى android.hardware.graphics.composer@2.4
.
تصف هذه الصفحة الاختلافات بين AIDL و HIDL HAL لـ HWC وتنفيذ واختبار AIDL HAL.
نظرًا للمزايا التي توفرها AIDL ، يتم تشجيع البائعين على تنفيذ مؤلف AIDL HAL بدءًا من Android 13 بدلاً من إصدار HIDL. راجع قسم التنفيذ لمزيد من المعلومات.
الاختلافات بين AIDL و HIDL HALs
تم تعريف مؤلف 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
.إضافة حقول جديدة للتحكم في محتوى HDR.
في 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 composer HAL بدلاً من إصدار HIDL لاستخدام الوظائف وواجهات برمجة التطبيقات الجديدة.
يتم تنفيذ تطبيق مرجعي لـ AIDL HWC HAL في محاكيات Android.
اختبارات
لاختبار التنفيذ ، قم بتشغيل VtsHalGraphicsComposer3_TargetTest
.