Projekt Wine Release des Pakets mit der Implementierung von Direct3D 12, das durch die Ăbersetzung von Aufrufen in die Grafik-API Vulkan funktioniert. Das Paket umfasst die Bibliotheken libvkd3d mit der Implementierung von Direct3D 12, libvkd3d-shader mit dem Ăbersetzer fĂŒr Shader der Modelle 4 und 5 sowie libvkd3d-utils mit Funktionen zur Vereinfachung der Portierung von Direct3D 12-Anwendungen, sowie ein Set von Demobeispielen, einschlieĂlich des Ports von glxgears auf Direct3D 12. Der Code des Projekts unter LGPLv2.1 lizenziert.
Die Bibliothek libvkd3d deckt die meisten Möglichkeiten von Direct3D 12 ab, einschlieĂlich Grafik- und Berechnungswerkzeuge, Warteschlangen und Befehlslisten, Deskriptoren und Heap-Deskriptoren, Root-Signaturen, ungeordneter Zugriff, Sampler, Befehls-Signaturen, Root-Konstanten, indirekte Rendering-Methoden, Clear*()- und Copy*()-Methoden.
In libvkd3d-shader wurde die Ăbersetzung von Bytecode der Shader-Modelle 4 und 5 in ein Zwischenergebnis vom Typ 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 implementiert, Anweisungen wie sample, gather und load, sowie Operationen des ungeordneten Zugriffs (UAV, Unordered Access View).
Zu den bedeutendsten Merkmalen von Vkd3d 1.2 gehören:
- Die Bereitschaft der Bibliothek libvkd3d-shader zur Verwendung in Drittanbieterprojekten.
- UnterstĂŒtzung fĂŒr Tessellations-Shader.
- UnterstĂŒtzung fĂŒr die Umwandlung, Serialisierung und Deserialisierung von Root-Signaturen (vkd3d_serialize_versioned_root_signature() und vkd3d_create_versioned_root_signature_deserializer()).
- UnterstĂŒtzung fĂŒr Streaming-Ausgaben.
- Implementierung vieler zuvor nicht verfĂŒgbarer Funktionen von Direct3D 12, einschlieĂlich UnterstĂŒtzung fĂŒr Multisampling, Ressourcenreservierung,
indirektes indiziertes Rendering, Tiefenscanning ohne Pixel-Shader, gleichzeitigen Zugriff auf Ressourcen aus verschiedenen Befehlswarteschlangen 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 von Shader-Anweisungen bufinfo,
eval_centroid,
eval_sample_index,
ld2ms,
sample_b,
sample_d,
sample_info,
samplepos.
Quelle: opennet.ru
