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

Das Wine-Projekt hat die Version vkd3d 1.12 veröffentlicht, die die Implementierung von Direct3D 12 enthält, die durch die Übersetzung von Aufrufen in die Vulkan-Grafik-API funktioniert. 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 der Portierung von Direct3D 12-Anwendungen, zusätzlich zu einer Sammlung von Demobeispielen, einschließlich des Ports von glxgears auf Direct3D 12. Der Quellcode 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 Rechenressourcen, Warteschlangen und Befehlslisten, Deskriptoren und Speicher-Deskriptoren, Root-Signaturen, ungeordneter Zugriff, Sampler, Befehls-Signaturen, Root-Konstanten, indirekte Renderings, Clear*()-Methoden und Copy*(). In libvkd3d-shader ist die Übersetzung von Bytecode der Shader-Modelle in das Intermediate Representation SPIR-V implementiert. Unterstützt werden Vertex-, Pixel-, Tessellation-, Compute- und einfache geometrische Shader, sowie die Serialisierung und Deserialisierung von Root-Signaturen. Unter den Shader-Anweisungen sind arithmetische, atomare und bitweise Operationen, Vergleichsoperatoren und Anweisungen zur Steuerung des Datenflusses, die Anweisungen sample, gather und load, sowie Operationen für ungeordneten Zugriff (UAV, Unordered Access View) implementiert.

In der neuen Version:

  • Der HLSL-Compiler hat Unterstützung für die direkte Kompilierung in den Assemblercode von Direct3D-Shadern und Zieltypen von SPIR-V hinzugefügt.
  • Im HLSL-Compiler wurde die Unterstützung für die Profile 1, 2 und 3 der Shader-Modelle verbessert.
  • Für HLSL wurden die eingebauten Funktionen cosh(), determinant(), refract(), sinh() und tanh() implementiert.
  • In libvkd3d wurde die Unterstützung für die Formate DXGI_FORMAT_B5G6R5_UNORM, DXGI_FORMAT_B5G5R5A1_UNORM und DXGI_FORMAT_B4G4R4A4_UNORM hinzugefügt, sofern sie in der bestehenden Vulkan-API-Implementierung unterstützt werden.
  • Die Unterstützung für die Schnittstellen ID3D12ShaderCacheSession und ID3D12Device9 wurde hinzugefügt. In die Schnittstelle ID3D12Device8 wurden die Methoden CreateCommittedResource2(), CreatePlacedResource1(), GetCopyableFootprints1() und GetResourceAllocationInfo2() integriert.
  • Überprüfungsanfragen D3D12_FEATURE_D3D12_OPTIONS14, D3D12_FEATURE_D3D12_OPTIONS15, D3D12_FEATURE_D3D12_OPTIONS16, D3D12_FEATURE_D3D12_OPTIONS17 und D3D12_FEATURE_D3D12_OPTIONS18 wurden implementiert.
  • In libvkd3d-shader wurde experimentelle Unterstützung für die meisten Methoden und Anweisungen der Shader-Modell 6 des DXIL (DirectX Intermediate Language) hinzugefügt.

Quelle: opennet.ru

60GB SSD 8Gb DDR4