Po letu in pol razvoja je projekt Wine objavil izdajo paketa vkd3d 1.3 z implementacijo Direct3D 12, ki deluje preko prevajanja klicev v grafični API Vulkan. Paket vključuje knjižnice libvkd3d z implementacijo Direct3D 12, libvkd3d-shader s prevajalnikom modelov shaderjev 4 in 5 ter libvkd3d-utils z funkcijami za poenostavitev prenašanja aplikacij Direct3D 12, pa tudi niz prikaznih primerov, vključno s prenosom glxgears na Direct3D 12. Koda projekta je distribuirana pod licenco LGPLv2.1.
Knjižnica libvkd3d podpira večino funkcionalnosti Direct3D 12, vključno z orodji za grafiko in izračune, čakalnimi vrstami in seznamom ukazov, opisniki ter kupi opisnikov, koreninskimi podpisi, neurejenim dostopom, Sampler-ji, podpisi ukazov, koreninskimi konstantami, posredno risanjem, metodami Clear*() in Copy*().
V libvkd3d-shader je implementirano prevajanje bajtkode modelov shaderjev 4 in 5 v vmesno predstavitev SPIR-V. Podprti so vrhinski, pikselski, tesselacijski, izračunski in preprosti geometrijski shaderji, serializacija in deserializacija koreninskega podpisa. Iz shader ukazov so implementirane aritmetične, atomske in bitne operacije, operatorji primerjanja in nadzora pretoka podatkov, ukazi sample, gather in load, operacije neurejenega dostopa (UAV, Unordered Access View).
Med najbolj pomembnimi novostmi v Vkd3d 1.3 izstopajo:
- Dodana je začetna podpora za prevajanje in predobdelavo shaderjev v jeziku HLSL (High-Level Shader Language), ki je na voljo od DirectX 9.0.
- Dodana je podpora za nize opisnikov, opredeljenih v modelih shaderjev 5.1.
- Zagotovljena je podpora za operacije s številkami s plavajočo vejico dvojne natančnosti v shaderjih, posredno naslavljanje za tesselacijske shaderje, izvoz šablon iz shaderjev, modifikator shaderjev 'precise' in globalni bariere za vire v pomnilniku.
- Implementirana je možnost disasembleranja shaderjev Direct3D iz bajtkode v asembler predstavitev.
- Dodana je podpora za razčlenitev starega formata bajtkode Direct3D, uporabljenega v modelih shaderjev Direct3D 1, 2 in 3.
- V libvkd3d so dodane možnosti Direct3D 12, kot so koreninske podpisne sheme, števec ogledov z nepovezanim dostopom, logični operatorji združevanja za izhod ter način naslavljanja tekstur mirror_once. Dodana je struktura vkd3d_host_time_domain_info.
Izvor: opennet.ru
