Projekt Wine oznámil vydanie balíka vkd3d 1.5 s implementáciou Direct3D 12, ktorá funguje prostredníctvom translácie volaní do grafického API Vulkan. Balík obsahuje knižnice libvkd3d s implementáciou Direct3D 12, libvkd3d-shader s prekladačom shaderov 4. a 5. generácie a libvkd3d-utils s funkciami na zjednodušenie portovania aplikácií Direct3D 12, ako aj sadu ukážkových príkladov vrátane portu glxgears na Direct3D 12. Kód projektu je distribuovaný pod licenciou LGPLv2.1.
Knižnica libvkd3d podporuje väčšinu funkcií Direct3D 12, vrátane nástrojov pre grafiku a výpočty, frontov a zoznamov príkazov, popisovačov a popisovačových hromád, koreňových podpisov, neporadového prístupu, sampleroch, podpisov príkazov, koreňových konštánt, nepriamej (indirect) kresby, metód Clear*() a Copy*().
V libvkd3d-shader je implementovaná translácia bytecode shaderov 4. a 5. generácie do medzivrstvy SPIR-V. Podporujú sa vrcholové, pixelové, tesselačné, výpočtové a jednoduché geometrické shadery, sérializácia a deserializácia koreňového podpisu. Z shaderových inštrukcií sú implementované aritmetické, atomické a bitové operácie, operátory porovnávania a riadenia toku dát, inštrukcie sample, gather a load, operácie neporadového prístupu (UAV, Unordered Access View).
V novej verzii:
- Došlo k mnohým zlepšeniam v kompilátore shaderov v jazyku HLSL (High-Level Shader Language), ktorý je dostupný od DirectX 9.0. Medzi nimi sa vo štruktúrach a poliach zlepšila podpora objektových typov HLSL, ako sú Texture2D, pridala sa podpora zabudovaných funkcií dot(), ldexp() a lerp(), pre 4. a 5. generáciu shaderov bola pridaná podpora logických operátorov „and“, „or“ a „not“, ako aj možnosť typového casting-u pre boolean typy.
- Bola implementovaná možnosť VKD3D_SHADER_COMPILE_OPTION_TYPED_UAV pre načítanie neporadového prístupu (UAV) pre viackomponentové formáty SPIR-V (DXGI_FORMAT).
Zdroj: opennet.ru
