Das Wine-Projekt hat die Version vkd3d 1.7 veröffentlicht, die Direct3D 12 implementiert, welches durch die Ăbersetzung von Aufrufen in die Vulkan-Grafik-API funktioniert. Das Paket enthĂ€lt die Bibliotheken libvkd3d mit Direct3D 12-Implementierungen, libvkd3d-shader mit einem Ăbersetzer fĂŒr Shader der Modelle 4 und 5 sowie libvkd3d-utils mit Funktionen zur Vereinfachung des Portierens von Direct3D 12-Anwendungen, einschlieĂlich einer Sammlung von Beispielen, die gxlgears auf Direct3D 12 portiert. Der Quellcode des Projekts wird unter der LGPLv2.1-Lizenz vertrieben.
Die Bibliothek libvkd3d unterstĂŒtzt die meisten Funktionen von Direct3D 12, einschlieĂlich Grafik- und Compute-Funktionen, Warteschlangen und Befehlslisten, Deskriptoren und Heap-Deskriptoren, Wurzel-Signaturen, ungeordneten Zugriff, Sampler, Befehls-Signaturen, Wurzel-Konstanten, indirekte Zeichnungen, Clear*()-Methoden und Copy*(). In libvkd3d-shader wurde die Ăbersetzung von Bytecode der Shader-Modellversionen 4 und 5 in das Intermediate-Format SPIR-V implementiert. UnterstĂŒtzt werden Vertex-, Pixel-, Tessellations-, Compute- und einfache geometrische Shader, Serialisierung und Deserialisierung von Wurzel-Signaturen. Implementiert sind die arithmetischen, atomaren und Bitoperationen, Vergleichsoperatoren und Steueranweisungen, sowie die Anweisungen sample, gather und load, und Operationen mit ungeordnetem Zugriff (UAV, Unordered Access View).
In der neuen Version:
- Die Arbeiten zur Verbesserung des HLSL (High-Level Shader Language) Shader-Compilers wurden fortgesetzt:
- Die Möglichkeit zur Verwendung von benutzerdefinierten Funktionen und Arrays als Parameter fĂŒr benutzerdefinierte Funktionen wurde hinzugefĂŒgt.
- UnterstĂŒtzung fĂŒr die Parameter SV_DispatchThreadID, SV_GroupID und SV_GroupThreadID wurde hinzugefĂŒgt.
- Integrierte Funktionen wie all(), distance(), exp(), exp2(), frac(), lit(), reflect(), sin(), cos(), smoothstep(), sqrt(), rsqrt(), step() und transpose() wurden hinzugefĂŒgt.
- Erste UnterstĂŒtzung fĂŒr Typen mit niedriger FlieĂkommaprĂ€zision, wie 'min16float', wurde hinzugefĂŒgt.
- Die UnterstĂŒtzung fĂŒr Direct3D Shader Model 1/2/3 Profile wurde erheblich verbessert.
- Eine öffentliche API zur Analyse (vkd3d_shader_parse_dxbc) und Serialisierung (vkd3d_shader_serialize_dxbc) von DXBC-BinĂ€rdaten wurde hinzugefĂŒgt.
Quelle: opennet.ru
