A Wine projekt kiadta a Vkd3d 1.3-t Direct3D 12 implementációval

Másfél éves fejlesztés után a Wine projekt közzétette a vkd3d 1.3-as csomag kiadását Direct3D 12 implementációval, amely a Vulkan grafikus API-nak sugárzott hívásokon keresztül működik. A csomag tartalmaz libvkd3d könyvtárakat Direct3D 12 implementációval, libvkd3d-shader-t a 4-es és 5-ös shader modellek fordítójával és libvkd3d-utils-okat 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ási 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. Csúcs, pixel, tesselláció, számítás és egyszerű geometriai shader, gyökéraláírás szerializálás és deszerializálás támogatott. A Shader utasításai közé tartoznak az 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).

A Vkd3d 1.3 legjelentősebb újításai közé tartoznak a következők:

  • Kezdeti támogatás hozzáadva a shaderek fordításához és előfeldolgozásához HLSL-ben (High-Level Shader Language), amely a DirectX 9.0-tól kezdve biztosított.
  • Hozzáadott támogatás az 5.1-es shader modellben meghatározott leíró tömbökhöz.
  • Támogatja a dupla pontosságú lebegőpontos műveleteket shaderekben, közvetett címzést a tesszelációs shaderek számára, a sablonok exportálását a shaderekből, egy "pontos" shader módosítót és globális akadályokat a memória-erőforrások előtt.
  • Megvalósították azt a képességet, hogy a Direct3D shadereket bájtkódból összeállítás-ábrázolásba lehessen szétszedni.
  • Hozzáadott támogatás a Direct3D 3, 1 és 2 shader modellekben használt régi Direct3D bájtkód formátum elemzéséhez.
  • A libvkd3d olyan Direct3D 12 funkciókat ad hozzá, mint a root aláírások, a nem megfelelő nézetszámlálók, a logikai egyesítési operátorok a kimenethez és a mirror_once textúracímzési mód. Hozzáadott vkd3d_host_time_domain_info struktúra.

Forrás: opennet.ru

Hozzászólás