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
