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

Das Wine-Projekt hat die Veröffentlichung des Pakets vkd3d 1.7 mit einer Implementierung von Direct3D 12 veröffentlicht, die über Broadcast-Aufrufe an die Vulkan-Grafik-API funktioniert. Das Paket enthält libvkd3d-Bibliotheken mit Implementierungen von Direct3D 12, libvkd3d-shader mit einem Übersetzer der Shader-Modelle 4 und 5 und libvkd3d-utils mit Funktionen zur Vereinfachung der Portierung von Direct3D 12-Anwendungen sowie eine Reihe von Demobeispielen, einschließlich einer Portierung von glxgears auf Direct3D 12. Der Projektcode wird unter LGPLv2.1 lizenziert verteilt.

Die libvkd3d-Bibliothek unterstützt die meisten Direct3D 12-Funktionen, einschließlich Grafik- und Rechenfunktionen, Warteschlangen und Befehlslisten, Handles und Heap-Handles, Root-Signaturen, Out-of-Order-Zugriff, Sampler, Befehlssignaturen, Root-Konstanten, indirektes Rendering, Clear-Methoden *( ) und Copy*(). In libvkd3d-shader ist die Übersetzung des Bytecodes der Shader-Modelle 4 und 5 in eine SPIR-V-Zwischendarstellung implementiert. Unterstützt Vertex-, Pixel-, Tessellations-, Compute- und einfache Geometrie-Shader sowie Root-Signatur-Serialisierung und -Deserialisierung. Shader-Anweisungen umfassen arithmetische, atomare und Bitoperationen, Vergleichs- und Datenflusskontrolloperatoren, Sample-, Gather- und Load-Anweisungen sowie ungeordnete Zugriffsoperationen (UAV, Unordered Access View).

In der neuen Version:

  • Die Arbeit an der Verbesserung des Shader-Compilers in HLSL (High-Level Shader Language) wurde fortgesetzt:
    • Es wurde die Möglichkeit hinzugefügt, benutzerdefinierte Funktionen aufzurufen und Arrays als Parameter für benutzerdefinierte Funktionen zu verwenden.
    • Unterstützung für die Parameter SV_DispatchThreadID, SV_GroupID und SV_GroupThreadID hinzugefügt.
    • Integrierte Funktionen all(), distance(), exp(), exp2(), frac(), lit(),flect(),sin(),cos(),smoothstep(),sqrt(),rsqrt hinzugefügt (), step(), transpose().
    • Anfängliche Unterstützung für Gleitkommatypen mit geringer Genauigkeit wie „min16float“ hinzugefügt.
  • Deutlich verbesserte Unterstützung für Direct3D 1/2/3 Shader-Modellprofile.
  • Öffentliche API zum Parsen (vkd3d_shader_parse_dxbc) und Serialisierung (vkd3d_shader_serialize_dxbc) von DXBC-Binärdaten hinzugefügt.

Source: opennet.ru

Kommentar hinzufügen