DirectX 12 D3D12 يحصل على ميزة جديدة تمنح المزيد من التحكم في تخصيص الذاكرة إما لوحدة معالجة الرسومات أو وحدة المعالجة المركزية بشكل ديناميكي

المعدات / DirectX 12 D3D12 يحصل على ميزة جديدة تمنح المزيد من التحكم في تخصيص الذاكرة إما لوحدة معالجة الرسومات أو وحدة المعالجة المركزية بشكل ديناميكي 3 دقائق للقراءة

برنامج DirectX 12



في التحديث الرئيسي القادم لنظام التشغيل Windows 10 ، سيكون DirectX12 ، وبشكل أكثر تحديدًا ، Direct3D (D3D12) لا تحصل على أعلام واحدة ولكن جديدة سيغير طريقة تخصيص موارد الذاكرة. يبدو أن Microsoft مهتمة حقًا بالطريقة التي يتم بها طلب الذاكرة وقوة المعالجة بواسطة التطبيقات وتخصيصها لها ، مما قد يؤدي غالبًا إلى حدوث اختناق. بالمناسبة ، لن تؤثر هذه العلامات الجديدة بشكل مباشر على الذاكرة ، بل ستؤثر على طريقة تخصيصها وإدارتها.

تعمل Microsoft بنشاط على تطوير أحدث نسخة من منصة DirectX ، والتي لطالما كانت معيارًا رائدًا لألعاب سطح المكتب. حصل أحدث إصدار من Microsoft DirectX 12 على العديد من الميزات الجديدة مؤخرًا. قمنا مؤخرًا بتغطية ملف أبرز وأهم الميزات الجديدة لبرنامج DirectX 12 والتي من شأنها أن تفيد المطورين والمستخدمين بشكل كبير. هذا الأسبوع ، أشارت Microsoft إلى أن التحديث الرئيسي التالي لنظام التشغيل Windows 10 يجب أن يتضمن علامتين جديدتين لـ DirectX12 Direct3D. ومن المثير للاهتمام ، أن المطورين الذين يرغبون في استكشاف نفس الشيء اليوم ، يحتاجون ببساطة إلى تنزيل وتثبيت أحدث إصدار من Windows 10 Insider Preview build و SDK Preview Build لنظام التشغيل Windows 10 (20H1) من برنامج Windows Insider.



Windows 10 DirectX 12 Direct3D للحصول على علامتين جديدتين لتخصيص الذاكرة الديناميكية بين وحدة المعالجة المركزية ووحدة معالجة الرسومات:

في التحديث القادم لنظام التشغيل Windows 10 ، ستضيف D3D12 علامتين جديدتين إلى تعداد D3D12_HEAP_FLAG. بالمناسبة ، هذه العلامات الجديدة هي خصائص 'غير دائمة'. ببساطة ، هذا يعني أن العلامات الجديدة لن تؤثر بشكل مباشر على الذاكرة الناتجة نفسها. بدلاً من ذلك ، ستؤثر العلامات الجديدة على طريقة تخصيص الذاكرة. علاوة على ذلك ، لا تنعكس هذه العلامات من ID3D12Heap :: GetDesc أو ID3D12Resource :: GetHeapProperties .



D3D12_HEAP_FLAG_CREATE_NOT_RESIDENT:

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



  1. يحجب التصميم خيط CPU حتى تصبح الذاكرة جاهزة للاستخدام. هذا ليس الوضع المثالي أو المطلوب
  2. ستسمح العملية أيضًا للمطورين بإفراط في استخدام الذاكرة ، بما يتجاوز ما تشير ميزانية العملية الحالية إلى أنه يجب أن يستخدمه.

المضافة حديثًا ID3D12Device3 :: EnqueueMakeResident يسمح للتطبيقات باتخاذ خيارات مختلفة. يمكن للتطبيقات انتظار الإقامة باستخدام وحدة معالجة الرسومات بدلاً من وحدة المعالجة المركزية أو تطلب فشل عملية الإقامة بدلاً من تجاوز الميزانية. يؤدي تخصيص الذاكرة في دولة غير مقيمة إلى نقل الفوائد إلى الاستخدام الأول للموارد.

D3D12_HEAP_FLAG_CREATE_NOT_ZEROED:

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

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



قامت Microsoft بالفعل بإضافة هذه العلامات الجديدة ولا تتطلب برامج تشغيل جديدة. علاوة على ذلك ، لا يوجد مخصص تحقق من الميزات الدعم خيار لهذه. بشكل أساسي ، تتوفر هذه العلامات الجديدة في أي وقت يتعرض فيه ID3D12Device8 ، أو ينجح التحقق من D3D12_FEATURE_D3D12_OPTIONS7. كل ما تطلبه العلامات الجديدة هو أن المطورين يجب أن يديروا عمليات على نسخة من D3D12 يفهمها.

العلامات X12 المباشر ديريكتكس مايكروسوفت شبابيك