Wine Projekt csomag kiadása a Direct3D 12 megvalósításával, amely a Vulkan grafikus API hívásainak transzlációján keresztül működik. A csomag tartalmazza a libvkd3d könyvtárakat a Direct3D 12 megvalósítással, a libvkd3d-shader-t a 4. és 5. modellek shaderjeinek transzlátorával és a libvkd3d-utils-t a Direct3D 12 alkalmazások portolásának megkönnyítésére, valamint egy sor bemutató példát, beleértve a glxgears Direct3D 12-re portolt változatát. A projekt kódja LGPLv2.1 licenc alatt áll.
libvkd3d könyvtár a Direct3D 12 nagy részének funkcionalitását biztosítja, beleértve a grafikai és számítási eszközöket, a sorokat és parancslistákat, a leírókat és a leíró halmazokat, a gyökér aláírásokat, a rendezetlen hozzáférést, a Samplereket, a parancsok aláírásait, a gyökér konstansokat, a közvetett (indirect) renderelést, a Clear*() és Copy*() módszereket.
A libvkd3d-shader a 4. és 5. modell shaderjeinek bájt-kódját SPIR-V köztes reprezentációvá alakítja. Támogatja a vertex, pixel, tesszeláló, számítási és egyszerű geometriai shader-eket, a gyökér aláírásokat pedig sorosítását és deszerializációját. A shader utasítások közt megvalósultak a matematikai, atomikus és bitműveletek, a összehasonlító operátorok és az adatfolyam-irányítási utasítások, a sample, gather és load utasítások, valamint a rendezetlen hozzáférési műveletek (UAV, Unordered Access View).
A legjelentősebb jellemzők a Vkd3d 1.2-ben:
- A libvkd3d-shader könyvtár használatra készen áll külső projektekben.
- Támogatás a tesszeláló shader-ekhez.
- A gyökér aláírások (vkd3d_serialize_versioned_root_signature() és vkd3d_create_versioned_root_signature_deserializer()) transzlációjára, sorosítására és deszerializációjára.
- Támogatás a folyamatos kimenethez.
- Sok korábban nem elérhető Direct3D 12 funkció megvalósítása, beleértve a multisampling támogatást, az erőforrások foglalását,
a közvetett indexelésű renderelést, pixel shaderek nélküli mélységrenderelést, az erőforrások párhuzamos hozzáférését különböző parancssorok által, valamint a null nézeteket (Null-views). - Új környezeti változók lettek hozzáadva: VKD3D_CONFIG a libvkd3d viselkedésének opcióinak beállításához és VKD3D_VULKAN_DEVICE a Vulkan API-hoz az eszköz felülbírálásához.
- Támogatás került hozzáadásra a shader utasításokhoz, mint például bufinfo,
eval_centroid,
eval_sample_index,
ld2ms,
sample_b,
sample_d,
sample_info,
samplepos.
Forrás: opennet.ru
