Pärast poolteist aastat arendust, avaldas projekt Wine vkd3d 1.3 versiooni, mis rakendab Direct3D 12, toimides läbi kutsete tõlke graafikarakenduse Vulkan. Pakett sisaldab raamatukogusid libvkd3d, mis sisaldab Direct3D 12 rakendust, libvkd3d-shader, mis pakub 4. ja 5. mudeli shaderite tõlki, ning libvkd3d-utils, mis sisaldab funktsioone Direct3D 12 rakenduste portimise lihtsustamiseks, koos näidisnäidetega, sealhulgas glxgearsi portimisega Direct3D 12-le. Projekti kood on litsentseeritud LGPLv2.1 alusel.
Raamatukogu libvkd3d toetab enamikku Direct3D 12 funktsioone, sealhulgas graafika ja arvutamise tööriistu, järjekordi ja käskude loendeid, deskriptorid ja mälu deskriptorid, juurekirjed, korraldava juurdepääsu, samplereid, käskude signatuure, juurekonstantide, kaudse joonistamise, Clear*() ja Copy*() meetodeid.
libvkd3d-shader'is on teostatud 4. ja 5. mudeli shaderi bytecode'i tõlge SPIR-V vahevormiks. Toetatakse vertex, pixel, tessellation, compute ning lihtsaid geomeetrilisi shadereid, juurese signatuuri serialiseerimist ja deserialiseerimist. Shaderite instruktsioonide hulka kuuluvad aritmeetilised, aatomilised ja bititasandi tehingud, võrdlus- ja andmevoo juhtimise operaatorid, instruktsioonid sample, gather ja load, ning mittejärjekindla juurdepääsu (UAV, Unordered Access View) tehingud.
Vkd3d 1.3 kõige olulisemad uuendused on:
- Lisatud algne toetus HLSL (High-Level Shader Language) shaderite kompileerimiseks ja eelnevalt töötlemiseks, mis on saadaval alates DirectX 9.0-st.
- Lisatud toetus 5.1 mudeli shaderites määratletud deskriptorite massiividele.
- Toetatakse kahekordse täppidega ujuvvõrrandite operatsioone shaderites, kaudset adressimist tesselatsiooni shaderites, stencilite eksporti shaderitest, sharderite modifikaatorit "precise" ning globaalset barjääri mälu ressursse.
- Rakendatakse võimalust disassambleerida Direct3D shaderid baitkoodist assembleresitusele.
- Lisatud toetus vana Direct3D baitkoodi formaadi tõlgendamiseks, mis on kasutusel Direct3D 1, 2 ja 3 mudelites.
- Raamatukogule libvkd3d on lisatud Direct3D 12 funktsioonid, nagu juurekirjed, vaate loenduri abil kaudne juurdepääs, loogilised sulandumisoperaatorid väljundile, tekstuuride pideva aadressimise režiim mirror_once. Lisatud on struktuur vkd3d_host_time_domain_info.
Allikas: opennet.ru
