El projecte Wine ha publicat el llançament del paquet vkd3d 1.7 amb una implementació de Direct3D 12 que funciona mitjançant trucades de difusió a l'API de gràfics Vulkan. El paquet inclou biblioteques libvkd3d amb implementacions de Direct3D 12, libvkd3d-shader amb un traductor dels models shader 4 i 5 i libvkd3d-utils amb funcions per simplificar la portabilitat d'aplicacions Direct3D 12, així com un conjunt d'exemples de demostració, inclòs un port de glxgears a Direct3D 12. El codi del projecte es distribueix amb llicència LGPLv2.1.
La biblioteca libvkd3d admet la majoria de les funcions de Direct3D 12, incloses les instal·lacions de gràfics i informàtics, cues i llistes d'ordres, identificadors i maneigs de pila, signatures arrel, accés fora d'ordre, samplers, signatures d'ordres, constants arrel, renderització indirecta, mètodes Clear *( ) i Copia*(). A libvkd3d-shader, s'implementa la traducció del bytecode dels models shader 4 i 5 en una representació SPIR-V intermèdia. Admet ombrejadors de vèrtex, píxels, tessel·lació, càlcul i geometria simple, serialització i deserialització de signatura arrel. Les instruccions shader inclouen operacions aritmètiques, atòmiques i de bits, operadors de comparació i control de flux de dades, instruccions de mostreig, recopilació i càrrega, operacions d'accés no ordenat (UAV, vista d'accés no ordenat).
En la nova versió:
- Продолжена работа по улучшению компилятора шейдеров на языке HLSL (High-Level Shader Language):
- Добавлена возможность вызова пользовательских функций и использования массивов в качестве параметров пользовательских функций.
- Добавлена поддержка параметров SV_DispatchThreadID, SV_GroupID и SV_GroupThreadID.
- Добавлены встроенные функции all(), distance(), exp(), exp2(), frac(), lit(), reflect(), sin(), cos(), smoothstep(), sqrt(), rsqrt(), step(), transpose().
- Добавлена начальная поддержка типов низкой точности с плавающей запятой, таких как «min16float».
- Значительно улучшена поддержка профилей модели шейдеров Direct3D 1/2/3.
- Добавлен публичный API для разбора (vkd3d_shader_parse_dxbc) и сериализации (vkd3d_shader_serialize_dxbc) бинарных данных DXBC.
Font: opennet.ru