Projekt Wine zveřejnil vydání balíčku vkd3d 1.4 s implementací Direct3D 12, která funguje prostřednictvím vysílání volání do grafického API Vulkan. Balíček obsahuje knihovny libvkd3d s implementacemi Direct3D 12, libvkd3d-shader s překladačem shader modelů 4 a 5 a libvkd3d-utils s funkcemi pro zjednodušení portování aplikací Direct3D 12 a také sadu ukázkových příkladů, včetně portu glxgears na Direct3D 12. Kód projektu je distribuován pod licencí LGPLv2.1.
Knihovna libvkd3d podporuje většinu funkcí Direct3D 12, včetně grafických a výpočetních prostředků, front a seznamů příkazů, ovladačů a ovladačů haldy, kořenových signatur, přístupu mimo pořadí, vzorníků, signatur příkazů, kořenových konstant, nepřímého vykreslování, metod Clear *( ) a Kopírovat*().
V libvkd3d-shader je implementován překlad bajtkódu shader modelů 4 a 5 do přechodné reprezentace SPIR-V. Podporuje vertex, pixel, teselaci, výpočet a jednoduchou geometrii shadery, serializaci kořenového podpisu a deserializaci. Shader instrukce zahrnují aritmetické, atomické a bitové operace, operátory porovnání a řízení toku dat, vzorkování, shromažďování a načítání instrukcí, operace neuspořádaného přístupu (UAV, Unordered Access View).
V nové verzi:
- V kompilátoru shaderu HLSL (High-Level Shader Language) poskytovaného od DirectX 9.0 byla provedena řada vylepšení.
- Byla navržena nová implementace Descriptor Heap s použitím rozšíření Vulkan VK_EXT_descriptor_indexing.
- Přidána nová implementace plotu založená na rozšíření Vulkan K_KHR_timeline_semaphore.
Zdroj: opennet.ru