طبقة تجريد الأجهزة (HAL) لمؤلف الأجهزة

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

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

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

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

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

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

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

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

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