يضيف نظام التشغيل Android 13 إعدادًا جديدًا يُسمى
AutoSingleLayer
لتثبيت
المخازن المؤقتة غير المُشار إليها. يتيح هذا الإعداد لـ SurfaceFlinger إقفال المخزن المؤقت غير المُشار إليه عندما يتم تعديل طبقة واحدة فقط، وليس في الحالات التي تحدث عبر الطبقات، مثل تغييرات التصميم الهندسي أو معاملات المزامنة.
قبل الإصدار 13 من نظام التشغيل Android، يتيح العلامة debug.sf.latch_unsignaled
في مشروع Android المفتوح المصدر (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