Projekt Wine vydal verzi balíčku vkd3d 1.17 s implementací Direct3D 12, která funguje prostřednictvím překladů volání do grafického API Vulkan. Balíček obsahuje knihovny libvkd3d s implementací Direct3D 12, libvkd3d-shader s překladačem modelů shaderů 4 a 5 a libvkd3d-utils s funkcemi pro usnadnění portování aplikací Direct3D 12, stejně jako sadu demonstrační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ě prostředků pro grafiku a výpočty, front a seznamů příkazů, popisovačů a haldových popisovačů, kořenových podpisů, neuspořádaného přístupu, samplerů, podpisů příkazů, kořenových konstant, nepřímého vykreslování, metod Clear*() a Copy*(). V libvkd3d-shader je implementován překlad bajtkódu modelů shaderů do mezilehlé reprezentace SPIR-V. Podporovány jsou vrcholové, pixelové, tesselační, výpočetní a prosté geometrické shadery, serializace a deserializace kořenového podpisu. Z instrukcí shaderů jsou implementovány aritmetické, atomové a bitové operace, operátory porovnání a řízení toku dat, instrukce sample, gather a load, operace neuspořádaného přístupu (UAV, Unordered Access View).
V nové verzi:
- Do implementace jazyka shaderů HLSL byla přidána počáteční podpora sdílené paměti skupin vláken, byla rozšířena podpora geometrických shaderů a přidán parser pro prostředky StructuredBuffer.
- Pokračuje vývoj implementace jazyka shaderů MSL (Metal Shading Language), který používá společnost Apple v grafickém API Metal. Například, v MSL byla přidána podpora cyklů, neprůhledného adresování stálých bufferů, vzorkování textur a různých operací celočíselné aritmetiky a porovnání.
- V knihovně libvkd3d do implementace rozhraní ID3D12Device5 byla přidána metoda EnumerateMetaCommands().
- Byl přidán nový typ shaderů „tx“ (VKD3D_SHADER_SOURCE_TX), který se používá k načítání shaderů pro zpracování textur.
Zdroj: opennet.ru
