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

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

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

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

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

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

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

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

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

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