ما هي الأسباب المحتملة لـ Idirect3DvertexBuffer9 :: الفشل؟

StackOverflow https://stackoverflow.com/questions/2771321

  •  03-10-2019
  •  | 
  •  

سؤال

في تقارير الخطأ من البعض ، غالبًا ما رأيت السلوك بعد السلوك: فشل Idirect3DverTexBuffer9 :: FAIL ، رمز الخطأ الذي تم إرجاعه هو d3derr_notavailable.

بمجرد حدوث ذلك ، يتبع ذلك بشكل متكرر (ولكن ليس دائمًا) CreateTexture أو CreateVevertexBuffer مع الخطأ D3Derr_outofvideomemory.

ما هي الأسباب المحتملة لفشل قفل العازلة في الرأس؟ هل يمكن أن تستنفد مساحة عنوان الذاكرة الافتراضية ، أم ماذا؟

هل كانت مفيدة؟

المحلول

بناءً على استجابة DirectXDEV من قبل Chuck Walbourn من Microsoft ، إلى جانب "خارج مساحة العنوان" ، يمكن أن يكون سبب آخر "خارج PAGE POOL".

بدلاً من ذلك ، على نظام التشغيل Windows XP ، قد يشير هذا إلى أنك قد ضربت حدود ذاكرة kernel pool. يحدث هذا عادة عند إنشاء الكثير من موارد Direct3D (القوام ، إلخ)

نقوم بإنشاء الكثير من موارد Direct3D.

نصائح أخرى

هذا ما نشرته على DirectxDev: ؛)

هل راجعت مقدار الذاكرة التي يستخدمها تطبيقك؟ (تأكد من تحديد عمود الذاكرة الظاهرية في مدير المهام!). سيكون تخميني هو المشكلات القائمة على تجزئة الذاكرة التي تسبب لك ، كما تقترح ، نفاد مساحة العنوان.

ومع ذلك ، يمكن أن يكون خطأ السائق ...

هل يوفر وقت تشغيل التصحيح أي معلومات مفيدة؟

تحرير: الشيء الآخر الوحيد الذي يمكنني التفكير فيه هو أن ذاكرة الفتحة قد نفدت. لا أعرف كيف يعمل هذا مع PCIexpress ولكن على AGP يمكنك ضبط حجم الفتحة. ليس لدي أي فكرة عن كيفية التحقق مما إذا كان ممتلئًا. أظن أن الخطأ الذي تراه هو الإبلاغ عن أنه ممتلئ. هل تقوم بالكثير من الأقفال مع العلم المتخلص؟ إذا كان الأمر كذلك ، فمن الممكن أن تخلق هذه أطنان من المخصصات الجديدة في الفتحة وتسبب لك نفاد الذاكرة هناك. هذا هو عمل تخمين خالص ولكن.

هوية شخصية خمن أنه إذا كان هذا يحدث مع بعض المستخدمين فقط ، فإن تلك الموجودة على آلات الطرف السفلي. إذا تم تشغيل الأمور ببطء ، فيمكنك أن ينتهي بك الأمر مع الكثير من البيانات المخزن المؤقت في المخزن المؤقت. هذا سيجعل السيطرة متأخرة و "يمكن" ، بتخمين ، تؤدي إلى المشكلة التي تراها. قد ترغب في محاولة التأكد من أن المخزن المؤقت للسيادة لا يزول وقتًا طويلاً. إذا تأكدت من أن القفل الأول من كل إطار يتم بدون علامة تجاهل (أي علامة على سبيل المثال ، فإن هذا سيؤدي إلى توقف خط الأنابيب حتى يتم تقديم المخزن المؤقت للقمة وإعادة المخزن المؤقت للمزامنة معك. سيؤدي ذلك إلى إبطاء في إبطاء لأن تخزين المؤسسة لن يكون قادرًا على تهدئة مسامير معدل الإطارات بسهولة ...

على أي حال ... هذا مجرد تخمين!

القضية المرفوعة حول الخروج من الذاكرة صالحة. نحتاج إلى بعض التفاصيل حول مكالمة القفل () للتأكد ، لكن على سبيل المثال ، إذا كان في التجمع الافتراضي ، وإذا كان ديناميكيًا (تم تمرير علامة D3DLOCK_DISCARD تكتشف نفسك بعد فترة وجيزة ، تم استنفاد ذاكرة الفيديو.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top