Projekt Wine Veröffentlichung des Pakets mit der Implementierung von Direct3D 12, die über einen Aufruftranslater zum Vulkan-Grafik-API läuft. Das Paket umfasst die libvkd3d-Bibliotheken mit der Implementierung von Direct3D 12, libvkd3d-shader mit einem Übersetzer für Shader der Versionen 4 und 5 sowie libvkd3d-utils mit Funktionen zur Vereinfachung der Portierung von Direct3D 12-Anwendungen, einschließlich einer Reihe von Demobeispielen, darunter der Port von glxgears auf Direct3D 12. Der Projektcode unter der LGPLv2.1-lizenz.
Die Bibliothek libvkd3d verfügt über die meisten Funktionen von Direct3D 12, einschließlich Grafik- und Compute-Funktionen, Queues und Command Lists, Deskriptoren und Heap-Deskriptoren, Root-Signaturen, ungeordneten Zugriff, Sampler, Command-Signaturen, Root-Konstanten, indirektes Rendering, und die Methoden Clear*() und Copy*().
In libvkd3d-shader wurde die Übersetzung von Bytecode der Shader-Modelle 4 und 5 in die Intermediate Representation SPIR-V implementiert. Unterstützt werden Vertex-, Pixel-, Tessellation-, Compute- und einfache geometrische Shader sowie die Serialisierung und Deserialisierung von Root-Signaturen. Aus den Shader-Anweisungen wurden arithmetische, atomare und bitweise Operationen, Vergleichsoperatoren und Steueranweisungen für den Datenfluss, die Anweisungen sample, gather sowie load und Operationen für unordentlichen Zugriff (UAV, Unordered Access View) implementiert.
Zu den bedeutendsten in Vkd3d 1.2 gehören:
- Die Fertigstellung der Bibliothek libvkd3d-shader für die Verwendung in Drittanbieterprojekten.
- Unterstützung für Tessellation-Shader.
- Unterstützung für die Serialisierung und Deserialisierung von Root-Signaturen (vkd3d_serialize_versioned_root_signature() und vkd3d_create_versioned_root_signature_deserializer()).
- Unterstützung für Streaming.
- Implementierung vieler zuvor nicht verfügbarer Funktionen von Direct3D 12, einschließlich Unterstützung für Multisampling, Ressourcenreservierung,
indirekte indizierte Darstellung, Tiefen-Rendering ohne Pixel-Shader, gleichzeitiger Zugriff auf Ressourcen aus verschiedenen Befehlsschlangen und Nullansichten (Null-Views). - Umgebungsvariablen hinzugefügt: VKD3D_CONFIG zur Festlegung von Optionen zur Änderung des Verhaltens von libvkd3d und VKD3D_VULKAN_DEVICE zur Überschreibung des Geräts für die Vulkan-API.
- Unterstützung für Shader-Anweisungen bufinfo hinzugefügt,
eval_centroid,
eval_sample_index,
ld2ms,
sample_b,
sample_d,
sample_info,
samplepos.
Quelle: opennet.ru
