Wine'i projekt avaldas vkd3d 1.7 paketi, mis implementib Direct3D 12, töötades kõnede ülekandmisel Vulkani graafika API-le. Pakett sisaldab teeke libvkd3d, mis pakuvad Direct3D 12 realiseerimist, libvkd3d-shader, mis sisaldab 4. ja 5. genereerimise šedereid, ning libvkd3d-utils, mis sisaldab funktsioone Direct3D 12 rakenduste üleviimise lihtsustamiseks, sealhulgas glxgears'i pordi Direct3D 12-le. Projekti kood levitatakse LGPLv2.1 litsentsi alusel.
Raamatukogu libvkd3d toetab enamikku Direct3D 12 võimalustest, sealhulgas graafika ja arvutamise vahendeid, järjekordi ja käsutamisliste, kirjeldajaid ja kaste, juureretsepte, segamatut juurdepääsu, näidikuid, käsureseptide, juurekonstantide, kaudset joonistamist, Clear*() ja Copy*() meetodeid. libvkd3d-shader'is on rakendatud 4. ja 5. mudeli shaderite bytecode'i tõlge vaheesitusele SPIR-V. Toetatud on tipp-, piksel-, tesselatsioon-, arvutamis- ja lihtsad geomeetrilised shaderid, juureretsepti serialiseerimine ja deserialiseerimine. Shaderi käskude seast on rakendatud aritmeetilised, aatomilised ja bititehteid, võrdlemise ja andmevoo juhtimise operaatorid, käsud sample, gather ja load, segamatu juurdepääsu operatsioonid (UAV, Unordered Access View).
Uues versioonis:
- Tööd jätkatakse HLSL (High-Level Shader Language) šedertõlkijate täiustamiseks:
- Lisa võimalus kutsuda kasutaja funktsioone ja kasutada massiive kasutaja funktsioonide parameetriteks.
- Lisa tugi parameetritele SV_DispatchThreadID, SV_GroupID ja SV_GroupThreadID.
- Lisa sisseehitatud funktsioonid all(), distance(), exp(), exp2(), frac(), lit(), reflect(), sin(), cos(), smoothstep(), sqrt(), rsqrt(), step(), transpose().
- Lisa algeline tugi madala täpsusega ujukoma tüüpidest, nagu "min16float".
- Oluliselt on paranenud Direct3D 1/2/3 šedermudelite profiilide tugi.
- Lisa avalik API DXBC binaarsete andmete parsimiseks (vkd3d_shader_parse_dxbc) ja serialiseerimiseks (vkd3d_shader_serialize_dxbc).
Allikas: opennet.ru
