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

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

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

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

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

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

    এই মোডে, সারফেসফ্লিঙ্গার সমস্ত বাফারকে আনসিগন্যালড অবস্থায় ল্যাচ করে। এই মোডটি কনফিগার করতে, debug.sf.latch_unsignaled true তে সেট করুন।

অটোসিঙ্গেললেয়ার পরীক্ষা করুন

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

ল্যাচ করা অসংকেতযুক্ত বাফারের ট্রেস

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