Projekt Wine publikimi i paketit me implementimin e Direct3D 12, që funksionon përmes përkthimit të thirrjeve në API-në grafike Vulkan. Paketa përfshin bibliotekat libvkd3d me implementimin e Direct3D 12, libvkd3d-shader me përkthyesin e modeleve të shenjave 4 dhe 5 dhe libvkd3d-utils me funksione për të thjeshtuar portimin e aplikacioneve Direct3D 12, si dhe një grup shembujsh demonstrues, duke përfshirë portin glxgears në Direct3D 12. Kodi i projektit nën licencën LGPLv2.1.
Biblioteka libvkd3d ofron shumicën e mundësive të Direct3D 12, duke përfshirë mjete për grafikë dhe llogaritje, radhët dhe listat e komandave, përshkruesit dhe përshkruesit e grumbujve, nënshkrimet rrënjësore, qasje të pa renditur, Samplera, nënshkrimet e komandave, konstantet rrënjësore, vizatimin indirekt, metodat Clear*() dhe Copy*().
Në libvkd3d-shader është implementuar përkthimi i bytecode të modeleve të shenjave 4 dhe 5 në një përfaqësim të ndërmjetëm SPIR-V. Përkrahja për shenjaterat e kulmëve, pikselat, tessellation, llogaritëse dhe shenjaterat e thjeshta, serializimi dhe deserializimi i nënshkrimit rrënjësor. Nga komandat e shenjave janë implementuar operacione aritmetike, atomike dhe bitore, operatorë krahasimi dhe kontrolle të rrjedhës së të dhënave, komandat sample, gather dhe load, operacionet e qasjes së pa renditur (UAV, Unordered Access View).
Mes më të rëndësishmëve në Vkd3d 1.2 spikasin:
- Disponueshmëria e bibliotekës libvkd3d-shader për përdorim në projekte të jashtme.
- Përkrahja për shenjaterat e tessellation.
- Përkrahja për konvertimin, serializimin dhe deserializimin e nënshkrimeve rrënjësore (vkd3d_serialize_versioned_root_signature() dhe vkd3d_create_versioned_root_signature_deserializer()).
- Përkrahja për daljen në rrjedhë.
- Implementimi i shumë mundësive të paqena më parë të Direct3D 12, duke përfshirë mbështetje për multisampling, rezervimin e burimeve,
vizatimin e indeksuar indirekt, renderimin e thellësisë pa shenjaterat e pikselave, qasjen e njëkohshme në burime nga radhë të ndryshme komandash, pamjet nul (Null-views). - Të shtohen variablat e ambientit: VKD3D_CONFIG për vendosjen e opsioneve për të ndryshuar sjelljen e libvkd3d dhe VKD3D_VULKAN_DEVICE për të ri-definuar pajisjen për API Vulkan.
- Shtuar mbështetje për komandat e shenjave bufinfo,
eval_centroid,
eval_sample_index,
ld2ms,
sample_b,
sample_d,
sample_info,
samplepos.
Burimi: opennet.ru
