Das Wine-Projekt hat Vkd3d 1.17 mit der Implementierung von Direct3D 12 veröffentlicht.

Das Wine-Projekt hat das Paket vkd3d 1.17 veröffentlicht, welches die Implementierung von Direct3D 12 beinhaltet, die über die Übersetzung von Aufrufen in die Vulkan-Grafik-API funktioniert. Das Paket enthält 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 eine Reihe von Demonstrationsbeispielen, einschließlich des Ports von glxgears auf Direct3D 12. Der Code des Projekts wird unter der LGPLv2.1-Lizenz veröffentlicht.

Die Bibliothek libvkd3d unterstützt einen Großteil der Funktionen von Direct3D 12, einschließlich Grafik- und Berechnungsmittel, Warteschlangen und Befehlslisten, Deskriptoren und Deskriptortabellen, Wurzel-Signaturen, ungeordneten Zugriff, Sampler, Befehls-Signaturen, Wurzel-Konstanten, indirektes Rendering, sowie die Methoden Clear*() und Copy(). In libvkd3d-shader wurde die Übersetzung von Bytecode der Shader-Modelle in die Intermediate Representation SPIR-V implementiert. Es werden Vertex-, Pixel-, Tessellierungs-, Compute- und einfache Geometrie-Shader unterstützt, sowie die Serialisierung und Deserialisierung der Wurzel-Signatur. Zu den Shader-Instruktionen gehören arithmetische, atomare und bitweise Operationen, Vergleichsoperatoren und Kontrollströme, sowie die Instruktionen sample, gather und load und die Operationen des ungeordneten Zugriffs (UAV, Unordered Access View).

In der neuen Version:

  • Die Implementierung der HLSL-Shader-Sprache hat eine erste Unterstützung für den gemeinsamen Speicher von Thread-Gruppen hinzugefügt, die Unterstützung für Geometrie-Shader wurde erweitert und ein Parser für StructuredBuffer-Ressourcen hinzugefügt.
  • Die Entwicklung der MSL (Metal Shading Language), die von Apple in der Metal-Grafik-API verwendet wird, wurde fortgesetzt. Beispielsweise wurde in MSL die Unterstützung für Schleifen, indirekte Adressierung von konstanten Puffern, Textursampling und verschiedene ganzzahlige Rechen- und Vergleichsoperationen hinzugefügt.
  • In der libvkd3d-Bibliothek wurde die Methode EnumerateMetaCommands() in die Implementierung des ID3D12Device5-Schnittstelle integriert.
  • Ein neuer Shader-Typ «tx» (VKD3D_SHADER_SOURCE_TX) wurde hinzugefügt, der zum Laden von Texturverarbeitungsshader verwendet wird.

Quelle: opennet.ru

60GB SSD 8Gb DDR4