Het Wine-project heeft een releasepakket van vkd3d 1.11 gepubliceerd met de implementatie van Direct3D 12, werkend via de vertaling van oproepen naar de grafische API Vulkan. Het pakket bevat de libraries libvkd3d met de implementatie van Direct3D 12, libvkd3d-shader met een vertaler voor shader-modellen 4 en 5, en libvkd3d-utils met functies voor het vergemakkelijken van de portering van Direct3D 12-applicaties, evenals een set demonstratievoorbeelden, waaronder de port van glxgears naar Direct3D 12. De projectcode wordt verspreid onder de LGPLv2.1-licentie.
De library libvkd3d ondersteunt het merendeel van de mogelijkheden van Direct3D 12, inclusief middelen voor graphics en berekeningen, wachtrijen en commandolijsten, descriptors en heap-descriptors, root-signatures, ongeordende toegang, Samplers, command-signatures, root-constants, indirecte rendering, Clear*() en Copy*() methoden. In libvkd3d-shader is de vertaling van bytecode van shader-modellen 4 en 5 naar de tussenliggende representatie SPIR-V geïmplementeerd. Er worden vertex-, pixel-, tessellatie-, compute- en eenvoudige geometrische shaders ondersteund, evenals de serialisatie en deserialisatie van root-signatures. Van de shader-instructies zijn rekenkundige, atomische en bitbewerkingen, vergelijkings- en datastroombeheersingsoperatoren, instructies sample, gather en load, en ongeordende toegang (UAV, Unordered Access View) geïmplementeerd.
In de nieuwe versie:
- Initiële ondersteuning voor het compileren van oude Direct3D bytecode naar de tussenliggende representatie van SPIR-V is toegevoegd.
- De HLSL-compiler heeft initiële ondersteuning voor het compileren van Direct3D effectprofielen (‘fx_2_0’, ‘fx_4_0’, ‘fx_4_1’ en ‘fx_5_0’) gekregen.
- Experimentiële ondersteuning voor het compileren van de tussenliggende taal DXIL (DirectX Intermediate Language) naar SPIR-V representatie en assemblerinstructies voor Direct3D shaders is toegevoegd.
- In HLSL is ondersteuning toegevoegd voor de profielen 'fx_2_0', 'fx_4_0', 'fx_4_1' en 'fx_5_0', evenals ingebouwde functies zoals acos(), asin(), atan() en atan2(), en zijn ‘Buffer’ resources ondersteund.
- Een optimalisatie is toegevoegd die de update van descriptors in asynchrone modus uitvoert, wat kan leiden tot versnelde applicaties die een groot aantal descriptors in elke frame bijwerken.
- Ondersteuning voor de Vulkan-extensies VK_EXT_mutable_descriptor_type en VK_EXT_shader_viewport_index_layer is geboden om de efficiëntie van het werken met de descriptorpool te verbeteren en de rendering van arrays van vertex- en tessellatieshaders te versnellen.
- Ondersteuning voor de interfaces ID3D12Device7 en ID3D12Resource2 is toegevoegd. De interface ID3D12Device4 heeft de methode GetResourceAllocationInfo1() gekregen.
- Ondersteuning voor de interfaces D3DReflect() en D3DDisassemble() is toegevoegd.
- Validatieverzoeken 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 en D3D12_FEATURE_D3D12_OPTIONS13 zijn geïmplementeerd.
- Nieuwe bouwopties zijn toegevoegd: VKD3D_SHADER_COMPILE_OPTION_FEATURE, VKD3D_SHADER_COMPILE_OPTION_FEATURE_INT64, VKD3D_SHADER_COMPILE_OPTION_FEATURE_FLOAT64, VKD3D_SHADER_API_VERSION_1_10 en VKD3D_SHADER_SPIRV_EXTENSION_EXT_VIEWPORT_INDEX_LAYER.
- In de functies D3D12CreateDeviceVKD3D() en D3D12CreateDevice() zijn Vulkan-extensies toegepast: VK_KHR_android_surface, VK_KHR_wayland_surface, VK_KHR_win32_surface, VK_KHR_xlib_surface, VK_EXT_metal_surface en VK_MVK_ios_surface.
Bron: opennet.ru
