Projekt Wine zverejnil vydanie balíka vkd3d 1.16 s implementáciou Direct3D 12, ktorá funguje prostredníctvom prevodu volaní do grafického API Vulkan. Balík obsahuje knižnice libvkd3d s implementáciou Direct3D 12, libvkd3d-shader s prevodníkom verzií 4 a 5 shaderov a libvkd3d-utils s funkciami na zjednodušenie portovania aplikácií Direct3D 12, ako aj súbor demonštračných príkladov, vrátane portovania 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, deskriptorov a hromadných deskriptorov, koreňových podpisov, neusporiadaného prístupu, samplerov, podpisov príkazov, koreňových konštánt, nepriamych výkresov, metód Clear*() a Copy*(). V libvkd3d-shader je implementovaný translátor bajtového kódu modelov shaderov do medzivrstvy SPIR-V. Podporované sú vrcholové, pixelové, teselačné, výpočtové a jednoduché geometrické shadery, sérializácia a desérializácia koreňového podpisu. Z inštrukcií shaderov sú implementované aritmetické, atomické a bitové operácie, operátory porovnávania a riadenia toku prenosu údajov, inštrukcie sample, gather a load, operácie neusporiadaného prístupu (UAV, Unordered Access View).
V novej verzii:
- Podpora shaderov DXIL (DirectX Intermediate Language) bola stabilizovaná a zapnutá predvolene.
- Do kompilátora jazyka shaderov HLSL bola pridaná základná podpora geometrických shaderov. Pre shaderové modely 1, 2, 3 bola implementovaná podpora nepriamych adries, modulov a obmedzení hodnôt.
- V knižnici libvkd3d bola deklarovaná podpora shaderového modelu 6.0. V programovom rozhraní ID3D12Device1 bol implementovaný metóda SetEventOnMultipleFenceCompletion(). Bola pridaná podpora Vulkan rozšírenia VK_KHR_zero_initialize_workgroup_memory na inicializáciu pamäte nulami pre shadery. Medzi povinné patrí Vulkan rozšírenie VK_KHR_maintenance2, navrhnuté v špecifikácii Vulkan 1.1.
- Bola pridaná podpora dešifrovania shaderov SPIR-V a binárnych efektov "fx_2_0".
- Bola pridaná experimentálna podpora nepriamych adries konštantných bufferov v GLSL (OpenGL Shading Language).
- Do implementácie jazyka shaderov MSL (Metal Shading Language), ktorý používa spoločnosť Apple v grafickom API Metal, bola pridaná možnosť nahrávania textúr.
- Bola pridaná podpora vstavaných funkcií HLSL: AllMemoryBarrier(), AllMemoryBarrierWithGroupSync(), DeviceMemoryBarrier(), DeviceMemoryBarrierWithGroupSync(), GroupMemoryBarrier() a GroupMemoryBarrierWithGroupSync().
- Boli implementované vlajky 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 a VKD3D_SHADER_RESOURCE_DATA_UINT.
Zdroj: opennet.ru
