Wine-projektet har offentliggjort version 1.7 af vkd3d, som implementerer Direct3D 12 ved hjælp af kaldstranslation til Vulkan grafik-API. Pakken indeholder bibliotekerne libvkd3d med implementeringen af Direct3D 12, libvkd3d-shader med en oversætter til shader-modellerne 4 og 5 samt libvkd3d-utils med funktioner til at forenkle porteringen af Direct3D 12-applikationer, samt en samling demoversioner, inklusive porten af glxgears til Direct3D 12. Koden fra projektet distribueres under LGPLv2.1-licensen.
Biblioteket libvkd3d stöder det flesta funktioner av Direct3D 12, inklusive verktyg för grafik och beräkningar, köer och kommandolistor, deskriptorer och heap-deskriptorer, rotach-signaturer, oordnad åtkomst, samplrar, kommandosignaturer, rotkonstanter, indirekt rendering, Clear*()-metoder och Copy*(). I libvkd3d-shader har översättningen av shaderbytekod för modellerna 4 och 5 implementerats till det intermediära formatet SPIR-V. Stöd för vertex-, pixel-, tessellering-, compute- och passagerade geometriska shaders, samt serialisering och deserialisering av rotach-signatur. Från shaderinstruktionerna har aritmetiska, atomära och bitoperationer, jämförelse- och flödeskontrolloperatorer, sample-, gather- och load-instruktioner, samt operationer för oordnad åtkomst (UAV, Unordered Access View) implementerats.
I den nya versionen:
- Arbejdet med at forbedre HLSL (High-Level Shader Language) shader-kompilatoren fortsætter:
- Muligheden for at kalde brugerdefinerede funktioner og bruge arrays som parametre i brugerdefinerede funktioner er blevet tilføjet.
- Understøttelse af parametrene SV_DispatchThreadID, SV_GroupID og SV_GroupThreadID er blevet tilføjet.
- Indbyggede funktioner som all(), distance(), exp(), exp2(), frac(), lit(), reflect(), sin(), cos(), smoothstep(), sqrt(), rsqrt(), step(), transpose() er blevet tilføjet.
- Indledende støtte for lav-præcise flydende decimaltyper som 'min16float' er blevet tilføjet.
- Støtten til Direct3D shader-modellerne 1/2/3 er blevet væsentligt forbedret.
- En offentlig API til parsning (vkd3d_shader_parse_dxbc) og serialisering (vkd3d_shader_serialize_dxbc) af DXBC binære data er blevet tilføjet.
Källa: opennet.ru
