Wine-projekti on julkaissut vkd3d 1.11 -paketin Direct3D 12 -toteutuksen kanssa, joka toimii lähettämällä kutsuja Vulkan-grafiikkasovellusliittymälle. Paketti sisältää libvkd3d-kirjastoja Direct3D 12 -toteutuksineen, libvkd3d-shaderin Shader-mallien 4 ja 5 kääntäjällä ja libvkd3d-utilit toiminnoilla, jotka yksinkertaistavat Direct3D 12 -sovellusten siirtoa, sekä joukon esimerkkejä, mukaan lukien portti. glxgearsistä Direct3D 12:een. Projektikoodi on jaettu LGPLv2.1-lisenssillä.
Libvkd3d-kirjasto tukee useimpia Direct3D 12 -ominaisuuksia, mukaan lukien grafiikka ja laskentatilat, jonot ja komentoluettelot, kahvat ja kasakahvat, juuriallekirjoitukset, epäjärjestyksessä käyttö, Samplerit, komentoallekirjoitukset, juurivakiot, epäsuora renderöinti, Clear method *( ) ja Kopioi*(). Libvkd3d-shaderissa Shader-mallien 4 ja 5 tavukoodin käännös on toteutettu SPIR-V-väliesityksenä. Tukee vertexiä, pikseliä, tessellaatiota, laskentaa ja yksinkertaisia geometrian varjostimia, juuriallekirjoituksen serialisointia ja deserialisointia. Shader-käskyt sisältävät aritmeettisia, atomi- ja bittioperaatioita, vertailu- ja tietovirran ohjausoperaattoreita, näyte-, keräys- ja latauskäskyjä, järjestämättömät pääsytoiminnot (UAV, Unordered Access View).
Uudessa versiossa:
- Lisätty alustava tuki vanhan Direct3D-tavukoodin kääntämiselle SPIR-V-varjostimien väliesitykseen.
- Lisätty alustava tuki Direct3D-tehosteprofiilien ("fx_2_0", "fx_4_0", "fx_4_1" ja "fx_5_0") kääntämiselle HLSL-kääntäjälle.
- Lisätty kokeellinen tuki DXIL:n (DirectX Intermediate Language) kääntämiselle SPIR-V-esitykseen ja Direct3D-varjostimen kokoonpanoohjeisiin.
- HLSL on lisännyt tuen "fx_2_0", "fx_4_0", "fx_4_1" ja "fx_5_0" profiileille, toteuttanut sisäänrakennetut funktiot acos(), asin(), atan() ja atan2() ja tarjonnut tukea "Bufferille" ”resursseja.
- Lisätty optimointi, joka päivittää kahvat asynkronisesti, mikä voi johtaa nopeampiin sovelluksiin, jotka päivittävät suuren määrän käsittelee joka kehys.
- Vulkan-laajennusten VK_EXT_mutable_descriptor_type ja VK_EXT_shader_viewport_index_layer käyttö parantaa deskriptoripoolin kanssa työskentelyä ja nopeuttaa vertex- ja tessellation-varjostintaulukoiden hahmontamista.
- Lisätty tuki ID3D12Device7- ja ID3D12Resource2-ohjelmaliittymille. GetResourceAllocationInfo3()-menetelmä on lisätty ID12D4Device1-liittymään.
- Lisätty tuki D3DReflect()- ja D3DDisassemble()-liitäntöille.
- Toteutetut testipyynnöt D3D12_FEATURE_D3D12_OPTIONS6 D3D12_FEATURE_D3D12_OPTIONS7, D3D12_FEATURE_D3D12_OPTIONS8, D3D12_FEATURE_D3D12_OPTIONS9, FEETURE_D3D12_3OPTION_12 D10_OPTIONS3, D12D3_FEATURE_D12D11_OPTIONS3, D12D3_FEATURE_D12D12_OPTIONS3.
- Lisätty uusia kokoonpanovaihtoehtoja: VKD3D_SHADER_COMPILE_OPTION_FEATURE, VKD3D_SHADER_COMPILE_OPTION_FEATURE_INT64, VKD3D_SHADER_COMPILE_OPTION_FEATURE_FLOAT64, VKD3D_SHADER_1D_10SPIONS _EXT_VIEWPORT_INDEX_LAYER.
- D3D12CreateDeviceVKD3D()- ja D3D12CreateDevice()-funktiot käyttävät Vulkan-laajennuksia VK_KHR_android_surface, VK_KHR_wayland_surface, VK_KHR_win32_surface, VK_KHR_xlib_surface, VK_MVKsurface_VKsurface ja VK_Surface_metal.
Lähde: opennet.ru
