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

Das Wine-Projekt hat die Version des Pakets vkd3d 1.11 mit der Implementierung von Direct3D 12 veröffentlicht, 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 einem Übersetzer für Shader der Modellversionen 4 und 5 sowie libvkd3d-utils mit Funktionen zur Vereinfachung der Portierung von Direct3D 12-Anwendungen, und eine Reihe von Demobeispielen, 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 die meisten Funktionen von Direct3D 12, einschließlich Grafik- und Compute-Funktionen, Warteschlangen und Befehlslisten, Deskriptoren und Heap-Deskriptoren, Wurzel-Signaturen, ungeordneten Zugriff, Sampler, Befehls-Signaturen, Wurzel-Konstanten, indirekte Zeichnungen, Clear*()-Methoden und Copy*(). In libvkd3d-shader wurde die Übersetzung von Bytecode der Shader-Modellversionen 4 und 5 in das Intermediate-Format SPIR-V implementiert. Unterstützt werden Vertex-, Pixel-, Tessellations-, Compute- und einfache geometrische Shader, Serialisierung und Deserialisierung von Wurzel-Signaturen. Implementiert sind die arithmetischen, atomaren und Bitoperationen, Vergleichsoperatoren und Steueranweisungen, sowie die Anweisungen sample, gather und load, und Operationen mit ungeordnetem Zugriff (UAV, Unordered Access View).

In der neuen Version:

  • Es wurde eine erste Unterstützung für die Kompilierung von altem Direct3D-Bitcode in das Intermediate-Format SPIR-V hinzugefügt.
  • Im HLSL-Compiler wurde eine erste Unterstützung für die Kompilierung von Direct3D-Effektprofilen ("fx_2_0", "fx_4_0", "fx_4_1" und "fx_5_0") hinzugefügt.
  • Es wurde eine experimentelle Unterstützung für die Kompilierung der Intermediate-Sprache DXIL (DirectX Intermediate Language) in das SPIR-V-Format und die Assembleranweisungen für Direct3D-Shader hinzugefügt.
  • Im HLSL wurde die Unterstützung für die Profile "fx_2_0", "fx_4_0", "fx_4_1" und "fx_5_0" hinzugefügt sowie die Implementierung der eingebauten Funktionen acos(), asin(), atan() und atan2() sichergestellt, und die Unterstützung für Ressourcen "Buffer" bereitgestellt.
  • Es wurde eine Optimierung hinzugefügt, die die Aktualisierung von Deskriptoren im asynchronen Modus ermöglicht, was die Anwendungen beschleunigen kann, die eine große Anzahl von Deskriptoren in jedem Frame aktualisieren.
  • Die Verwendung der Vulkan-Erweiterungen VK_EXT_mutable_descriptor_type und VK_EXT_shader_viewport_index_layer wurde sichergestellt, um die Effizienz der Arbeit mit dem Deskriptorpool zu erhöhen und das Rendern von Arrays von Vertex- und Tessellations-Shadern zu beschleunigen.
  • Unterstützung für die Programmierschnittstellen ID3D12Device7 und ID3D12Resource2 wurde hinzugefügt. Die Methode GetResourceAllocationInfo1() wurde in die Schnittstelle ID3D12Device4 integriert.
  • Unterstützung für die Schnittstellen D3DReflect() und D3DDisassemble() wurde hinzugefügt.
  • Überprüfungsanfragen für D3D12_FEATURE_D3D12_OPTIONS6, D3D12_FEATURE_D3D12_OPTIONS7, D3D12_FEATURE_D3D12_OPTIONS8, D3D12_FEATURE_D3D12_OPTIONS9, D3D12_FEATURE_D3D12_OPTIONS10, D3D12_FEATURE_D3D12_OPTIONS11, D3D12_FEATURE_D3D12_OPTIONS12 und D3D12_FEATURE_D3D12_OPTIONS13 wurden implementiert.
  • Neue Build-Optionen wurden hinzugefügt: VKD3D_SHADER_COMPILE_OPTION_FEATURE, VKD3D_SHADER_COMPILE_OPTION_FEATURE_INT64, VKD3D_SHADER_COMPILE_OPTION_FEATURE_FLOAT64, VKD3D_SHADER_API_VERSION_1_10 und VKD3D_SHADER_SPIRV_EXTENSION_EXT_VIEWPORT_INDEX_LAYER.
  • In den Funktionen D3D12CreateDeviceVKD3D() und D3D12CreateDevice() wurden Vulkan-Erweiterungen wie VK_KHR_android_surface, VK_KHR_wayland_surface, VK_KHR_win32_surface, VK_KHR_xlib_surface, VK_EXT_metal_surface und VK_MVK_ios_surface integriert.

Quelle: opennet.ru

60GB SSD 8Gb DDR4