A Wine projekt közzétette a vkd3d 1.7-ös csomag kiadását a Direct3D 12 implementációjával, amely a Vulkan grafikus API-hoz küldött hívásokon keresztül működik. A csomag tartalmazza a libvkd3d könyvtárakat Direct3D 12 megvalósításával, a libvkd3d-shader-t a 4-es és 5-ös shader modellek fordítójával és a libvkd3d-utilokat a Direct3D 12 alkalmazások portolását egyszerűsítő funkciókkal, valamint egy sor bemutató példát, beleértve a portot. glxgears-ből Direct3D-re 12. A projektkód LGPLv2.1 licenc alatt kerül terjesztésre.
A libvkd3d könyvtár támogatja a legtöbb Direct3D 12 szolgáltatást, beleértve a grafikus és számítástechnikai lehetőségeket, a várólisták és parancslisták, leírók és kupac leírók, gyökér aláírások, renden kívüli hozzáférés, mintavevők, parancs aláírások, gyökérkonstansok, közvetett renderelés, Clear metódusok *( ) és Másolás*(). A libvkd3d-shaderben a 4-es és 5-ös shader-modell bájtkódjának fordítása egy köztes SPIR-V reprezentációra valósul meg. Támogatja a vertex, pixel, tessellation, számítási és egyszerű geometriai shadereket, gyökér aláírások szerializálását és deszerializálását. A Shader utasításai között szerepelnek aritmetikai, atomi és bitműveletek, összehasonlító és adatfolyam-vezérlő operátorok, mintavételezési, gyűjtési és betöltési utasítások, rendezetlen hozzáférési műveletek (UAV, Unordered Access View).
Az új verzióban:
- Folytatódott a munka a shader fordító fejlesztésén a HLSL-ben (High-Level Shader Language):
- Hozzáadtuk az egyéni függvények meghívásának és tömbök paraméterkénti használatát az egyéni függvényekhez.
- Támogatás hozzáadva az SV_DispatchThreadID, SV_GroupID és SV_GroupThreadID paraméterekhez.
- Hozzáadott beépített függvények all(), distance(), exp(), exp2(), frac(), lit(), reflekt(), sin(), cos(), smoothstep(), sqrt(), rsqrt () , step(), transzponál().
- Kezdeti támogatás hozzáadva az alacsony pontosságú lebegőpontos típusokhoz, mint például a "min16float".
- Jelentősen továbbfejlesztett támogatás a Direct3D 1/2/3 shader modellprofilokhoz.
- Nyilvános API hozzáadva a DXBC bináris adatok elemzéséhez (vkd3d_shader_parse_dxbc) és szerializálásához (vkd3d_shader_serialize_dxbc).
Forrás: opennet.ru