Pas një vit e gjysmë zhvillimi, projekti Wine publikoi versionin e paketës vkd3d 1.3 me implementimin e Direct3D 12, i cili funksionon përmes translacionit të thirrjeve në API-në grafike Vulkan. Paketa përfshin bibliotekat libvkd3d me implementimin e Direct3D 12, libvkd3d-shader me translatorin e modeleve të shenjave 4 dhe 5, dhe libvkd3d-utils me funksione për të thjeshtuar portimin e aplikacioneve Direct3D 12, si dhe një grup shembujsh demonstrues, përfshirë portimin e glxgears në Direct3D 12. Kodi i projektit shpërndahet nën licencën LGPLv2.1.
Biblioteka libvkd3d mbështet shumicën e funksionaliteteve të Direct3D 12, përfshirë mjete për grafikë dhe llogaritje, radhë dhe lista komandash, skedarë dhe heap, nënshkrime rrënjësore, akses të paqartë, Sampler-a, nënshkrime komandash, konstanta rrënjësore, vizatim indirekt, dhe metodat Clear*() dhe Copy*().
Në libvkd3d-shader është zbatuar përkthimi i kodit të bajtëve të modeleve 4 dhe 5 të shenjuesve në formën ndërmjetëse SPIR-V. Mbështeten shenjuesit e pikave, të dhëmbëve, të tesseluara, llogaritëse dhe gjeometrike të thjeshta, si dhe serializimi dhe deserializimi i nënshkrimit rrënjësor. Nga instruksionet e shenjuesve janë zbatuar operacionet aritmetike, atomike dhe bitore, operatorët e krahasimit dhe kontrollit të rrjedhës së të dhënave, instruksionet sample, gather dhe load, operacionet e qasjes së pakufizuar (UAV, Unordered Access View).
Disa nga novacionet më të rëndësishme në Vkd3d 1.3 janë:
- U shtua mbështetje fillestare për kompilimin dhe përpunimin e shenjave në gjuhën HLSL (High-Level Shader Language), e ofruar që prej DirectX 9.0.
- U shtua mbështetje për array-t e skedarëve, të definuar në modelet e shenjave 5.1.
- U siguruar mbështetje për operacionet me numra me presion të dyfishtë në shenja, adresimin indirekt për shenjat e tesselacionit, eksportimin e stencil-ve nga shenjat, modifikuesin e shenjave "precise" dhe barrierat globale për burimet në memorie.
- U realizua mundësia e disasemblimit të shenjave Direct3D nga bytecode në paraqitjen assembluese.
- U shtua mbështetje për analizimin e formatit të vjetër të bytecode Direct3D, i përdorur në modelet e shenjave Direct3D 1, 2 dhe 3.
- Në libvkd3d u përfshinë funksionalitete të tilla të Direct3D 12, si nënshkrimet rrënjësore, kontablat e shikimit me akses të paqartë, operatorët logjikë të bashkimit për daljet, dhe mënyra e adresimit të teksturave mirror_once. U shtua struktura vkd3d_host_time_domain_info.
Burimi: opennet.ru
