Pas 1.5 vjetësh zhvillimi, projekti Wine publikoi versionin e paketës vkd3d 1.3 me implementimin e Direct3D 12, i cili funksionon përmes përkthimit të thirrjeve në API-në grafike Vulkan. Paketa përmban bibliotekat libvkd3d me implementimin e Direct3D 12, libvkd3d-shader me përkthyesin e modeleve të shenjave 4 dhe 5, dhe libvkd3d-utils me funksione për të lehtësuar portimin e aplikacioneve Direct3D 12, si dhe një grup shembujsh demonstrues, duke përfshirë portin glxgears në Direct3D 12. Kodi i projektit shpërndahet nën licencën LGPLv2.1.
Biblioteka libvkd3d mbështet shumicën e mundësive të Direct3D 12, duke përfshirë mjete për grafikë dhe llogaritje, radhë dhe lista komandash, deskriptora dhe grumbuj deskriptorësh, nënshkrime rrënjësore, qasje jo të renditur, Sampler-e, nënshkrime komandash, konstante rrënjësore, vizatim indirekt, metodat Clear*() dhe Copy*().
Në libvkd3d-shader është implementuar përkthimi i bytecode të modeleve të shenjave 4 dhe 5 në një përfaqësim të ndërmjetëm SPIR-V. Përkrahja për shenjaterat e kulmëve, pikselat, tessellation, llogaritëse dhe shenjaterat e thjeshta, serializimi dhe deserializimi i nënshkrimit rrënjësor. Nga komandat e shenjave janë implementuar operacione aritmetike, atomike dhe bitore, operatorë krahasimi dhe kontrolle të rrjedhës së të dhënave, komandat sample, gather dhe load, operacionet e qasjes së pa renditur (UAV, Unordered Access View).
Disa nga risitë më të rëndësishme në Vkd3d 1.3 janë:
- Mbështetje fillestare për kompilimin dhe përpunimin e shenjave në gjuhën HLSL (High-Level Shader Language), e cila është ofruar që nga DirectX 9.0.
- Mbështetje për grupe deskriptorësh, të definuara në modelet e shenjave 5.1.
- Mbështetje për operacione me numra me njësi të lëvizshme me saktësi të dyfishtë në shenja, qasjen indirekte për shenjat e tessellimit, eksportimin e shabloneve nga shenjat, modifikuesin e shenjave 'precise' dhe barrierat globale për burimet në memorie.
- Implementimi i mundësisë së deisassemble-shenjave Direct3D nga kodi bajt në përfaqësimin e asamblesë.
- Mbështetje për analizimin e formatit të vjetër të kodit bajt Direct3D, e përdorur në modelet e shenjave Direct3D 1, 2 dhe 3.
- Në libvkd3d janë shtuar mundësi të tilla të Direct3D 12 si nënshkrime rrënjësore, numërues pamjesh me qasje jo të renditur, operacione logjike shkrirjeje për daljen, dhe mënyra e adresimit të teksturave mirror_once. Struktura vkd3d_host_time_domain_info është shtuar.
Burimi: opennet.ru
