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

Das Wine-Projekt hat das Paket vkd3d 1.16 veröffentlicht, das die Direct3D 12-Implementierung über Aufruftransformationen in die Vulkan-Grafik-API ermöglicht. Das Paket umfasst die Bibliotheken libvkd3d mit der Implementierung von Direct3D 12, libvkd3d-shader mit einem Übersetzer für Shader-Modell 4 und 5 sowie libvkd3d-utils mit Funktionen zur Vereinfachung des Portierens von Direct3D 12-Anwendungen, sowie eine Reihe von Beispielanwendungen, darunter den Port von glxgears auf Direct3D 12. Der Code des Projekts wird unter der LGPLv2.1-Lizenz veröffentlicht.

Die libvkd3d-Bibliothek unterstützt die meisten Funktionen von Direct3D 12, einschließlich Grafik- und Compute-Tools, Queues und Command Lists, Deskriptoren und Heap-Deskriptoren, Root-Signaturen, unordentlichen Zugriff, Sampler, Kommando-Signaturen, Root-Konstanten, indirektes Rendering, die Clear*()- und Copy*()-Methoden. In libvkd3d-shader wird die Übersetzung von Shader-Modell-Bitcode in das Intermediate Representation SPIR-V implementiert. Unterstützt werden Vertex-, Pixel-, Tessellation-, Compute- und einfache Geometrie-Shader sowie die Serialisierung und Deserialisierung von Root-Signaturen. Zu den implementierten Shader-Instruktionen gehören arithmetische, atomare und bitweise Operationen, Vergleichs- und Datenflusssteuerungsoperatoren, Sample-, Gather- und Load-Instruktionen sowie unordentlicher Zugriff (UAV, Unordered Access View).

In der neuen Version:

  • Die Unterstützung für DXIL-Shaders (DirectX Intermediate Language) wurde stabilisiert und ist standardmäßig aktiviert.
  • Der HLSL-Shader-Compiler hat eine erste Unterstützung für Geometrieshaders erhalten. Für die Shader-Modelle 1, 2 und 3 wurde Unterstützung für indirekte Adressierung, Module und Wertbeschränkungen implementiert.
  • In der Bibliothek libvkd3d wird Unterstützung für Shader-Modell 6.0 angegeben. Im ID3D12Device1-Interface wurde die Methode SetEventOnMultipleFenceCompletion() implementiert. Unterstützung für die Vulkan-Erweiterung VK_KHR_zero_initialize_workgroup_memory zur Nullinitialisierung des Speichers für Shader wurde hinzugefügt. Außerdem ist die Vulkan-Erweiterung VK_KHR_maintenance2, die in der Vulkan 1.1-Spezifikation vorgeschlagen wurde, jetzt verpflichtend.
  • Unterstützung für das Disassemblieren von SPIR-V-Shadern und binären Effekten „fx_2_0“ wurde hinzugefügt.
  • Experimente zur Unterstützung der indirekten Adressierung von konstanten Buffern in GLSL (OpenGL Shading Language) wurden hinzugefügt.
  • In die Implementierung der MSL (Metal Shading Language), die von Apple in der Grafik-API Metal verwendet wird, wurde die Möglichkeit zur Textur-Ladung integriert.
  • Unterstützung für die eingebauten HLSL-Funktionen: AllMemoryBarrier(), AllMemoryBarrierWithGroupSync(), DeviceMemoryBarrier(), DeviceMemoryBarrierWithGroupSync(), GroupMemoryBarrier() und GroupMemoryBarrierWithGroupSync() wurde hinzugefügt.
  • Die Flags VKD3D_SHADER_COMPILE_OPTION_FEATURE_ZERO_INITIALIZE_WORKGROUP_MEMORY, VKD3D_SHADER_COMPONENT_INT64, VKD3D_SHADER_COMPONENT_FLOAT16, VKD3D_SHADER_COMPONENT_UINT16, VKD3D_SHADER_COMPONENT_INT16, VKD3D_SHADER_RESOURCE_DATA_NONE und VKD3D_SHADER_RESOURCE_DATA_UINT wurden implementiert.

Quelle: opennet.ru

Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster