يقدّم Android 13 إعدادًا جديدًا يُسمى
AutoSingleLayer لربط المخازن المؤقتة غير المُرسَلة. يتيح هذا الإعداد لـ SurfaceFlinger ربط مخزن مؤقت غير مُرسَل عندما يتم تعديل طبقة واحدة فقط.
لا ينطبق ذلك على الحالات التي تحدث على مستوى الطبقات، مثل تغييرات الأشكال الهندسية أو معاملات المزامنة.
في السابق، كان العَلم debug.sf.latch_unsignaled في "مشروع Android مفتوح المصدر" (AOSP) يتيح لـ SurfaceFlinger ربط جميع المخازن المؤقتة غير المُرسَلة، بغض النظر عن حالة الاستخدام. عند تفعيل هذا الإعداد، يمكن أن يؤدي ذلك إلى آثار جانبية غير مرغوب فيها، مثل إيقاف معاملات المزامنة وتجميد الشاشة بأكملها أثناء انتظار المخازن المؤقتة غير المكتملة.
في وضع AutoSingleLayer، لا تعدِّل SurfaceFlinger سوى مخزن مؤقت لسطح واحد في إطار. يتيح هذا الوضع للألعاب والتطبيقات الأخرى التي تعمل في وضع ملء الشاشة الاستفادة من ربط المخازن المؤقتة غير المُرسَلة وتقليل إيقاف مؤقت لعرض واجهة المستخدم للتطبيق مع عدم التأثر بتجميد الشاشة.
إعدادات وضع AutoSingleLayer
في Android 13، يكون AutoSingleLayer هو الوضع التلقائي
لميزة ربط المخزن المؤقت غير المُرسَل. يتم التحكّم في هذا الوضع من خلال الـ
system property debug.sf.auto_latch_unsignaled.
يقرأ SurfaceFlinger السمة LatchUnsignaledConfig عند بدء التشغيل. في ما يلي الإعدادات المحتمَلة:
LatchUnsignaledConfig::AutoSingleLayerفي هذا الوضع التلقائي في AOSP، تسمح SurfaceFlinger بربط المخازن المؤقتة غير المُرسَلة عندما يتم تعديل طبقة واحدة في إطار. يجب أن يشمل التعديل تعديل مخزن مؤقت فقط بدون معاملات مزامنة أو تغييرات في الأشكال الهندسية. تلقائيًا، يضبط هذا الوضع
debug.sf.auto_latch_unsignaledعلىtrue.LatchUnsignaledConfig::Disabledيوقف هذا الوضع سلوك ربط المخزن المؤقت غير المُرسَل ولا يربط سوى المعاملات المُرسَلة. يوقف هذا الوضع أيضًا وضع
AutoSingleLayer. لضبط هذا الوضع، اضبطdebug.sf.latch_unsignaledوdebug.sf.auto_latch_unsignaledعلىfalse.LatchUnsignaledConfig::Alwaysفي هذا الوضع، تربط SurfaceFlinger جميع المخازن المؤقتة غير المُرسَلة. لضبط هذا الوضع، اضبط
debug.sf.latch_unsignaledعلىtrue.
اختبار AutoSingleLayer
لاختبار ما إذا تم ربط مخزن مؤقت غير مُرسَل، ابحث عن التتبُّعات التالية من SurfaceFlinger في Perfetto:
الشكل 1: تتبُّع لمخزن مؤقت غير مُرسَل تم ربطه في Perfetto