Projekt Wine vydal verzi balíčku vkd3d 1.14 s implementací Direct3D 12, která funguje prostřednictvím překladu volání do grafického API Vulkan. Balíček obsahuje knihovny libvkd3d s realizací 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 šířen pod licencí LGPLv2.1.
Knihovna libvkd3d podporuje většinu funkcí Direct3D 12, včetně nástrojů pro grafiku a výpočty, front a seznamů příkazů, popisovačů a popisovačů hromady, kořenových podpisů, neuspořádaného přístupu, Sampler-ů, podpisů příkazů, kořenových konstant, nepřímého (indirect) vykreslování, metod Clear*() a Copy*(). V libvkd3d-shader byla implementována translace bajtkódu modelů shaderů do mezivrstvého formátu SPIR-V. Podporovány jsou vrcholové, pixelové, tesselační, výpočetní a jednoduché geometrické shadery, serializace a deserializace kořenového podpisu. Z instrukcí shaderu byly 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:
- Byla přidána počáteční podpora jazyka shaderů MSL (Metal Shading Language), který je používán společností Apple v grafickém API Metal.
- Byla implementována podpora disassembleru pro binární efekty.
- V knihovně libvkd3 v rozhraní ID3D12GraphicsCommandList1 byla implementována metoda OMSetDepthBounds() pro dynamickou změnu povoleného rozsahu hodnot hloubky v Z-bufru.
- Byla přidána proměnná prostředí VKD3D_CAPS_OVERRIDE pro přepsání informací o dostupných funkcích, které aplikace získávají, jako jsou maximálně podporované úrovně funkčnosti a vazby zdrojů.
- Do implementace jazyka shaderů HLSL byla přidána počáteční podpora tesselačních shaderů. Byly implementovány vestavěné funkce dst(), f32tof16(), mad(), modf() a sincos(). Pro profily modelů shaderů 1, 2 a 3 byla přidána podpora operace „discard“. Byla přidána podpora sémantiky vstupních dat SV_SampleIndex pro fragmentové shadery a SV_GroupIndex pro výpočetní shadery.
- Byla implementována rozsáhlá sada nových instrukcí pro jazyk shaderů GLSL.
Zdroj: opennet.ru
