Projekt Wine zveřejnil vydání balíčku vkd3d 1.7 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ě grafiky a výpočetních zařízení, 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é SPIR-V reprezentace. Podporuje vertex, pixel, teselaci, výpočetní a jednoduché geometrické shadery, serializaci kořenových signatur a deserializaci. Shader instrukce zahrnují 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).
V nové verzi:
- Pokračovala práce na vylepšení kompilátoru shaderů v HLSL (High-Level Shader Language):
- Přidána možnost volat vlastní funkce a používat pole jako parametry vlastních funkcí.
- Přidána podpora pro parametry SV_DispatchThreadID, SV_GroupID a SV_GroupThreadID.
- Přidány vestavěné funkce all(), distance(), exp(), exp2(), frac(), lit(), reflect(), sin(), cos(), smoothstep(), sqrt(), rsqrt () , krok (), transponovat ().
- Přidána počáteční podpora pro typy s plovoucí desetinnou čárkou s nízkou přesností, jako je „min16float“.
- Výrazně vylepšená podpora pro Direct3D 1/2/3 profily shader modelu.
- Přidáno veřejné API pro analýzu (vkd3d_shader_parse_dxbc) a serializaci (vkd3d_shader_serialize_dxbc) binárních dat DXBC.
Zdroj: opennet.ru