2014-07-11 8 views
7

मैंने GL_ARB_shader_image_load_store का उपयोग कर बनावट के पहले मिपमैप स्तर पर लिखा है। प्रलेखन में कहा गया है कि कैश को उचित रूप से फ्लश करने के लिए, मुझे अन्य परिचालनों में इस छवि की सामग्री का उपयोग करने से पहले glMemoryBarrier को कॉल करने की आवश्यकता है।GlGenerateMipmap की कौन सी मेमोरी बाधा आवश्यक है?

उदाहरण के लिए, मैं glTexSubImage2D ऑपरेशन करने से पहले, मुझे GL_TEXTURE_UPDATE_BARRIER_BIT जारी करने की आवश्यकता है, और इससे पहले कि मैं एक शेडर का उपयोग करके ड्रॉ कॉल जारी करता हूं जो बनावट के नमूनों को मुझे GL_TEXTURE_FETCH_BARRIER_BIT जारी करने की आवश्यकता है।

हालांकि, मुझे यह सुनिश्चित करने से पहले मुझे कौन सा बाधा जारी करने की आवश्यकता है कि glGenerateMipmap सबसे हाल ही में लिखित डेटा का उपयोग करेगा?

+1

मुझे लगता है जैसे आपको पूरी तरह से spec में मिला है। मैं सुझाव दूंगा कि आप spec लेखकों से संपर्क करें कि वे इसे स्पष्ट करें। – Bahbar

+0

ओपनजीएल 4.5 जारी होने के साथ एक नया फ़ंक्शन glTextureBarrier() है जो आप जो चाहते हैं उसे करने की उम्मीद है। https://www.opengl.org/sdk/docs/man/html/glTextureBarrier.xhtml – plasmacel

उत्तर

3

वहाँ ... कोई जवाब नहीं है।

ओपनजीएल 4.5 विनिर्देशन के पास इस विशेष मामले के लिए कोई जवाब नहीं है। कोई मेमोरी अवरोध नहीं है जो स्पष्ट रूप से या निहित रूप से काम करने के लिए glGenerateMipmap की अनुमति देता है। और glGenerateMipmap की परिभाषा उन विशिष्ट संचालन को निर्दिष्ट नहीं करती है जो कार्यान्वयन उन mipmaps उत्पन्न करने के लिए उपयोग कर सकते हैं।

आपको ओपनजीएल विशिष्टता में एक अच्छा छेद मिला। उम्मीद है कि, they'll fix it at some point


अद्यतन: the bug report के अनुसार, डेस्कटॉप कार्ड पर वर्तमान व्यवहार कि glGenerateMipmap स्पष्ट तुल्यकालन के किसी भी रूप की आवश्यकता नहीं है है। यही है, ड्राइवर यह सुनिश्चित करने के लिए जो भी बाधाओं की आवश्यकता है, उत्पन्न करेगा।

यह वह व्यवहार भी है जिसके साथ वे जाने का इरादा रखते हैं, क्या उन्हें विनिर्देशन में स्पष्ट करने के लिए इनकार करना चाहिए।

संबंधित मुद्दे