اندروید 13 پیکربندی جدیدی به نام AutoSingleLayer
برای بستن بافرهای بدون علامت اضافه می کند. این پیکربندی به SurfaceFlinger اجازه میدهد زمانی که تنها یک لایه در حال بهروزرسانی است، یک بافر بدون علامت را ببندد، و نه برای مواردی که در بین لایهها رخ میدهد، مانند تغییرات هندسی یا همگامسازی تراکنشها.
قبل از اندروید 13، پرچم debug.sf.latch_unsignaled
در AOSP به SurfaceFlinger این امکان را میدهد که بدون در نظر گرفتن موارد استفاده، تمام بافرهای بدون علامت را ببندد. هنگامی که این پیکربندی فعال است، عوارض جانبی ناخواسته ای مانند شکستن تراکنش های همگام سازی و یخ زدن کل صفحه نمایش در حین انتظار در بافرهای ناقص وجود دارد.
با حالت AutoSingleLayer
، فقط یک بافر از یک سطح در یک قاب به روز می شود. این حالت بازیها و سایر برنامههای تمام صفحه را قادر میسازد تا از مزیت قفل کردن بافرهای بدون علامت و کاهش جابجایی برنامهها بهره ببرند و در عین حال تحت تأثیر ثابت ماندن نمایشگر قرار نگیرند.
تنظیمات حالت AutoSingleLayer
در اندروید 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
، اندروید 13 پیکربندی جدیدی به نام AutoSingleLayer
برای بستن بافرهای بدون علامت اضافه می کند. این پیکربندی به SurfaceFlinger اجازه میدهد زمانی که تنها یک لایه در حال بهروزرسانی است، یک بافر بدون علامت را ببندد، و نه برای مواردی که در بین لایهها رخ میدهد، مانند تغییرات هندسی یا همگامسازی تراکنشها.
قبل از اندروید 13، پرچم debug.sf.latch_unsignaled
در AOSP به SurfaceFlinger این امکان را میدهد که بدون در نظر گرفتن موارد استفاده، تمام بافرهای بدون علامت را ببندد. هنگامی که این پیکربندی فعال است، عوارض جانبی ناخواسته ای مانند شکستن تراکنش های همگام سازی و یخ زدن کل صفحه نمایش در حین انتظار در بافرهای ناقص وجود دارد.
با حالت AutoSingleLayer
، فقط یک بافر از یک سطح در یک قاب به روز می شود. این حالت بازیها و سایر برنامههای تمام صفحه را قادر میسازد تا از مزیت قفل کردن بافرهای بدون علامت و کاهش جابجایی برنامهها بهره ببرند و در عین حال تحت تأثیر ثابت ماندن نمایشگر قرار نگیرند.
تنظیمات حالت AutoSingleLayer
در اندروید 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
، اندروید 13 پیکربندی جدیدی به نام AutoSingleLayer
برای بستن بافرهای بدون علامت اضافه می کند. این پیکربندی به SurfaceFlinger اجازه میدهد زمانی که تنها یک لایه در حال بهروزرسانی است، یک بافر بدون علامت را ببندد، و نه برای مواردی که در بین لایهها رخ میدهد، مانند تغییرات هندسی یا همگامسازی تراکنشها.
قبل از اندروید 13، پرچم debug.sf.latch_unsignaled
در AOSP به SurfaceFlinger این امکان را میدهد که بدون در نظر گرفتن موارد استفاده، تمام بافرهای بدون علامت را ببندد. هنگامی که این پیکربندی فعال است، عوارض جانبی ناخواسته ای مانند شکستن تراکنش های همگام سازی و یخ زدن کل صفحه نمایش در حین انتظار در بافرهای ناقص وجود دارد.
با حالت AutoSingleLayer
، فقط یک بافر از یک سطح در یک قاب به روز می شود. این حالت بازیها و سایر برنامههای تمام صفحه را قادر میسازد تا از مزیت قفل کردن بافرهای بدون علامت و کاهش جابجایی برنامهها بهره ببرند و در عین حال تحت تأثیر ثابت ماندن نمایشگر قرار نگیرند.
تنظیمات حالت AutoSingleLayer
در اندروید 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