पिक्स का उपयोग करके मेरे ऐप को प्रोफाइल करते समय, मैंने देखा कि GPU गुजर रहा है (DX10 मोड में) अधिकांश समय संसाधन उपलब्ध नहीं होने के लिए निष्क्रिय प्रतीक्षा में है।संसाधन अवधारणा
1) एप्लिकेशन GPU सीमित है:
कुछ नोट (और सीपीयू फ्रेम एक्स संसाधित कर रहा है अगर, GPU भी इस समस्या के लिए फ्रेम एक्स संसाधित कर रहा है) सीपीयू (उदाहरण के लिए के साथ पंक्ति में हमेशा होता है) (सीपीयू सबसे भारी दृश्य में मूल रूप से निष्क्रिय (CPU उपयोग का 20% है))
मेरे प्रश्न हैं:
1) मैं इन परिणामों की व्याख्या करना है? पिक्स में जीपीयू पक्ष पर हर फ्रेम में मुझे 2-3 छोटी लाल बार दिखाई देती है (जहां तक मुझे पता है कि संसाधन अनुपलब्ध है) और उनके बाद एक मध्यम/बड़ा ग्रे बार (जिसका मतलब है GPU निष्क्रिय)। दूसरी तरफ सीपीयू में कुछ ऑपरेशन हैं, एक बड़ी खाली पट्टी और फिर कुछ अन्य ऑपरेशंस (कुछ इंतजार कर रहे हैं?)
एक और नोट, जब GPU निष्क्रिय होता है तो आमतौर पर सीपीयू काम कर रहा है। (इसके विपरीत स्पष्ट रूप से मान्य नहीं है)
2) संसाधन कौन से कॉल अनुपलब्ध हो सकता है?
डिस्कार्ड के साथ एक एमएपी को अवरुद्ध कॉल माना जाता है?
किसी ऑब्जेक्ट का डीईएससी प्राप्त करने के लिए एक प्रश्न?
एक शेडर प्रभाव साझा करना एक विवाद माना जाता है?
अन्य क्या?
मेरी सामान्य फ्रेम है:
41 DrawPrimitives/DrawIndexedPrimitives (सबसे वस्तु instanced कर रहे हैं) पिक्सेल शेडर का छोड़ें
9 परिवर्तन/शिखर शेडर
1 setrendertarget
7/8 ताले
धन्यवाद!
पीएस pix का स्क्रीनशॉट
http://img191.imageshack.us/img191/6800/42594100.jpg
अगर मैं एक एकल ड्रा कॉल (समान GPU भार के साथ (उदाहरण के लिए एक्स कणों या एक instanced वस्तु) के साथ एक कण इंजन) पूर्ण खेल के बजाय का उपयोग मैं एक पूर्ण नीला मिल बार और जीपीयू सीपीयू के पीछे सही ढंग से 2-3 फ्रेम ...
संपादित करें: मैं प्रभाव फ्रेमवर्क पर अधिक से अधिक ध्यान केंद्रित कर रहा हूं जो शायद इस समस्या का कारण है। मैं उन्हें बनाने के लिए स्मृति और समय बचाने के लिए अधिक वस्तुओं के बीच एक प्रभाव साझा करता हूं। क्या यह विवाद के बिना मानना सुरक्षित है?
हम, चल रहे पिक्स, क्या आप अलग-अलग कॉल को फ्लश करने के लिए अलग नहीं कर सकते हैं? – Bahbar