أصدر مشروع Wine إصدارًا جديدًا من حزمة vkd3d 1.2 مع تطبيق Direct3D 12 الذي يعمل عن طريق ترجمة الاستدعاءات إلى واجهة برمجة تطبيقات الرسومات Vulkan.
يحتوي هذا الإصدار الجديد من vkd3d 1.2 على العديد من التحسينات، ولكن أبرزها هو توفر libvkd3d-shader كمكتبة عامة ، ودعم تظليل التجزئة، بالإضافة إلى دعم إخراج التدفق.
تتضمن الحزمة مكتبة libvkd3d مع تطبيقات Direct3D 12، ومكتبة libvkd3d-shader مع مترجم تظليل من النموذج 4 و5، ومكتبة libvkd3d-utils مع وظائف لتبسيط عملية ترحيل تطبيقات Direct3D 12، بالإضافة إلى مجموعة من العروض التوضيحية، بما في ذلك منفذ glxgears إلى Direct3D 12. يتم توزيع كود المشروع بموجب ترخيص LGPLv2.1.
تدعم مكتبة libvkd3d معظم ميزات Direct3D 12، بما في ذلك وظائف الرسومات والحساب، وقوائم الأوامر وقوائم الانتظار، والواصفات وواصفات الكومة، والتوقيعات الجذرية، والوصول غير المرتب، وعينات البيانات، وتوقيعات الأوامر، والثوابت الجذرية، والعرض غير المباشر، وما إلى ذلك.
تُنفّذ مكتبة Libvkd3d-shader ترجمة البايت كود 4 و5 لنماذج التظليل إلى تمثيل SPIR-V الوسيط. وتدعم المكتبة الرؤوس، والبكسلات، والتجزئة، وتظليل الهندسة البسيطة والحسابية، وتسلسل وفك تسلسل التوقيع الجذري.
تتضمن تعليمات التظليل العمليات الحسابية والذرية والبتية، وعوامل التحكم في تدفق البيانات والمقارنة، وتعليمات أخذ العينات والتجميع والتحميل، وعمليات الوصول غير المرتبة (UAV، عرض الوصول غير المرتب).
في هذه المرحلة من التطوير، لم تُفعّل جميع وظائف Direct3D 12 ، وقد أُجري الاختبار بشكل أساسي على مجموعة من التطبيقات التجريبية. لا يتضمن هذا الإصدار ميزات قيد التطوير، مثل دعم التجزئة وتظليل الأشكال الهندسية المعقدة، بالإضافة إلى العديد من التحسينات المتعلقة بالتظليل ووظائف Direct3D 12 الأساسية. ستُضاف هذه الميزات في إصدار لاحق.
الميزات الجديدة الرئيسية لـ Vkd3d 1.2
من أهم التغييرات في الإصدار الجديد توفر مكتبة libvkd3d-shader للاستخدام في مشاريع الجهات الخارجية، حيث تمت إضافة العديد من ميزات Direct3D 12، مثل:
- متعدد العينات.
- الموارد المحجوزة.
- معدلات تمرير بيانات المثيل.
- واجهة برمجة تطبيقات "البيانات الخاصة" لجميع الواجهات.
- تعيينات مكون عرض مورد شادر.
- ملحق VK_KHR_draw_indirect_count.
- المسند / التمثيل الشرطي.
- عرض العمق بدون تظليل بكسل.
- انقطاع العمق. يتطلب هذا الامتداد VK_EXT_depth_clip_enable.
- تجاهل أداة المسح.
- خلط ثنائي المصدر.
- تعيين الموارد الموضوعة.
- الأسلوبان ReadFromSubresource () و WriteToSubresource () ID3D12Resource.
- الوصول المتزامن إلى موارد قوائم الانتظار المتعددة.
- وجهات نظر لاغية. أي وجهات النظر بدون مورد أساسي.
- العديد من استفسارات دعم الميزات.
بالإضافة إلى ذلك، فإن الدعم الإضافي لتحويل وتسلسل وإلغاء تسلسل التوقيعات الجذرية (vkd3d_serialize_versioned_root_signature() و vkd3d_create_versioned_root_signature_deserializer()) جدير بالذكر أيضًا ، بالإضافة إلى دعم إخراج البث.
ومن التغييرات الملحوظة الأخرى تنفيذ متغيرات البيئة: VKD3D_CONFIG لتعيين الخيارات لتغيير سلوك libvkd3d و VKD3D_VULKAN_DEVICE لتجاوز الجهاز لواجهة برمجة تطبيقات Vulkan.
بالإضافة إلى ذلك، تمت إضافة دعم لتعليمات التظليل bufinfo و eval_centroid و eval_sample_index و ld2ms و sample_b و sample_d و sample_info و samplepos ودعم أولي لبرامج التظليل من النموذج 5.1.
وأيضًا دعم البيئات المستهدفة OpenGL SPIR-V. هذا يسمح باستخدام SPIR-V الذي تنتجه libvkd3d-shader مع GL_ARB_gl_spirv. وهذا يشمل دعم عدادات OpenGL الذرية وأخذ العينات المدمجة.
وأخيرًا، إذا كنت ترغب في معرفة المزيد عن هذا الإصدار الجديد، يمكنك الاطلاع على القائمة الكاملة للتغييرات على الرابط التالي.
كيفية تثبيت vkd3d على لينكس؟
بالنسبة لأولئك الذين يرغبون في التمكن من تثبيت vkd3d على نظامهم ، يجب عليهم الحصول على الكود المصدري والمضي قدمًا في التجميع ، على الرغم من أنه لأغراض عملية أو لأولئك المبتدئين ، يمكنهم تجربة هذه المكتبة دون بذل الكثير من الجهد. لهذا ، عليهم فقط تثبيت lutris وضمن تكويناته.
أما بالنسبة للمهتمين بالتجميع فيجب عليهم الحصول على الكود مع:
git clone git://source.winehq.org/git/vkd3d.git/
./autogen.sh
./configure
make
../vkd3d/configure --build=i686-pc-linux-gnu "CPPFLAGS=-m32" "LDFLAGS=-m32"
أخيرًا ، يجب تمكين طبقات Vulkan:
export VK_INSTANCE_LAYERS=VK_LAYER_LUNARG_standard_validation
VKD3D_CONFIG=vk_debug