Efter ett och ett halvt års utveckling har projektet Wine släppt paketversion 1.3 av vkd3d med implementering av Direct3D 12, som fungerar genom att översätta anrop till grafik-API:et Vulkan. Paketet inkluderar biblioteken libvkd3d med implementeringer av Direct3D 12, libvkd3d-shader med en översättare för shader-modeller 4 och 5, samt libvkd3d-utils med funktioner för att förenkla portningen av Direct3D 12-applikationer, samt en uppsättning demonstrations exempel, inklusive portningen av glxgears till Direct3D 12. Koden för projektet distribueras under LGPLv2.1-licensen.
Biblioteket libvkd3d stöder de flesta funktioner i Direct3D 12, inklusive verktyg för grafik och beräkningar, köer och kommandon, deskriptorer och heapedeskriptorer, rot-signaturer, oordnad åtkomst, samplare, kommandosignaturer, rotkonstanter, indirekt rendering, metoder Clear*() och Copy*().
I libvkd3d-shader har sökningen av bytekod för shader-modeller 4 och 5 implementerats till ett mellanliggande format SPIR-V. Vertex-, pixel-, tesselerings-, beräknings- och enkla geometriska shadrar, samt serialisering och deserialisering av rot-signaturer stöds. Bland shader-instruktionerna finns aritmetiska, atomära och bitoperationer, jämförelse- och flödeskontrolloperatorer, instruktioner för sample, gather och load, samt operationer för oordnad åtkomst (UAV, Unordered Access View).
Bland de mest betydande nyheterna i Vkd3d 1.3 finns:
- Inledande stöd för kompilering och förbearbetning av shadere skrivna i HLSL (High-Level Shader Language), som tillhandahålls från och med DirectX 9.0, har lagts till.
- Stöd för arrayer av deskriptorer definierade i shader-modellen 5.1 har lagts till.
- Stöd för operationer med dubbel precision flyttal i shadere, indirekt adressering för tesselerings-shadere, export av stenciler från shadere, modifieraren ’precise’ för shadere och globala barriärer för resurser i minnet har säkerställts.
- Möjligheten att disassemblára Direct3D-shadere från bytekod till assemblerrepresentation har implementerats.
- Stöd för att analysera det gamla formatet för bytekod i Direct3D, som används i shader-modellerna 1, 2 och 3, har lagts till.
- I libvkd3d har funktioner för Direct3D 12, såsom rot-signaturer, räknare för oordnad åtkomst, logiska sammanslagningsoperatorer för utdata, och texturadressiering i läget mirror_once lagts till. Strukturen vkd3d_host_time_domain_info har lagts till.
Källa: opennet.ru
