2012-10-25 51 views
10

मैं डेस्कटॉप जीएल डेवलपर हूं, और मैं मोबाइल दुनिया का पता लगाने शुरू कर रहा हूं।ओपनजीएल (ईएस 2.0) एक साझा मेमोरी आर्किटेक्चर में वीबीओ प्रदर्शन

गलतफहमी, या स्वागत-लेकिन-मामूली उत्तरों से बचने के लिए, मैं नम्रतापूर्वक कह ​​सकता हूं कि मैं जीएल और जीएल | ईएस मशीनरी के बारे में बहुत अच्छी तरह से अवगत हूं।

संक्षिप्त प्रश्न यह है कि: यदि हम साझा स्मृति वास्तुकला में जीएल | ईएस 2.0 का उपयोग कर रहे हैं, तो क्लाइंट-साइड सरणी के विरुद्ध वीबीओ का उपयोग करने के पीछे क्या बिंदु है?

विस्तार से अधिक:

  • वर्टेक्स बफ़र्स हैं स्मृति के कच्चे हिस्सा, ड्राइवर नहीं किसी भी तरह से कुछ भी अनुकूलन क्योंकि पहुंच पद्धति पर निर्भर करता है में कर सकते हैं: 1) कैसे आवेदन शिखर डेटा लेआउट कॉन्फ़िगर करता है , 2) कैसे एक कशेरुक शेडर बफर सामग्री का उपभोग करता है, और 3) हमारे पास विभिन्न तरीकों से परिचालन करने वाले कई वर्टेक्स शेडर्स हो सकते हैं, और अलग-अलग बफर को अलग-अलग कर सकते हैं।

  • संरेखण: व्यक्तिगत वीबीओ स्टोरेज उन पते पर शुरू हो सकता है जो अंतर्निहित जीएल सिस्टम के लिए अनुकूल हैं; क्या होगा यदि मैं केवल इन सीमाओं के लिए क्लाइंट-साइड सरणी आवंटन (उदाहरण के लिए संरेखण सर्वोत्तम प्रथाओं का सम्मान करता हूं)?

  • टाइल-आधारित रेंडरिंग बनाम तत्काल मोड आर्किटेक्चर खेलना नहीं चाहिए: मेरी समझ के लिए, यह मेरे प्रश्न (यानी, स्मृति पहुंच) से संबंधित नहीं है।

मैं समझता हूँ VBOs का उपयोग कर अपने कोड रन बिना संशोधित किए भविष्य प्लेटफार्मों/हार्डवेयर में तेजी से बेहतर हो सकता है/है, लेकिन इस इस सवाल का ध्यान केंद्रित नहीं है।

साथ में, मुझे यह भी एहसास है कि साझा स्मृति आर्किटेक्चर में वीबीओ का उपयोग करने से स्मृति उपयोग (यदि आप किसी कारण से, अपने निपटान में वर्टेक्स डेटा रखना चाहते हैं), और यह आपको डेटा का एक memcpy खर्च करता है।

इंटरलीव किए गए वर्टेक्स सरणी के साथ, वीबीओ उपयोग को उन बयानों (यानी, बेंचमार्क) का समर्थन करने वाले किसी भी डेटा के बिना डेवलपर्स के मंच/ब्लॉग/आधिकारिक_टेक्नोट्स में एक महान "प्रचार" मिला है।

  • क्या वीबीओ उपयोग साझा स्मृति आर्किटेक्चर पर इसके लायक है?
  • क्या क्लाइंट-साइड एरे अच्छी तरह से काम करते हैं?
  • आप इस बारे में क्या सोचते/जानते हैं?

उत्तर

3

मैं रिपोर्ट कर सकता हूं कि एंड्रॉइड उपकरणों पर वर्टेक्स डेटा स्टोर करने के लिए वीबीओ का उपयोग करके मुझे शून्य प्रदर्शन में सुधार हुआ। एड्रेनो, माली 400 और पावरवीआर जीपीयू पर इसका प्रयास किया। हालांकि, हम वीबीओ का उपयोग करते हैं क्योंकि यह ओपनजीएल ईएस के लिए सबसे अच्छा अभ्यास है।

