تخطَّ إلى المحتوى
PS5PCEM
جزئيالرسوم

واجهة Direct3D 12 الخلفية

عارض أصلي تجريبي لنظام Windows أُضيف بعد الإصدار 0.3.5. يتشارك مع Vulkan مفكّك PM4 وترجمة مظلِّلات RDNA2، ثم ينفّذ ويعرض عبر D3D12 وDXGI. يبقى Vulkan هو الافتراضي، ولا تعمل الألعاب عبر هذا المسار بعد.

ملاحظات المستودع حتى 17 أكتوبر 2026

اختيار العارض

تضم إعدادات مشغّل Windows بطاقة «واجهة الرسوميات» فيها Vulkan وDirectX 12. يحفظ المشغّل graphics_api=vulkan أو graphics_api=d3d12 في ملف ps5pcem.ini المحمول ويمرّر PS5_GRAPHICS_API إلى game-run، فيسري الاختيار عند التشغيل التالي. Vulkan هو الافتراضي. يَسِم المشغّل DirectX 12 بأنه تجريبي في اللغات الاثنتي عشرة كلها، ويعرضه الشريط الجانبي مكان حالة جهاز Vulkan.

يعمل المتغير نفسه من سطر الأوامر، حيث تُقبل القيمتان d3d12 وdx12. تختار إصدارات Linux واجهة Vulkan، ويرفض المُشغِّل d3d12 هناك. تُرفض القيمة غير المعروفة قبل تحميل أي لعبة. إذا فشلت تهيئة D3D12 أو تنفيذها، فلا يستبدلها المُشغِّل بـ Vulkan: يطبع عمل GPU غير المدعوم سببه وينهي التشغيل التجريبي بدل الإبلاغ عن اكتماله. ولا يتوفر في هذه الواجهة الخلفية تشغيل بلا نافذة.

ما الذي تنفّذه الواجهة الخلفية

يقبع الجهاز والطابور المباشر ومخصِّصات الأوامر وقوائمها والحواجز والأسوار وأعمار الموارد خلف واجهة C صغيرة فوق COM. نُفِّذت مخازن الرفع والمخازن الافتراضية ومخازن القراءة، ومصفوفات واصفات UAV الخام، والنسخ على GPU. تمر المظلِّلات عبر مفكّك RDNA2 والتمثيل الوسيط وتوليد SPIR-V نفسها التي يستخدمها مسار Vulkan؛ ويحوّل SPIRV-Cross هذا الـ SPIR-V إلى HLSL، ثم يُنتج D3DCompiler في Windows شيفرة Shader Model 5.1. ليس SPIR-V هنا إلا صيغة وسيطة، ولا يُنفَّذ أي شيء عبر Vulkan. يُثبَّت SPIRV-Cross بتجزئة الشيفرة المصدرية، وتُوزَّع رخصته Apache-2.0 مع المشروع.

على جانب PM4، يُنفَّذ DISPATCH_DIRECT بواصفات تخزين MUBUF وMTBUF محدودة ومحلولة ثابتًا، مع تخصيص USER_DATA وكتابة دقيقة في ذاكرة الضيف. أما DRAW_INDEX_AUTO فيغطي حالة مقيّدة: مظلِّلا رؤوس وبكسلات بلا موارد، وقوائم مثلثات أو شرائطها، وهدف خطي واحد بصيغة RGBA8 UNORM، ومنفذ العرض، ومستطيل القص، والإعدام، وأقنعة القنوات، والتكرار، مع الحفاظ على البايتات الموجودة في الهدف. تعرض سلسلة تبديل DXGI بنمط القلب وبثلاثة مخازن مخرجات RGBA8 وBGRA8 الخطية، وتُظهر العارض وعدد الإطارات في عنوان النافذة. يكتمل عمل GPU تزامنيًا قبل أن تصل آثاره إلى ذاكرة الضيف، والتنفيذ المتوازي لـ AGC معطّل، ولا تُخزَّن المظلِّلات وحالة خطوط المعالجة والموارد المجهَّزة مؤقتًا بين الاستدعاءات بعد.

ما الذي جرى التحقق منه

في 17 أكتوبر 2026 نجحت فحوص العتاد على NVIDIA GeForce RTX 3070 Ti: رفع المخازن وقراءتها بستة أحجام، والحوسبة الأصلية بستة أحجام إرسال، وترجمة RDNA2 لمظلِّلات الحوسبة والتنقيط مع تحقق دقيق من المخرجات، وحوسبة PM4 ورسمه عبر منفّذ الأوامر إلى D3D12 مع الكتابة في ذاكرة الضيف، والعرض في نافذة بثلاثة أحجام لسلسلة التبديل. لم تكن طبقة تصحيح D3D12 مثبّتة، لذا لا تثبت هذه التشغيلات خلوّها من التحذيرات تحت تلك الطبقة.

اختار تشغيل Raiden IV مع PS5_GRAPHICS_API=d3d12 بطاقة RTX 3070 Ti، وبدأ اللعبة، ثم توقف برمز الخروج 1 عند أول رسم مفهرس (IndexedAndIndirectDrawNotImplemented). هذا حدّ مُتحقَّق منه، وليس إقلاعًا للعبة على D3D12. كل نتائج الألعاب وقيم الإطارات في الثانية في هذا الموقع قيست باستخدام Vulkan.

ما هو منفَّذ

  • اختيار المشغّل محفوظ في ps5pcem.ini ويُمرَّر بصفته PS5_GRAPHICS_API، وVulkan هو الافتراضي.
  • جهاز أصلي وطابور وأسوار ومخازن وواصفات UAV ونسخ على GPU خلف واجهة C فوق COM.
  • مظلِّلات RDNA2 عبر مسار SPIR-V المشترك وHLSL من SPIRV-Cross وشيفرة Shader Model 5.1.
  • إرسالات حوسبة محدودة، ورسم مقيّد بفهارس تلقائية، وسلسلة تبديل DXGI بنمط القلب وبثلاثة مخازن.

ما زال ناقصًا

  • الأنسجة والعيّنات، وصيغ الصور وإزالة التبليط، والرسم المفهرس وغير المباشر، وNGG والتقسيم الدقيق لم تُنفَّذ بعد.
  • ما زالت تنقص عمق الضيف والاستنسل، والمزج، وأهداف العرض المتعددة، وMSAA، والبيانات الوصفية، وعرض الفيديو.
  • من دون تخزين مؤقت للمظلِّلات وخطوط المعالجة ومن دون إكمال غير متزامن لا يمكن قياس إطارات الألعاب، ولا يوجد D3D12 في إصدارات Linux.

آليات مرتبطة

ماذا تصف هذه الصفحات

يتبع النص ملاحظات المعمارية وتقارير تشرين الأول/أكتوبر 2026 في مستودع PS5PCEM. نجاح اختبار محدد ليس معدل إطارات جديدًا ولا إكمالًا جديدًا للعبة.

كل التقنيات