vkd3d ist Wines Direct3D 12-zu-Vulkan-Übersetzungsschicht
Das Wine-Projekt kündigte vor einigen Tagen an Veröffentlichung der neuen Version des Pakets vkd3d 1.11, eine Version, in der Verbesserungen bei der Verwendung von Vulkan-Erweiterungen sowie Supportverbesserungen, neue Funktionen und mehr eingeführt wurden.
Wer sich mit Vkd3d nicht auskennt, sollte wissen, dass es sich hierbei um ein Paket handelt bietet eine Direct3D 12-Implementierung mit Aufrufen der Vulkan-Grafik-API und enthält mehrere Schlüsselbibliotheken. Die libvkd3d-Bibliothek enthält Implementierungen von Direct3D 12 und deckt eine breite Palette von Funktionen ab, darunter Computer und Grafiken, Befehlswarteschlangen und -listen sowie Bezeichner.
Die Bibliothek libvkd3d-shader wird ebenfalls bereitgestellt Dies bietet einen Übersetzer für die Shader-Modelle 4 und 5 in eine SPIR-V-Zwischendarstellung. Diese Bibliothek unterstützt Vertex-, Pixel-, Tessellations-, Berechnungs- und einfache Geometrie-Shader sowie die Serialisierung und Deserialisierung von Root-Signaturen.
Was ist neu in vkd3d 1.11?
Vkd3d 1.11 führt ein Erste Unterstützung für das Kompilieren von Legacy-Direct3D-Bytecode in einer Zwischendarstellung von SPIR-V-Shadern sowie den sErstunterstützung mit dem HLSL p-Compilerzum Erstellen von Effektprofilen.
Eine weitere Verbesserung, die in dieser neuen Version vorgestellt wird, ist die experimentelle Unterstützung für die Kompilierung von DXIL (DirectX-Zwischensprache) in der SPIR-V-Darstellung und bietet neue Optionen für die Entwicklung von Direct3D-Anwendungen. Für diese Funktion muss vkd3d mit der Option „Präprozessor“ kompiliert werden-DVKD3D_SHADER_UNSUPPORTED_DXIL' und gilt als experimentell.
Auch Die Verwendung von Gruppen und Deskriptorsätzen wurde optimiert wenn Erweiterungen verfügbar sind VK_EXT_mutable_descriptor_type und VK_EXT_shader_viewport_index_layer, das bereitgestellt wird, um die Effizienz der Arbeit mit dem Deskriptorpool zu verbessern und das Rendern von Tessellations- und Vertex-Shader-Arrays zu beschleunigen.
Das c wurde implementiertUnterstützung für Standardrahmenfarben wie Schwarz und Weiß und die Methode wurde implementiert GetResourceAllocationInfo1() der ID3D12Device4-Schnittstelle sowie Unterstützung für die Schnittstellen ID3D12Device7 und ID3D12Resource2.
Es werden mehrere neue Funktionsabfragen unterstützt, darunter D3D12_FEATURE_D3D12_OPTIONS6 a D3D12_FEATURE_D3D12_OPTIONS13.
Wurden umgesetzt Neue Build-Optionen: VKD3D_SHADER_COMPILE_OPTION_FEATURE kann verwendet werden für
Geben Sie die in der Zielumgebung verfügbaren Funktionen an VKD3D_SHADER_COMPILE_OPTION_FEATURE_INT64 zeigt die Kompatibilität mit an
die 64-Bit-Ganzzahltypen in der SPIR-Zielumgebung und VKD3D_SHADER_COMPILE_OPTION_FEATURE_FLOAT64 zeigt die Kompatibilität mit an
64-Bit-Gleitkommatypen in der SPIR-V-Zielumgebung.
Der andere Änderungen, die auffallen dieser neuen Version:
- Deskriptoraktualisierungen erfolgen jetzt asynchron in einem internen Arbeitsthread, wodurch die Leistung in Anwendungen verbessert wird, die viele Deskriptoren pro Frame aktualisieren.
- Für den SPIR-V-Zieltyp wurden neue Funktionen hinzugefügt, darunter Unterstützung für global konsistente Out-of-Order-Zugriffsansichten, Thread-Gruppen-Out-of-Order-Zugriffsansichtsbarrieren und mehr.
- Die ID3D12Device7-Schnittstelle wird unterstützt.
- Die für diese Version mindestens erforderliche Version von Vulkan-Headers ist version
1.3.228 - Die ID3D12Resource2-Schnittstelle wird unterstützt.
- Es werden mehrere neue Funktionsabfragen unterstützt:
– D3D12_FEATURE_D3D12_OPTIONS6
– D3D12_FEATURE_D3D12_OPTIONS7
– D3D12_FEATURE_D3D12_OPTIONS8
– D3D12_FEATURE_D3D12_OPTIONS9
– D3D12_FEATURE_D3D12_OPTIONS10
– D3D12_FEATURE_D3D12_OPTIONS11
– D3D12_FEATURE_D3D12_OPTIONS12
– D3D12_FEATURE_D3D12_OPTIONS13 - Die intrinsischen Funktionen acos(), asin(), atan() und atan2() werden bereits unterstützt.
- Explizite Registerzuordnung mit dem Schlüsselwort „register()“.
- Konvertieren von Ganzzahltypen in Gleitkommatypen in den Shader-Modellprofilen 1–3.
Für diejenigen, die mehr darüber erfahren möchten, sollten Sie wissen, dass der Projektcode unter LGPL 2.1 verteilt wird und Sie die Details dieser neuen Version einsehen können im folgenden Link.
Wie installiere ich vkd3d 1.11?
Für daran interessiert, vkd3d installieren zu können Sie müssen wissen, dass sie den Quellcode kompilieren müssen, also müssen wir ihn zuerst beschaffen, es ist wichtig zu erwähnen, dass Vkd3d von SPIRV-Headern und Vulkan-Headern abhängt (>= 1.3.228).
Die Kompilierung ist recht einfach und dazu müssen wir ein Terminal öffnen, in das wir den folgenden Befehl eingeben:
git clone https://gitlab.winehq.org/wine/vkd3d.git
Wir geben den Ordner ein, in den es heruntergeladen wurde, mit:
cd vkd3d
Und wir fahren mit dem Kompilieren fort, indem wir die folgenden Befehle ausführen:
./configure make make install
Si Sie möchten mehr über die Zusammenstellung erfahren von vkd3d können Sie die Details überprüfen dieser Link.