2012-08-14 16 views
7

मुझे एनडीके और ईगल कमांड का उपयोग करके एंड्रॉइड टैबलेट पर बहुत कम प्रतिपादन समय के साथ समस्या है। मैंने eglSwapBuffers पर कॉल किया है और समय की एक परिवर्तनीय मात्रा ले रहा है, अक्सर डिवाइस फ्रेम दर से अधिक है। मुझे पता है कि यह ताज़ा करने के लिए सिंक्रनाइज़ करता है, लेकिन यह लगभग 60 एफपीएस है, और यहां के समय नीचे अच्छी तरह से ड्रॉप हो जाते हैं।eglSwapBuffers अनियमित/धीमी है

स्वैप करने के लिए कॉल के बीच एकमात्र आदेश मैं glClear है, इसलिए मुझे पता है कि यह कुछ भी नहीं है जिसे मैं समस्या पैदा कर रहा हूं। यहां तक ​​कि फ्रेम दर को साफ़ करने से भी 30 एफपीएस तक गिर जाता है (हालांकि अनियमित)।

उसी डिवाइस पर जावा में एक साधारण जीएल प्रोग्राम आसानी से 60FPS पर प्रस्तुत करता है, इस प्रकार मुझे पता है कि यह मूल रूप से हार्डवेयर समस्या नहीं है। मैंने जीएल संदर्भ स्थापित करने के लिए एंड्रॉइड जावा कोड को देखा है और कोई महत्वपूर्ण अंतर नहीं देख सकता है। मैंने प्रत्येक कॉन्फ़िगरेशन विशेषता के साथ भी खेला है, और कुछ गति को थोड़ा बदलते हैं, कोई भी (जो मुझे मिल सकता है) इस भयानक फ्रेम दर ड्रॉप को बदल देता है।

यह सुनिश्चित करने के लिए कि ईवेंट मतदान कोई मुद्दा नहीं था, मैंने प्रतिपादन को थ्रेड में स्थानांतरित कर दिया। वह थ्रेड अब केवल प्रतिपादन करता है, इस प्रकार केवल स्पष्ट रूप से कॉल करता है और बार-बार स्वैप करता है। धीमी प्रदर्शन अभी भी बनी हुई है।

मैं विचारों से बाहर हूं कि क्या जांचना है और समस्या के बारे में सुझावों की तलाश में हूं।

+0

यह जांचने का प्रयास करें कि क्या माप स्वयं समय नहीं खाता है, बस मामले में। – Vasaka

+0

'eglSwapBuffers' एंड्रॉइड में अवरुद्ध कॉल है और यह कभी-कभी fps को प्रभावित करता है। आपने 'एंड्रॉइड: हार्डवेयर एक्सेलेरेटेड ' – blganesh101

+0

भी कोशिश की है क्या आप कुछ कोड पोस्ट कर सकते हैं? यदि संभव हो तो अपने बेंचमार्किंग कोड को शामिल करना। आम तौर पर, कॉल करता है कि एक ओपनजीएल स्थिति "एक" बफर स्वैप "उनमें से एक हो सकता है) बेंचमार्किंग को पेंच कर देता है क्योंकि वे वे हैं जो वास्तव में आपके द्वारा बुलाए गए सभी पिछले आदेशों को संसाधित करते हैं। हालांकि, मुझे यकीन नहीं है कि यह संभव है क्योंकि आप केवल बफर स्वैप के बीच glClearing कर रहे हैं। वैसे भी, चलो कुछ कोड देखें। –

उत्तर

3

इस 100% भरोसेमंद उत्तर देने के लिए वास्तव में पर्याप्त जानकारी नहीं है (जैसे आप किस डिवाइस पर परीक्षण कर रहे हैं, आप सही कॉन्फ़िगरेशन आदि क्या थे) लेकिन इस प्रकार का व्यवहार आम तौर पर खिड़की और सतह पिक्सेल प्रारूप विसंगति के कारण होता है। 16 बिट (आरजीबी 565) बनाम 32 बिट।

0

FB_MULTI_BUFFER=3 पर्यावरण चर कुछ हालिया एलटीआईबी बिल्ड (एक्स के बिना) के साथ फ्रीस्केल i.MX 6 (सबबेलिट) बोर्ड पर बहु ​​बफरिंग को सक्षम करेगा। आपके जीएफएक्स ड्राइवर को इस तरह कुछ चाहिए।