مؤلف الأجهزة HAL

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

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

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

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

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

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

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

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

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