يضيف 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