Das Wine-Projekt hat die Version des Pakets vkd3d 1.5 mit der Implementierung von Direct3D 12 veröffentlicht, die über die Umwandlung von Aufrufen in die Grafik-API Vulkan funktioniert. Das Paket enthält die Bibliotheken libvkd3d mit der Implementierung von Direct3D 12, libvkd3d-shader mit einem Übersetzer für Shader der Modelle 4 und 5 sowie libvkd3d-utils mit Funktionen zur Vereinfachung des Portierens von Direct3D 12-Anwendungen, sowie eine Sammlung von Beispiel-Demos, einschließlich des Ports von glxgears auf Direct3D 12. Der Code des Projekts wird unter der Lizenz LGPLv2.1 verbreitet.
Die Bibliothek libvkd3d unterstützt die meisten Funktionen von Direct3D 12, einschließlich Grafik- und Berechnungswerkzeuge, Queues und Befehlslisten, Deskriptoren und Stapel-Deskriptoren, Root-Signaturen, ungeordneten Zugriff, Sampler, Befehlsunterschriften, Root-Konstanten, indirektes Rendering sowie die Methoden Clear*() und Copy*().
In libvkd3d-shader wurde die Umwandlung von Bytecode der Shader-Modelle 4 und 5 in das Intermediate-Format SPIR-V implementiert. Unterstützt werden Vertex-, Pixel-, Tessellierungs-, Compute- und einfache Geometrie-Shader, sowie die Serialisierung und Deserialisierung der Root-Signatur. Von den Shader-Anweisungen wurden arithmetische, atomare und bitweise Operationen, Vergleichsoperatoren und Datenflusskontrollstrukturen, die Anweisungen sample, gather und load sowie die Operationen von ungeordnetem Zugriff (UAV, Unordered Access View) implementiert.
In der neuen Version:
- Es wurden zahlreiche Verbesserungen am HLSL-Shader-Compiler (High-Level Shader Language) vorgenommen, der seit DirectX 9.0 bereitgestellt wird. Darunter hat sich die Unterstützung objektorientierter HLSL-Typen in Strukturen und Arrays verbessert, darunter Texture2D. Zudem wurde die Unterstützung für eingebaute Funktionen wie dot(), ldexp() und lerp() hinzugefügt. Für die Shader-Modelle 4 und 5 wurde die Unterstützung für logische Operatoren wie „and“, „or“ und „not“ sowie die Möglichkeit der Typumwandlung von booleschen Typen hinzugefügt.
- Es wurde die Option VKD3D_SHADER_COMPILE_OPTION_TYPED_UAV für das Laden von ungeordneten Zugriffsansichten (UAV) für mehrkomponentige SPIR-V-Formate (DXGI_FORMAT) implementiert.
Quelle: opennet.ru
