إغلاق المخزن المؤقت غير ذي إشارة باستخدام ميزة AutosingleLayer

يضيف Android 13 إعدادًا جديدًا يُعرف باسم AutoSingleLayer لتأمين المخازن المؤقتة التي لم يتم إرسال إشارات لها. يتيح هذا الإعداد لـ SurfaceFlinger تثبيت ملف تخزين مؤقت بدون إرسال إشارة عند تعديل طبقة واحدة فقط، وليس في الحالات التي تحدث على مستوى الطبقات، مثل تغييرات الأشكال الهندسية أو معاملات المزامنة.

قبل Android 13، كانت علامة debug.sf.latch_unsignaled في AOSP تتيح لـ SurfaceFlinger قفل جميع المخازن المؤقتة غير المُرسَلة، بغض النظر عن حالة استخدامها. عند تفعيل هذا الإعداد، تحدث تأثيرات جانبية غير مرغوب فيها، مثل إيقاف معاملات المزامنة وتجميد الشاشة بالكامل أثناء الانتظار لتحميل المخازن المؤقتة غير المكتملة.

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

إعدادات وضع AutoSingleLayer

في Android 13، يمثّل AutoSingleLayer الوضع التلقائي لميزة المخزن المؤقت غير المُرسَل. يتم التحكّم في هذا الوضع من خلال سمة النظام debug.sf.auto_latch_unsignaled.

يقرأ SurfaceFlinger LatchUnsignaledConfig عند التشغيل. في ما يلي الإعدادات المحتملة:

  • LatchUnsignaledConfig::AutoSingleLayer

    في هذا الوضع التلقائي لنظام التشغيل AOSP، يُسمح بتثبيت المخازن المؤقتة غير المُرسَلة إشارات عند تعديل طبقة واحدة في إطار، ويشمل التعديل تحديثًا للمخزن المؤقت فقط بدون معاملات مزامنة أو تغييرات في الأشكال الهندسية. في هذا الوضع، يتم ضبط debug.sf.auto_latch_unsignaled على true تلقائيًا.

  • LatchUnsignaledConfig::Disabled

    يوقف هذا الوضع سلوك القفَل غير المُعلَن عنه ويقفِّل المعاملات التي تم الإبلاغ عنها فقط. يؤدي هذا الوضع أيضًا إلى إيقاف وضع AutoSingleLayer. ل ضبط هذا الوضع، اضبط debug.sf.latch_unsignaled و debug.sf.auto_latch_unsignaled على false.

  • LatchUnsignaledConfig::Always

    في هذا الوضع، يتم قفل جميع وحدات التخزين المؤقت بدون إرسال إشارة. لضبط هذا الوضع، اضبط debug.sf.latch_unsignaled على true.

الاختبار AutoSingleLayer

لاختبار ما إذا كان المخزن المؤقت قد تم تثبيته بدون إرسال إشارة، ابحث عن عمليات التتبُّع التالية من SurfaceFlinger في Perfetto:

تتبُّع ذاكرة التخزين المؤقت غير المُرسَلة

الشكل 1: تتبع مخزن مؤقت غير مُعلَن عنه في Perfetto