आप हमारे article (वर्टेक्स बफर ऑब्जेक्ट्स अनुच्छेद) में इसके बारे में नोट्स पा सकते हैं।

+0

आप इन परिणामों को बांटने के लिए बहुत बहुत धन्यवाद। अंत में यह एक प्रदर्शन बिंदु के लिए महत्वपूर्ण है। वैसे भी, मैं खुद को समझा नहीं सकता कि कैसे साझा एमएम जीपीयू में वीबीओ उपयोग की वकालत की जा सकती है, मुझे लगता है कि यह केवल मार्केटिंग के लिए है या लोगों को अच्छी प्रथाओं के बारे में जीएल के अपेक्षाकृत नए "तैयार" करने के लिए है (बिना बताए, समय होने पर, संभावित स्मृति की दोगुनी वजह से उन्हें उपयोग करना बेहतर नहीं होगा यदि आपको अभी भी उन्हें सीपीयू-पक्ष की आवश्यकता है, और अपरिहार्य प्रतिलिपि ऑपरेशन की वजह से)। – spattija

-1

मैं आपको बताउंगा, आईओएस मंच के बारे में मुझे क्या पता है। वीबीओ वास्तव में आपके प्रदर्शन में सुधार करता है।

  1. वीबीओ सही है, यदि आपके पास स्थैतिक ज्यामिति है - एक बार प्रतिलिपि बनाई गई है, प्रत्येक ड्रॉ कॉल पर कोई अतिरिक्त ओवरहेड नहीं है।सीए आपके डेटा को क्लाइंट मेमोरी से "gpu मेमोरी" में प्रत्येक ड्रॉकॉल में कॉपी करेगा। यदि आप इसके बारे में भूल गए हैं, तो यह डेटा रीयलिंग कर सकता है।
  2. वीबीओ को gpu vie glMapBuffer में मैप किया जा सकता है - यह एक एसिंक्रोनस ऑपरेशन है, जिसका अर्थ है कि इसका कोई ओवरहेड नहीं है, लेकिन आपको याद रखना चाहिए - जब आप अपने बफर को अनपैप कर रहे हैं, तो इसे अनमैप ऑपरेशन के बाद 2 फ्रेम का उपयोग करना बेहतर होगा - सिंक्रनाइज़ेशन से बचने के लिए
  3. ऐप्पल इंजीनियरों का कहना है कि वीजीओ के पास एसजीएक्स हार्डवेयर पर सीए की तुलना में बेहतर प्रदर्शन होगा, भले ही आप इसे प्रत्येक फ्रेम को दोबारा अपलोड करेंगे - मुझे विवरण नहीं पता।
  4. वीबीओ एक सर्वोत्तम अभ्यास है। सीए बहिष्कृत हैं। बेहतर यह रिपोर्ट के अनुसार आधुनिक प्रवृत्तियों के साथ तालमेल में रखने के लिए और के रूप में ज्यादा पार मंच रहने के लिए, के रूप में संभव
+0

ठीक है, निश्चित रूप से आपके अंक वीबीओ का उपयोग करने के मानक कारण हैं, लेकिन दुर्भाग्यवश उनमें से अधिकतर प्रश्न में पहले से ही इनकार कर चुके हैं। –

+0

बफर मैपिंग के बारे में कुछ भी नहीं था - यह सीपीयू और जीपीयू के बीच अपनी ज्यामिति भेजने का सबसे तेज़ तरीका है, लेकिन कुछ सीमाएं हैं – StiX

+0

बफर मैपिंग मेरे प्रश्न के संदर्भ में खेलना नहीं चाहिए, यह बफर सामग्री को अद्यतन करने का लक्ष्य रखता है, जबकि मैं जीएल वर्टेक्स पुलर (डीएक्स टर्मिनोलॉजी में इनपुट असेंबलर) को डेटा की आपूर्ति के संदर्भ में साझा स्मृति के साथ एक जीपीयू रखने के प्रदर्शन लाभों के बारे में पूछ रहा हूं। – spattija