AutoSingleLayer সহ আনসিগন্যালড বাফার ল্যাচিং

Android 13, আনসিগন্যালড বাফার ল্যাচ করার জন্য AutoSingleLayer নামে একটি নতুন কনফিগারেশন চালু করেছে। এই কনফিগারেশন SurfaceFlinger-কে একটি সিগন্যাল না করা বাফার ল্যাচ করতে দেয় যখন শুধুমাত্র একটি লেয়ার আপডেট হচ্ছে। এটি লেয়ার জুড়ে হওয়া ঘটনার ক্ষেত্রে প্রযোজ্য নয়, যেমন, জ্যামিতি পরিবর্তন বা সিঙ্ক ট্রানজ্যাকশন।

আগে, Android ওপেন সোর্স প্রোজেক্টে (AOSP) থাকা debug.sf.latch_unsignaled ফ্ল্যাগ SurfaceFlinger-কে সমস্ত আনসিগন্যালড বাফার ল্যাচ করতে দিত, তা সে যেকোনও ব্যবহারের ক্ষেত্রেই হোক না কেন। এই কনফিগারেশন চালু করলে, এর অবাঞ্ছিত পার্শ্বপ্রতিক্রিয়া হতে পারে, যেমন, সিঙ্ক ট্রানজ্যাকশন ভেঙে যাওয়া এবং অসম্পূর্ণ বাফারের জন্য অপেক্ষা করার সময় সম্পূর্ণ ডিসপ্লে ফ্রিজ হয়ে যাওয়া।

AutoSingleLayer মোডে, SurfaceFlinger একটি ফ্রেমে শুধুমাত্র একটি সারফেসের বাফার আপডেট করে। এই মোড গেম ও অন্যান্য ফুলস্ক্রিন অ্যাপকে আনসিগন্যালড বাফার ল্যাচ করা ও অ্যাপ জ্যাঙ্ক কমানোর সুবিধা দেয়, একই সাথে ডিসপ্লে ফ্রিজ হওয়ার কারণে কোনও প্রভাব পড়ে না।

AutoSingleLayer মোড সেটিংস

Android 13-এর জন্য, ল্যাচ আনসিগন্যালড বাফার ফিচারের ডিফল্ট মোড হল AutoSingleLayer। এই মোডটি সিস্টেম প্রপার্টি 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-এ সেট করুন।

Test AutoSingleLayer

কোনও বাফার ল্যাচ করা আছে কিনা তা পরীক্ষা করতে, Perfetto-এ SurfaceFlinger থেকে নিম্নলিখিত ট্রেস দেখুন:

ল্যাচ করা আনসিগন্যালড বাফারের ট্রেস

ছবি ১. Perfetto-তে ল্যাচ করা আনসিগন্যালড বাফারের ট্রেস