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