Projekt Wine objavio je verziju paketa vkd3d 1.11 s implementacijom Direct3D 12, koja radi putem prevođenja poziva u grafički API Vulkan. Paket uključuje biblioteke libvkd3d s implementacijom Direct3D 12, libvkd3d-shader s prevoditeljem modela šejdera 4 i 5 te libvkd3d-utils s funkcijama za pojednostavljenje portiranja aplikacija Direct3D 12, kao i set prikaznih primjera, uključujući port glxgears na Direct3D 12. Kod projekta distribuira se pod licencom LGPLv2.1.
Biblioteka libvkd3d podržava većinu mogućnosti Direct3D 12, uključujući alate za grafiku i izračune, redove i popise naredbi, deskriptore i deskriptore hrpa, korijenske potpisne oblike, neuredni pristup, uzorce, potpisne oblike naredbi, korijenske konstante, neizravno (indirect) iscrtavanje, metode Clear*() i Copy*(). U libvkd3d-shader implementirana je translacija bajtkoda modela šejdera 4 i 5 u međurezultat SPIR-V. Podržani su vertikalni, pikselni, teselacijski, izračunateljski i jednostavni geometrijski šejderi, serijalizacija i deserijalizacija korijene potpisne oblike. Od šejderskih instrukcija implementirane su aritmetičke, atomske i bitne operacije, operatori usporedbe i kontrole toka podataka, instrukcije sample, gather i load, operacije neurednog pristupa (UAV, Unordered Access View).
U novoj verziji:
- Dodavana je osnovna podrška za prevođenje starog bajtkoda Direct3D u međurezultat šejdera SPIR-V.
- U HLSL prevoditelju dodana je osnovna podrška za prevođenje profila efekata Direct3D (‘fx_2_0’, ‘fx_4_0’, ‘fx_4_1’ i ‘fx_5_0’).
- Dodana je eksperimentalna podrška za prevođenje međuzapisa DXIL (DirectX Intermediate Language) u prikaz SPIR-V i asemblerske instrukcije šejdera Direct3D.
- U HLSL dodana je podrška za profile ‘fx_2_0’, ‘fx_4_0’, ‘fx_4_1’ i ‘fx_5_0’, implementirane su ugrađene funkcije acos(), asin(), atan() i atan2(), osigurana je podrška za resurse ‘Buffer’.
- Dodana je optimizacija koja izvršava ažuriranje deskriptora u asinkronom načinu rada, što može dovesti do ubrzanja aplikacija koje ažuriraju veliki broj deskriptora u svakom okviru.
- Osigurana je upotreba Vulkan proširenja VK_EXT_mutable_descriptor_type i VK_EXT_shader_viewport_index_layer za poboljšanje učinkovitosti rada s bazom deskriptora i ubrzanje renderiranja nizova vertikalnih i teselacijskih šejdera.
- Dodana je podrška za sučelja ID3D12Device7 i ID3D12Resource2. U sučelje ID3D12Device4 dodana je metoda GetResourceAllocationInfo1().
- Dodana je podrška za sučelja D3DReflect() i D3DDisassemble().
- Provjera podržava zahtjeve D3D12_FEATURE_D3D12_OPTIONS6, D3D12_FEATURE_D3D12_OPTIONS7, D3D12_FEATURE_D3D12_OPTIONS8, D3D12_FEATURE_D3D12_OPTIONS9, D3D12_FEATURE_D3D12_OPTIONS10, D3D12_FEATURE_D3D12_OPTIONS11, D3D12_FEATURE_D3D12_OPTIONS12, D3D12_FEATURE_D3D12_OPTIONS13.
- Dodane su nove opcije za kompilaciju: VKD3D_SHADER_COMPILE_OPTION_FEATURE, VKD3D_SHADER_COMPILE_OPTION_FEATURE_INT64, VKD3D_SHADER_COMPILE_OPTION_FEATURE_FLOAT64, VKD3D_SHADER_API_VERSION_1_10 i VKD3D_SHADER_SPIRV_EXTENSION_EXT_VIEWPORT_INDEX_LAYER.
- U funkcijama D3D12CreateDeviceVKD3D() i D3D12CreateDevice() uključeni su Vulkan ekstenzije VK_KHR_android_surface, VK_KHR_wayland_surface, VK_KHR_win32_surface, VK_KHR_xlib_surface, VK_EXT_metal_surface i VK_MVK_ios_surface.
Izvor: opennet.ru
