वीएसवाईएनसी

VSYNC सिग्नल डिस्प्ले पाइपलाइन को सिंक्रोनाइज़ करता है। डिस्प्ले पाइपलाइन में ऐप रेंडरिंग, सरफेसफ्लिंगर कंपोजिशन और डिस्प्ले पर छवियां प्रस्तुत करने वाला हार्डवेयर कंपोजर (HWC) शामिल है। वीएसवाईएनसी रेंडरिंग शुरू करने के लिए ऐप्स के जागने के समय, स्क्रीन को कंपोजिट करने के लिए सरफेसफ्लिंगर के जागने के समय और डिस्प्ले रिफ्रेश चक्र को सिंक्रोनाइज़ करता है। यह सिंक्रनाइज़ेशन हकलाना समाप्त करता है और ग्राफ़िक्स के दृश्य प्रदर्शन में सुधार करता है।

HWC VSYNC ईवेंट उत्पन्न करता है और कॉलबैक के माध्यम से ईवेंट को SurfaceFlinger पर भेजता है:

typedef void (*HWC2_PFN_VSYNC)(hwc2_callback_data_t callbackData,
        hwc2_display_t display, int64_t timestamp);

SurfaceFlinger यह नियंत्रित करता है कि HWC setVsyncEnabled पर कॉल करके VSYNC ईवेंट उत्पन्न करता है या नहीं। SurfaceFlinger setVsyncEnabled VSYNC ईवेंट उत्पन्न करने में सक्षम बनाता है ताकि यह डिस्प्ले के रिफ्रेश चक्र के साथ सिंक्रनाइज़ हो सके। जब SurfaceFlinger को डिस्प्ले रिफ्रेश चक्र के साथ सिंक्रनाइज़ किया जाता है, तो SurfaceFlinger HWC को VSYNC ईवेंट उत्पन्न करने से रोकने के लिए setVsyncEnabled अक्षम कर देता है। यदि SurfaceFlinger वास्तविक VSYNC और VSYNC के बीच अंतर का पता लगाता है तो यह पहले से स्थापित SurfaceFlinger VSYNC इवेंट जेनरेशन को फिर से सक्षम कर देता है।

वीएसवाईएनसी ऑफसेट

सिंक ऐप और सरफेसफ्लिंगर हार्डवेयर VSYNC में लूप प्रस्तुत करते हैं। VSYNC ईवेंट पर, डिस्प्ले फ़्रेम N दिखाना शुरू कर देता है जबकि SurfaceFlinger फ़्रेम N+1 के लिए विंडो कंपोज़ करना शुरू कर देता है। ऐप लंबित इनपुट को संभालता है और फ़्रेम N+2 उत्पन्न करता है।

VSYNC के साथ सिंक्रोनाइज़ करने से लगातार विलंबता मिलती है। यह ऐप्स और सरफेसफ्लिंगर में त्रुटियों को कम करता है और एक-दूसरे के साथ चरण के अंदर और बाहर जाने वाले डिस्प्ले को कम करता है। यह मानता है कि ऐप और सरफेसफ्लिंगर प्रति-फ़्रेम समय व्यापक रूप से भिन्न नहीं होते हैं। विलंबता कम से कम दो फ़्रेम है.

इसका समाधान करने के लिए, आप हार्डवेयर VSYNC के सापेक्ष ऐप और कंपोज़िशन सिग्नल बनाकर इनपुट-टू-डिस्प्ले विलंबता को कम करने के लिए VSYNC ऑफ़सेट का उपयोग कर सकते हैं। यह संभव है क्योंकि ऐप प्लस कंपोज़िशन में आमतौर पर 33 एमएस से कम समय लगता है।

वीएसवाईएनसी ऑफसेट का परिणाम समान अवधि और ऑफसेट चरण के साथ तीन सिग्नल हैं:

  • HW_VSYNC_0 — डिस्प्ले अगला फ्रेम दिखाना शुरू कर देता है।
  • VSYNC - ऐप इनपुट पढ़ता है और अगला फ्रेम तैयार करता है।
  • SF_VSYNC - सरफेसफ्लिंगर अगले फ्रेम के लिए कंपोज़िटिंग शुरू करता है।

वीएसवाईएनसी ऑफसेट के साथ, सर्फेसफ्लिंगर बफर प्राप्त करता है और फ्रेम को कंपोजिट करता है जबकि ऐप एक साथ इनपुट को संसाधित करता है और फ्रेम को प्रस्तुत करता है।

DispSync

DispSync एक डिस्प्ले के आवधिक हार्डवेयर-आधारित VSYNC ईवेंट का एक मॉडल बनाए रखता है और हार्डवेयर VSYNC ईवेंट से विशिष्ट चरण ऑफसेट पर कॉलबैक निष्पादित करने के लिए उस मॉडल का उपयोग करता है।

DispSync एक सॉफ्टवेयर फेज़-लॉक लूप (PLL) है जो कोरियोग्राफर और सरफेसफ्लिंगर द्वारा उपयोग किए जाने वाले VSYNC और SF_VSYNC सिग्नल उत्पन्न करता है, भले ही हार्डवेयर VSYNC से ऑफसेट न हो।

डिस्पसिंक प्रवाह

चित्र 1. डिस्पसिंक प्रवाह

DispSync में निम्नलिखित गुण हैं:

  • संदर्भ - HW_VSYNC_0.
  • आउटपुट - VSYNC और SF_VSYNC।
  • फीडबैक - हार्डवेयर कंपोजर से रिटायर फेंस सिग्नल टाइमस्टैम्प।

वीएसवाईएनसी/रिटायर ऑफसेट

रिटायर बाड़ का सिग्नल टाइमस्टैम्प HW VSYNC से मेल खाना चाहिए, यहां तक ​​कि उन उपकरणों पर भी जो ऑफसेट चरण का उपयोग नहीं करते हैं। अन्यथा, त्रुटियाँ उनसे कहीं अधिक गंभीर प्रतीत होती हैं। स्मार्ट पैनल में अक्सर एक डेल्टा होता है जहां रिटायर फेंस मेमोरी प्रदर्शित करने के लिए डायरेक्ट मेमोरी एक्सेस (डीएमए) का अंत होता है, लेकिन वास्तविक डिस्प्ले स्विच और एचडब्ल्यू वीएसवाईएनसी कुछ समय बाद होता है।

PRESENT_TIME_OFFSET_FROM_VSYNC_NS डिवाइस के BoardConfig.mk मेकफ़ाइल में सेट है। यह डिस्प्ले कंट्रोलर और पैनल विशेषताओं पर आधारित है। रिटायर फेंस टाइमस्टैम्प से HW VSYNC सिग्नल तक का समय नैनोसेकंड में मापा जाता है।

VSYNC और SF_VSYNC ऑफसेट

VSYNC_EVENT_PHASE_OFFSET_NS और SF_VSYNC_EVENT_PHASE_OFFSET_NS को उच्च-लोड उपयोग के मामलों के आधार पर रूढ़िवादी रूप से सेट किया गया है, जैसे विंडो संक्रमण के दौरान आंशिक GPU संरचना या एनिमेशन वाले वेब पेज के माध्यम से क्रोम स्क्रॉलिंग। ये ऑफसेट लंबे ऐप रेंडर समय और लंबे जीपीयू कंपोजिशन समय की अनुमति देते हैं।

एक या दो मिलीसेकंड से अधिक विलंबता ध्यान देने योग्य है। त्रुटियों की संख्या में उल्लेखनीय वृद्धि किए बिना विलंबता को कम करने के लिए, संपूर्ण स्वचालित त्रुटि परीक्षण को एकीकृत करें।