Das Wine-Projekt hat Vkd3d 1.2 mit Direct3D 12-Implementierung veröffentlicht

Weinprojekt опубликовал Paketfreigabe vkd3d 1.2 mit einer Direct3D 12-Implementierung, die durch Broadcasting-Aufrufe an die Vulkan-Grafik-API funktioniert. Das Paket enthält libvkd3d-Bibliotheken mit Implementierungen von Direct3D 12, libvkd3d-shader mit einem Übersetzer der Shader-Modelle 4 und 5 und libvkd3d-utils mit Funktionen zur Vereinfachung der Portierung von Direct3D 12-Anwendungen sowie eine Reihe von Demobeispielen, einschließlich einer Portierung von glxgears zu Direct3D 12. Projektcode vertrieben von lizenziert unter LGPLv2.1.

libvkd3d-Bibliothek unterstützt die Die meisten Funktionen von Direct3D 12, einschließlich Grafik- und Rechenfunktionen, Warteschlangen und Befehlslisten, Handles und Heap-Handles, Root-Signaturen, Out-of-Order-Zugriff, Sampler, Befehlssignaturen, Root-Konstanten, indirektes Rendering, Clear*()-Methoden und Copy*().

In libvkd3d-shader ist die Übersetzung des Bytecodes der Shader-Modelle 4 und 5 in eine SPIR-V-Zwischendarstellung implementiert. Vertex-, Pixel-, Tessellations-, Compute- und einfache Geometrie-Shader sowie Root-Signatur-Serialisierung und -Deserialisierung werden unterstützt. Shader-Anweisungen umfassen arithmetische, atomare und Bitoperationen, Vergleichs- und Datenflusskontrolloperatoren, Sample-, Gather- und Load-Anweisungen sowie ungeordnete Zugriffsoperationen (UAV, Unordered Access View).

Zu den bedeutendsten Innovationen In Vkd3d 1.2 wird Folgendes hervorgehoben:

  • Die libvkd3d-shader-Bibliothek ist für den Einsatz in Drittprojekten bereit.
  • Tessellation-Shader-Unterstützung.
  • Unterstützung für Konvertierung, Serialisierung und Deserialisierung von Root-Signaturen (vkd3d_serialize_versioned_root_signature() und vkd3d_create_versioned_root_signature_deserializer()).
  • Unterstützung für Streaming-Ausgabe.
  • Implementierung vieler bisher nicht verfügbarer Direct3D 12-Funktionen, einschließlich Unterstützung für Multisampling, Ressourcenreservierung,
    indirektes indiziertes Rendering, Tiefenrendering ohne Pixel-Shader, gleichzeitiger Zugriff auf Ressourcen aus verschiedenen Befehlswarteschlangen, Null-Ansichten.

  • Umgebungsvariablen hinzugefügt: VKD3D_CONFIG zum Festlegen von Optionen zum Ändern des libvkd3d-Verhaltens und VKD3D_VULKAN_DEVICE zum Überschreiben des Geräts für die Vulkan-API.
  • Unterstützung für Bufinfo-Shader-Anweisungen hinzugefügt,
    eval_centroid,
    eval_sample_index,
    ld2ms,
    probe_b,
    sample_d,
    sample_info,
    Beispielpos.

Source: opennet.ru

Kommentar hinzufügen