Projekti Wine avaldas paketi vkd3d 1.14, mis sisaldab Direct3D 12 teostust, mis töötab Vulkan graafika API-le kutsumise tõlkimise kaudu. Pakett sisaldab teeke libvkd3d, mis pakuvad Direct3D 12 teostust, libvkd3d-shader koos 4. ja 5. mudeli shaderite tõlkijaga ning libvkd3d-utils funktsioonidega, et lihtsustada Direct3D 12 rakenduste portimist, ning hulga näidisprogramme, sealhulgas glxgears porti Direct3D 12-le. Projekti kood levitatakse LGPLv2.1 litsentsi alusel.
Teek libvkd3d toetab enamikku Direct3D 12 funktsionaalsustest, sealhulgas graafika- ja arvutustöötlusvahendeid, järjekordi ja käskude loendeid, deskriptorid ja mäludeskriptorid, juureseosed, segamata juurdepääs, Sampleri omadused, komandisignatuurid, juurekonstandid, kaudne joonistamine, Clear*() meetodid ja Copy*(). Libvkd3d-shader rakendab shaderite mudelite bytecode tõlget SPIR-V vahevormiks. Toetatakse tipud, pikslid, tesselatsioonid, arvutustööd ja lihtsad geomeetrilised shadereid, juureseose serialiseerimine ja deserialiseerimine. Shaderi juhistes on rakendatud aritmeetilised, atomaarsete ja bititaoliste operatsioonide, võrdlusoperatsioonide ja andmevoo juhtimise operatsioonide instruktsioonid, samuti näidud, kogumid ja laadimisoperatsioonid, segamata juurdepääsu toimingud (UAV, Unordered Access View).
Uues versioonis:
- Lisatud algne tugi shader keelele MSL (Metal Shading Language), mida kasutab Apple oma graafika API-s Metal.
- Teostatud desassembleerija tugi binaarsete efektide jaoks.
- Teegis libvkd3 on ID3D12GraphicsCommandList1 liideses rakendatud meetod OMSetDepthBounds(), et dünaamiliselt muuta lubatud sügavusuuringute vahemik Z-puhvrisse.
- Lisatud keskkonnamuutuja VKD3D_CAPS_OVERRIDE, et ületada programmidele antavat teavet saadaval olevate omaduste kohta, nagu maksimaalselt toetatud funktsionaalsuse tasemed ja ressursside sidumise võimalused.
- HLSL shader keele teostusse on lisatud algne tugi tesselatsiooni shadereile. Rakendatud on sisseehitatud funktsioonid dst(), f32tof16(), mad(), modf() ja sincos(). Shaderi mudelite 1, 2 ja 3 profiilidele on lisatud tugi operatsioonile 'discard'. Lisatud on tugi sisendite semantikale SV_SampleIndex fragment shadereid ja SV_GroupIndex arvutushadereid jaoks.
- Teostatud suur hulk uusi instruktsioone GLSL shader keele jaoks.
Allikas: opennet.ru
