Wine-projektet har publicerat releasen av vkd3d 1.5-paketet med en implementering av Direct3D 12 som fungerar genom att sända anrop till Vulkans grafik-API. Paketet innehåller libvkd3d-bibliotek med implementeringar av Direct3D 12, libvkd3d-shader med en översättare av shader-modellerna 4 och 5 och libvkd3d-utils med funktioner för att förenkla porteringen av Direct3D 12-applikationer, samt en uppsättning demoexempel, inklusive en port av glxgears till Direct3D 12. Projektkoden distribueras licensierad under LGPLv2.1.
Libvkd3d-biblioteket stöder de flesta Direct3D 12-funktioner, inklusive grafik och datorfaciliteter, köer och kommandolistor, handtag och heap-handtag, rotsignaturer, out-of-order access, Samplers, kommandosignaturer, rotkonstanter, indirekt rendering, Rensa metoder *( ) och Copy*().
I libvkd3d-shader implementeras översättningen av bytekod för shadermodellerna 4 och 5 till en mellanliggande SPIR-V-representation. Stöder vertex, pixel, tessellation, beräkning och enkel geometriskuggning, rotsignaturserialisering och deserialisering. Shader-instruktioner inkluderar aritmetiska, atom- och bitoperationer, jämförelse- och dataflödeskontrolloperatörer, sampla, samla och ladda instruktioner, oordnade åtkomstoperationer (UAV, Unordered Access View).
I den nya versionen:
- Många förbättringar har gjorts av shaderkompilatorn i High-Level Shader Language (HLSL), som tillhandahållits sedan DirectX 9.0. Dessa inkluderar förbättrat stöd för HLSL-objekttyper som Texture2D i strukturer och arrayer, utökat stöd för de inbyggda funktionerna dot(), ldexp() och lerp(), stöd för de logiska operatorerna "och", "eller" och "inte" för shadermodellerna 4 och 5, samt möjligheten att använda booleska typer.
- Implementerade alternativet VKD3D_SHADER_COMPILE_OPTION_TYPED_UAV för att läsa in den oordnade åtkomstrepresentationen (UAV) för SPIR-V flerkomponentformat (DXGI_FORMAT).
Källa: opennet.ru
