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

Nach anderthalb Jahren Entwicklungszeit hat das Wine-Projekt die Veröffentlichung des vkd3d 1.3-Pakets mit einer Direct3D 12-Implementierung 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. Vertex-, Pixel-, Tessellations-, Compute- und einfache Geometrie-Shader sowie Root-Signatur-Serialisierung und -Deserialisierung werden unterstützt. Shader-Anweisungen umfassen arithmetische, atomare und Bitoperationen, Vergleichs- und Datenflusskontrolloperatoren, Sample-, Gather- und Load-Anweisungen sowie ungeordnete Zugriffsoperationen (UAV, Unordered Access View).

Zu den bedeutendsten Neuerungen in Vkd3d 1.3 gehören:

  • Erste Unterstützung für das Kompilieren und Vorverarbeiten von Shader in HLSL (High-Level Shader Language) hinzugefügt, verfügbar ab DirectX 9.0.
  • Unterstützung für Arrays von Deskriptoren hinzugefügt, die im 5.1-Shader-Modell definiert sind.
  • Bietet Unterstützung für Gleitkommaoperationen mit doppelter Genauigkeit in Shadern, indirekte Adressierung für Tessellations-Shader, Export von Schablonen aus Shadern, einen „präzisen“ Shader-Modifikator und globale Barrieren für Speicherressourcen.
  • Die Möglichkeit, Direct3D-Shader vom Bytecode in die Assembly-Darstellung zu zerlegen, wurde implementiert.
  • Unterstützung für das Parsen des alten Direct3D-Bytecode-Formats hinzugefügt, das in Direct3D 1-, 2- und 3-Shader-Modellen verwendet wird.
  • libvkd3d fügt Direct3D 12-Funktionen wie Root-Signaturen, Out-of-Order-View-Zähler, logische Zusammenführungsoperatoren für die Ausgabe und den Texturadressierungsmodus „mirror_once“ hinzu. Struktur vkd3d_host_time_domain_info hinzugefügt.

Source: opennet.ru

Kommentar hinzufügen