Hardware Composer HAL

يحدِّد "واجهة برمجة التطبيقات لبرنامج Hardware Composer (HWC)" الطريقة الأكثر فعالية لتركيب المخزن المؤقت باستخدام الأجهزة المتاحة. وبما أنّه HAL، فإنّ تنفيذه يعتمد على الجهاز، وعادةً ما ينفّذه المصنّع الأصلي لأجهزة العرض.

من السهل التعرّف على قيمة هذا النهج عند التفكير في مستويات التراكب التي تُنشئ وحدات تخزين مؤقت متعددة في معدات العرض بدلاً من وحدة معالجة الرسومات. على سبيل المثال، لنفترض أنّه هاتف Android عادي في الوضع العمودي، مع شريط الحالة في الأعلى، وشريط التنقل في أسفل الشاشة، ومحتوى التطبيق في كل مكان آخر. يتم تخزين محتوى كل طبقة في ذاكرة تخزين مؤقت منفصلة. يمكنك معالجة التركيب باستخدام إحدى الطريقتين التاليتَين:

  • عرض محتوى التطبيق في ذاكرة تخزين مؤقتة، ثم عرض شريط الحالة فوقه، ثم شريط التنقّل فوقه، وأخيراً تمرير ذاكرة التخزين المؤقت إلى جهاز العرض
  • تمرير جميع المخزنَين المؤقتَين الثلاثة إلى جهاز العرض وإرشاده لقراءة البيانات من مخزنَين مؤقتَين مختلفَين لأجزاء مختلفة من الشاشة

يمكن أن يكون النهج الأخير أكثر فعالية بشكل كبير.

تختلف إمكانات معالجات العرض بشكل كبير. قد يكون من الصعب تحديد عدد الصور التي تظهر على سطح الصورة، وما إذا كان يمكن تدوير الطبقات أو مزجها، والقيود المفروضة على مواضعها والتداخل بينها من خلال واجهة برمجة التطبيقات. لاستيعاب هذه الخيارات، تُجري "وحدة التحكّم في الحرارة" العمليات الحسابية التالية:

  1. يقدّم SurfaceFlinger لـ HWC قائمة كاملة بالطبقات ويسأل، "كيف تريد التعامل مع هذا؟"
  2. يستجيب HWC عن طريق وضع علامة على كل طبقة على أنّها تركيبة جهاز أو عميل.
  3. يهتم SurfaceFlinger بأي عملاء، ويمرّر وحدة تخزين مؤقت للإخراج إلى HWC، ويترك HWC يتولى بقية المهام.

بما أنّ مورّدي الأجهزة يمكنهم تخصيص رمز اتخاذ القرار، من الممكن تحقيق أفضل أداء من كل جهاز.

قد تكون المستويات المتراكبة أقل فعالية من تركيب GL عندما لا يتغيّر أي شيء على الشاشة. وينطبق ذلك بشكل خاص عندما يكون محتوى التراكب يحتوي على بكسل متعالِم ويتم دمج الطبقات المتداخلة. في هذه الحالات، يمكن أن تطلب وحدة HWC إنشاء رسومات باستخدام GLES لبعض الطبقات أو جميعها مع الاحتفاظ بالمخازن المؤقتة التي تم دمجها. إذا طلب SurfaceFlinger دمج المجموعة نفسها من وحدات التخزين المؤقت، يمكن أن يعرض HWC ملف التخزين المؤقت الاحتياطي الذي تم دمجه سابقًا. ويمكن أن يؤدي ذلك إلى تحسين عمر بطارية الجهاز في وضع السكون.

تتوافق أجهزة Android عادةً مع أربع مساحات عرض للتراكبات. تؤدي محاولة دمج عدد طبقات أكبر من الطبقات التي تظهر على سطح الشاشة إلى استخدام النظام لدمج GLES لبعض منها، ما يعني أنّ عدد الطبقات التي يستخدمها التطبيق يمكن أن يؤدي إلى تأثير قابل للقياس في استهلاك الطاقة والأداء.