پروژه Wine انتشار بسته vkd3d 1.4 را با پیاده سازی Direct3D 12 منتشر کرده است که از طریق پخش تماس ها به API گرافیکی Vulkan کار می کند. این بسته شامل کتابخانههای 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، Unordered Access View) می باشد.
در نسخه های جدید:
- بهبودهای زیادی در کامپایلر سایه زن HLSL (High-Level Shader Language) از DirectX 9.0 ایجاد شده است.
- اجرای جدیدی از Heap توصیفگر با استفاده از پسوند Vulkan VK_EXT_descriptor_indexing پیشنهاد شده است.
- یک اجرای حصار جدید بر اساس پسوند Vulkan K_KHR_timeline_semaphore اضافه شد.
منبع: opennet.ru