A Wine projekt közzétette a vkd3d 1.16-os csomagot, amely a Direct3D 12 megvalósítását tartalmazza, működve a Vulkan grafikus API-hívásainak átkonvertálásával. A csomag tartalmazza a Direct3D 12 megvalósítással rendelkező libvkd3d könyvtárakat, a 4 és 5. modell shaderekhez tartozó libvkd3d-shader fordítót, valamint a Direct3D 12 alkalmazások portolását megkönnyítő funkciókat tartalmazó libvkd3d-utils könyvtárat, valamint egy demo példakészletet, beleértve a glxgears Direct3D 12-re portolt változatát. A projekt forráskódját az LGPLv2.1 licenc alatt terjesztik.
A libvkd3d könyvtár a Direct3D 12 legtöbb funkcióját támogatja, beleértve a grafikai és számítási eszközöket, a parancslapokat és parancssorokat, a leírókat és a leíró tömböket, a gyökér aláírásokat, a rendezett hozzáférést, a Sampler-eket, a parancsok aláírásait, a gyökér konstansokat, az indirekt rajzolást, valamint a Clear*() és Copy*() metódusokat. A libvkd3d-shader könyvtárban a shader modellek bájt-kódjának átírása valósult meg SPIR-V köztes formába. Támogatottak a vertex, pixel, tessellációs, számítási és egyszerű geometriai shaderek, a gyökér aláírás szérializációja és deszérializációja. Az árnyékolási utasítások közül megvalósultak a matematikai, atomikus és bit műveletek, az összehasonlító operátorok és az adatáramlás vezérlő utasítások, a sample, gather és load utasítások, az Unordered Access View (UAV) műveletek.
Az új verzióban:
- A DXIL (DirectX Intermediate Language) shaderek támogatása stabilizálva van, és alapértelmezés szerint aktív.
- A HLSL shadel nyelv fordítójához kezdeti támogatás került a geometriai shaderekhez. Az 1, 2, 3-as shader modellekhez megvalósult a közvetett címzés, modulok és a értékek korlátozása.
- A libvkd3d könyvtár bejelentette a 6.0-ás shader modell támogatását. Az ID3D12Device1 interfészben megvalósították a SetEventOnMultipleFenceCompletion() metódust. Hozzáadták a Vulkan VK_KHR_zero_initialize_workgroup_memory kiterjesztés támogatását, amely lehetővé teszi a shaderek memóriájának nullával való inicializálását. Kötelezővé tették a Vulkan VK_KHR_maintenance2 kiterjesztést, amely a Vulkan 1.1 specifikációjában szerepel.
- Hozzáadták a SPIR-V shaderek és az fx_2_0 bináris hatások diszasemblálásának támogatását.
- Kísérleti támogatást kaptak a GLSL (OpenGL Shading Language) állandó pufferek közvetett címzése.
- A Metal Shading Language (MSL), amelyet az Apple használ a Metal grafikus API-jában, megkapta a textúrák betöltésének lehetőségét.
- Hozzáadták az alábbi HLSL beépített funkciók támogatását: AllMemoryBarrier(), AllMemoryBarrierWithGroupSync(), DeviceMemoryBarrier(), DeviceMemoryBarrierWithGroupSync(), GroupMemoryBarrier() és GroupMemoryBarrierWithGroupSync().
- Megvalósították a VKD3D_SHADER_COMPILE_OPTION_FEATURE_ZERO_INITIALIZE_WORKGROUP_MEMORY, VKD3D_SHADER_COMPONENT_INT64, VKD3D_SHADER_COMPONENT_FLOAT16, VKD3D_SHADER_COMPONENT_UINT16, VKD3D_SHADER_COMPONENT_INT16, VKD3D_SHADER_RESOURCE_DATA_NONE és VKD3D_SHADER_RESOURCE_DATA_UINT címkéket.
Forrás: opennet.ru
