एंड्रॉइड 13 बिना सिग्नल वाले बफ़र्स को लैच करने के लिए AutoSingleLayer
नामक एक नया कॉन्फ़िगरेशन जोड़ता है। यह कॉन्फ़िगरेशन सरफेसफ्लिंगर को एक बिना सिग्नल वाले बफर को पकड़ने की सुविधा देता है जब केवल एक परत अपडेट हो रही हो, न कि उन मामलों के लिए जो परतों में होते हैं, जैसे कि ज्यामिति परिवर्तन या सिंक लेनदेन।
Android 13 से पहले, AOSP में debug.sf.latch_unsignaled
फ़्लैग, SurfaceFlinger को उपयोग के मामले की परवाह किए बिना, सभी बिना सिग्नल वाले बफ़र्स को लैच करने देता है। जब यह कॉन्फ़िगरेशन सक्षम किया जाता है, तो अवांछित दुष्प्रभाव होते हैं, जैसे सिंक लेनदेन को तोड़ना और अपूर्ण बफ़र्स पर प्रतीक्षा करते समय पूरे डिस्प्ले को फ्रीज करना।
AutoSingleLayer
मोड के साथ, एक फ्रेम में केवल एक ही सतह का बफर अपडेट किया जाता है। यह मोड गेम और अन्य फ़ुलस्क्रीन ऐप्स को बिना सिग्नल वाले बफ़र्स को लैच करने और डिस्प्ले फ़्रीज़ से अप्रभावित रहते हुए ऐप जंक को कम करने का लाभ प्राप्त करने में सक्षम बनाता है।
ऑटोसिंगललेयर मोड सेटिंग्स
एंड्रॉइड 13 में, AutoSingleLayer
लैच अनसिग्नल्ड बफर सुविधा के लिए डिफ़ॉल्ट मोड है। इस मोड को सिस्टम प्रॉपर्टी debug.sf.auto_latch_unsignaled
द्वारा नियंत्रित किया जाता है।
SurfaceFlinger बूट पर LatchUnsignaledConfig
पढ़ता है। यहां संभावित कॉन्फ़िगरेशन हैं:
LatchUnsignaledConfig::AutoSingleLayer
इस एओएसपी डिफॉल्ट मोड में, बिना सिग्नल वाले बफ़र्स को लैच करने की अनुमति तब दी जाती है जब एक फ्रेम में एक परत को अपडेट किया जाता है, और अपडेट में केवल एक बफ़र अपडेट शामिल होता है जिसमें कोई सिंक लेनदेन या ज्यामिति परिवर्तन नहीं होता है। इस मोड में,
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
परीक्षण करें
यह जांचने के लिए कि क्या बफ़र को बिना सिग्नल के लैच किया गया है, पर्फ़ेटो में सरफेसफ्लिंगर से निम्नलिखित निशान देखें:
चित्र 1. पर्फ़ेटो में एक कुंडी रहित सिग्नल रहित बफ़र का निशान