Wine-projektet har offentliggjort version 1.17 af vkd3d-pakken med implementering af Direct3D 12, som fungerer gennem opkaldstranslation til grafisk API Vulkan. Pakken inkluderer bibliotekerne libvkd3d med implementering af Direct3D 12, libvkd3d-shader med oversætteren til shader-modellerne 4 og 5 samt libvkd3d-utils med funktioner, der forenkler porteringen af Direct3D 12-applikationer, samt et sæt demonstrations-eksempler, herunder porteringen af glxgears til Direct3D 12. Koden til projektet distribueres under licensen LGPLv2.1.
Biblioteket libvkd3d understøtter det meste af funktionaliteterne i Direct3D 12, inklusive værktøjer til grafik og beregninger, køer og kommandolister, deskriptorer og hobe-deskriptorer, rod-signaturer, uordentlig adgang, samplere, kommandosignaturer, rodkonstanter, indirekte tegning, metoderne Clear*() og Copy*(). I libvkd3d-shader er der implementeret oversættelse af shader-modellens bytekode til det mellemliggende format SPIR-V. Støtte til vertex-, pixel-, tesselerings-, beregnings- og enkle geometriske shaderne, serialisering og deserialisering af rod-signatur. Af shader-instruktioner er der implementeret aritmetiske, atomare og bitoperationer, sammenligningsoperatører og kontrolstraumsinstruktioner, samt instruktioner som sample, gather og load, og operationer for uordentlig adgang (UAV, Unordered Access View).
I den nye version:
- Implementeringen af HLSL-shadersproget har fået indledende support til delt hukommelse for gruppe-tråde, udvidet support til geometriske shaders og tilføjet en parser til StructuredBuffer-ressourcer.
- Udviklingen af implementationen af MSL (Metal Shading Language) fortsætter, anvendt af Apple i grafisk API Metal. For eksempel er der tilføjet support til loops, indirekte adressering af konstante buffere, tekstursampling samt forskellige operationer inden for heltalsaritmetik og sammenligning.
- I libvkd3d-biblioteket er der tilføjet metoden EnumerateMetaCommands() i implementeringen af ID3D12Device5 API'et.
- En ny type shaders, "tx" (VKD3D_SHADER_SOURCE_TX), er blevet tilføjet, som bruges til at indlæse teksturbehandlingsshaders.
Kilde: opennet.ru
