Het Wine-project heeft de release van het vkd3d 1.17-pakket gepubliceerd met de implementatie van Direct3D 12, die via vertalingsoproepen naar de Vulkan-graphics API werkt. Het pakket bevat de libvkd3d-bibliotheken met de implementatie van Direct3D 12, libvkd3d-shader met een vertaler voor shadermodellen 4 en 5, en libvkd3d-utils met functies om de portering van Direct3D 12-applicaties te vergemakkelijken, evenals een set demonstratievoorbeelden, waaronder de poort van glxgears naar Direct3D 12. De code van het project wordt verspreid onder de LGPLv2.1-licentie.
De libvkd3d-bibliotheek ondersteunt het merendeel van de mogelijkheden van Direct3D 12, inclusief middelen voor graphics en berekeningen, wachtrijen en commando-lijsten, descripteurs en heap-descripteurs, root-signaturen, ongeordende toegang, samplers, command-signaturen, root-constanten, indirecte rendering, de Clear*() en Copy*() methoden. In libvkd3d-shader is de vertaling van bytecode van shader-modellen naar de tussenliggende weergave SPIR-V geĆÆmplementeerd. Er worden vertex-, pixel-, tessellation-, compute- en eenvoudige geometrische shaders ondersteund, evenals serialisatie en deserialisatie van root-signaturen. Van de shader-instructies zijn rekenkundige, atomische en bitbewerkingen, vergelijkings- en controleflow-operators, sample-, gather- en load-instructies, en operaties voor ongeordende toegang (UAV, Unordered Access View) geĆÆmplementeerd.
In de nieuwe versie:
- De implementatie van de HLSL-shader-taal heeft initiƫle ondersteuning voor gedeeld geheugen van threadgroepen toegevoegd, de ondersteuning voor geometrische shaders is uitgebreid, en een parser voor StructuredBuffer-resources is toegevoegd.
- De ontwikkeling van de MSL (Metal Shading Language) shader-taal, die door Apple in de Metal-graphics API wordt gebruikt, is voortgezet. Bijvoorbeeld, in MSL is ondersteuning voor lussen, indirecte adressering van constante buffers, textuursampling en verschillende bewerkingen van gehele getallen en vergelijkingen toegevoegd.
- In de libvkd3d-bibliotheek is de methode EnumerateMetaCommands() toegevoegd aan de implementatie van de ID3D12Device5-interface.
- Een nieuw type shader "tx" (VKD3D_SHADER_SOURCE_TX) is toegevoegd, dat wordt gebruikt voor het laden van textuurverwerkingsshaders.
Bron: opennet.ru
