Po roce a půl vývoje vydal projekt Wine balíček vkd3d 1.3, implementaci Direct3D 12, která funguje na principu překladu volání do grafického API Vulkan. Balíček obsahuje knihovny libvkd3d s implementací Direct3D 12, libvkd3d-shader s překladačem pro modely shaderů 4 a 5 a libvkd3d-utils s funkcemi pro zjednodušení portování aplikací Direct3D 12, a také sadu dem, včetně portu glxgears do 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 zařízení, front a seznamů příkazů, deskriptorů a deskriptorů haldy, kořenových signatur, neuspořádaného přístupu, samplerů, signatur příkazů, kořenových konstant, nepřímého vykreslování a metod Clear*() a Copy*().
libvkd3d-shader implementuje překlad bajtkódu 4 a 5 shader modelů do přechodné reprezentace SPIR-V. Podporuje vertex, pixel, teselaci, výpočet a jednoduchou geometrii shadery, serializaci kořenového podpisu a deserializaci. Aritmetické, atomické a bitové operace, operátory porovnává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) jsou implementovány z instrukcí shaderu.
Mezi nejvýznamnější inovace ve Vkd3d 1.3 patří:
- Přidána počáteční podpora pro kompilaci a předzpracování shaderů v jazyce HLSL (High-Level Shader Language), která je k dispozici od verze DirectX 9.0.
- Přidána podpora pro pole deskriptorů definovaná v Shader Modelu 5.1.
- Je poskytována podpora pro operace s plovoucí desetinnou čárkou s dvojitou přesností v shaderech, nepřímé adresování pro teselační shadery, export šablon ze shaderů, modifikátor shaderu „precise“ a globální bariéry pro paměťové prostředky.
- Byla implementována možnost disassembleru Direct3D shaderů z bajtkódu do reprezentace v assemblerovém formátu.
- Přidána podpora pro parsování starého formátu bytecode Direct3D používaného v modelech shaderů Direct3D 1, 2 a 3.
- Do knihovny libvkd3d byly přidány funkce Direct3D 12, jako jsou kořenové signatury, neuspořádané čítače zobrazení, logické operátory slučování pro výstup a režim adresování textur mirror_once. Byla přidána struktura vkd3d_host_time_domain_info.
Zdroj: opennet.ru
