Projekti Wine publikoi versionin e paketës vkd3d 1.16 me implementimin e Direct3D 12, e cila funksionon përmes transkription të thirrjeve në API-në grafike Vulkan. Paketa përfshin bibliotekat libvkd3d me implementimin e Direct3D 12, libvkd3d-shader me transkriterin për modelet e shaderëve 4 dhe 5 dhe libvkd3d-utils me funksione për të lehtësuar portimin e aplikacioneve Direct3D 12, si dhe një grup shembujsh demonstrues, duke përfshirë portimin e glxgears në Direct3D 12. Kodi i projektit shpërndahet nën licencën LGPLv2.1.
Biblioteka libvkd3d mbështet shumicën e mundësive të Direct3D 12, duke përfshirë mjete për grafikën dhe llogaritjet, radhët dhe listat e komandave, deskriptorët dhe deskriptorët e kupës, nënshkrimet rrënjësore, aksesin e paorganizuar, Sampler-at, nënshkrimet e komandave, konstantet rrënjësore, vizatimin indirekt, metodet Clear*() dhe Copy*(). Në libvkd3d-shader është realizuar translacioni i kodit bajt të modeleve të shenjuesve në përfaqësimin e ndërmjetëm SPIR-V. Përkrahen shenjuesit e nyjave, pikselit, tessellation, llogaritës dhe geometrikët e thjeshtë, si dhe serializimi dhe deserializimi i nënshkrimit rrënjësor. Nga instrukcionet e shenjuesve janë realizuar operacione aritmetike, atomike dhe bitore, operatorët e krahasimit dhe të kontrollit të fluksit të transmetimit të të dhënave, instrukcionet sample, gather dhe load, si dhe operacionet e aksesit të paorganizuar (UAV, Unordered Access View).
Në këtë version të ri:
- U stabilizua dhe u përfshi si standard mbështetja për shaderët DXIL (DirectX Intermediate Language).
- Në kompilatorin e gjuhës së shaderëve HLSL u shtua mbështetje fillestare për shaderët gjeometrikë. Për modelet e shaderëve 1, 2, 3 është implementuar mbështetje për adresim të tërthortë, module dhe kufizime të vlerave.
- Në bibliotekën libvkd3d u shpall mbështetje për modelin e shaderëve 6.0. Në ndërfaqen e programit ID3D12Device1 është implementuar metoda SetEventOnMultipleFenceCompletion(). U shtua mbështetje për zgjerimin Vulkan VK_KHR_zero_initialize_workgroup_memory për inicializimin e memories me zero për shaderët. Në numër u përfshi zgjerimi Vulkan VK_KHR_maintenance2, i propozuar në specifikimin Vulkan 1.1.
- U shtua mbështetje për disasembimin e shaderëve SPIR-V dhe efekteve binarë "fx_2_0".
- U shtua mbështetje eksperimentale për adresimin e tërthortë të bufferëve të përhershëm në GLSL (Gjuha e Shaderëve OpenGL).
- Në implementimin e gjuhës së shaderëve MSL (Gjuha e Shaderëve Metal), e cila përdoret nga Apple në API-në grafike Metal, u shtua mundësia për të ngarkuar tekstura.
- U shtua mbështetje për funksione të plota HLSL: AllMemoryBarrier(), AllMemoryBarrierWithGroupSync(), DeviceMemoryBarrier(), DeviceMemoryBarrierWithGroupSync(), GroupMemoryBarrier() dhe GroupMemoryBarrierWithGroupSync().
- U implementuan flagët 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 dhe VKD3D_SHADER_RESOURCE_DATA_UINT.
Burimi: opennet.ru
