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

অ্যান্ড্রয়েড ১৩ আনসিগন্যালড বাফারগুলিকে ল্যাচ করার জন্য AutoSingleLayer নামে একটি নতুন কনফিগারেশন চালু করেছে। এই কনফিগারেশনটি সারফেসফ্লিংগারকে একটি আনসিগন্যালড বাফার ল্যাচ করতে দেয় যখন শুধুমাত্র একটি লেয়ার আপডেট করা হয়। এটি লেয়ার জুড়ে ঘটে এমন ক্ষেত্রে প্রযোজ্য নয়, উদাহরণস্বরূপ, জ্যামিতি পরিবর্তন বা সিঙ্ক লেনদেন।

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

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

অটোসিঙ্গেললেয়ার মোড সেটিংস

অ্যান্ড্রয়েড ১৩-এর জন্য, ল্যাচ আনসিগন্যালড বাফার বৈশিষ্ট্যের জন্য 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 এ সেট করুন।

AutoSingleLayer পরীক্ষা করুন

একটি বাফার সিগন্যাল ছাড়াই ল্যাচ করা আছে কিনা তা পরীক্ষা করার জন্য, Perfetto- তে SurfaceFlinger থেকে নিম্নলিখিত ট্রেসগুলি সন্ধান করুন:

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

চিত্র ১. পারফেটোতে একটি ল্যাচড আনসিগন্যালড বাফারের ট্রেস