Wine-projektet har publicerat version 1.5 av paketet vkd3d med implementering av Direct3D 12, som fungerar genom att översätta anrop till grafik-API:et Vulkan. Paketet innehåller biblioteken libvkd3d med implementationen av Direct3D 12, libvkd3d-shader med en översättare för shader-modeller 4 och 5 samt libvkd3d-utils med funktioner för att underlätta portering av applikationer i Direct3D 12, samt ett antal demonstrations exempel, inklusive portering av glxgears till Direct3D 12. Koden för projektet distribueras under LGPLv2.1-licensen.
Biblioteket libvkd3d stöder de flesta funktionerna i Direct3D 12, inklusive verktyg för grafik och beräkningar, köer och kommandolistor, deskriptorer och heap-deskriptorer, rot-signaturer, oordnad åtkomst, samplare, kommandosignaturer, rot-konstanter, indirekt rendering, metoder för Clear*() och Copy*().
I libvkd3d-shader har översättning av bytekod för shader-modeller 4 och 5 implementerats till det mellanliggande formatet SPIR-V. Stöd finns för vertex-, pixel-, tessellations-, compute- och enkla geometriska shaders, samt för serialisering och deserialisering av rot-signaturer. Från shader-instruktionerna har aritmetiska, atomära och bitoperationer, jämförelseoperatorer och flödeskontrollinstruktioner, samt instruktionerna sample, gather och load och olycklig åtkomst (UAV, Unordered Access View) implementerats.
I den nya versionen:
- Många förbättringar har gjorts i kompilatorn för shaders skrivna i HLSL (High-Level Shader Language), tillgänglig sedan DirectX 9.0. Däribland har stödet för objekttyper i HLSL, såsom Texture2D, förbättrats i strukturer och arrayer, stödet för inbyggda funktioner som dot(), ldexp() och lerp() har införts, och för shader modeller 4 och 5 har stöd för logiska operatorer som "and", "or" och "not" lagts till, liksom möjligheten att konvertera booleska typer.
- Alternativet VKD3D_SHADER_COMPILE_OPTION_TYPED_UAV har implementerats för att ladda oordnad åtkomst (UAV) för flerkomponentiga format i SPIR-V (DXGI_FORMAT).
Källa: opennet.ru
