Das Wine-Projekt hat Vkd3d 1.7 mit der Implementierung von Direct3D 12 veröffentlicht.

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

60GB SSD 8Gb DDR4