Pärast 1,5 aastat arendust on projekt Wine välja andnud vkd3d 1.3 paketi, mis sisaldab Direct3D 12 rakendust, mis töötab Vulkani graafika API kaudu tehtava kõnede teisendusega. Pakett sisaldab libvkd3d teeke Direct3D 12 rakendamiseks, libvkd3d-shader teeki 4. ja 5. taseme shaderite tõlkijaga ja libvkd3d-utils teeki, mis sisaldab funktsioone Direct3D 12 rakenduste portimise lihtsustamiseks, samuti mitmeid demonstratiivseid näiteid, sealhulgas glxgears porti Direct3D 12-le. Projekti kood on litsentseeritud LGPLv2.1 alusel.
Libvkd3d teek toetab enamikku Direct3D 12 omadustest, sealhulgas graafilisi ja arvutusvahendeid, järjekordi ja käskude loendeid, deskriptorite ja virnade deskriptorite haldamist, juurerakendusi, korrastamata juurde pääsemist, sampler'ite haldamist, käskude allkirju, juurkonstantide seadistamist, kaudset (indirect) joonistamist, Clear*() ja Copy*() meetodeid.
libvkd3d-shaderis on teostatud 4. ja 5. mudeli shaderi bytecode'i tõlkimine vahepealsesse SPIR-V esitusse. Toetatakse vertikaalseid, pikslilisi, tesselatsioonilisi, arvutuslikke ja lihtsaid geomeetrilisi shader'e, samuti juurdokumendi seeriat ja deserialiseerimist. Shader'i juhistest on ellu kutsutud arvutus-, atomaar- ja bititegevused, võrdlus- ja andmevoogu juhtivad operaatorid, sample, gather ja load juhised, samuti mittesüsteemse juurdepääsu tegevused (UAV, Unordered Access View).
Vkd3d 1.3 oluliste uuenduste hulka kuuluvad:
- Lisatud põhitoe shaderite kompileerimiseks ja eelprotsessimiseks HLSL (High-Level Shader Language) keeles, mis on saadaval alates DirectX 9.0.
- Lisatud toetust 5.1 mudelis määratletud deskriptorite massiividele.
- Toetatud on kaheflaadi ümberarvutamise operatsioonide teostamine shaderites, tesselatsiooniliste shaderite kaudne adresseerimine, stencil'i eksport shaderitest, shader'i modifikaator 'precise' ning globaalsete barjääride toetamine mäluressurssidele.
- Teostatud on Direct3D shaderite dissekveerimise võimalus bytecode'ist assembleri esitusse.
- Lisatud on toetuse parsimiseks vana bytecode'i formaadi jaoks, mida kasutatakse Direct3D 1, 2 ja 3 varjundimudelite puhul.
- libvkd3d on lisatud Direct3D 12 funktsioonid, nagu juur-sigareerimised, vaatehulkade loendurid, loogilised sulandumisse operaatorid väljundiks ja tekstuuride aadressimisrežiim mirror_once. Lisatud on vkd3d_host_time_domain_info struktuur.
Allikas: opennet.ru
