Het Wine-project heeft versie 1.7 van het vkd3d-pakket uitgebracht, met een implementatie van Direct3D 12 die werkt via aanroeptranslaties naar de Vulkan grafische API. Het pakket bevat de libvkd3d-bibliotheken voor de implementatie van Direct3D 12, libvkd3d-shader met een vertaler voor shadermodel 4 en 5, en libvkd3d-utils met functies om het porteren van Direct3D 12-applicaties te vergemakkelijken, evenals een set demonstratie-exemplaren, waaronder de poort van glxgears naar Direct3D 12. De code van het project 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:
- De vooruitgang in het verbeteren van de HLSL (High-Level Shader Language) shadercompiler is voortgezet:
- De mogelijkheid is toegevoegd om gebruikersfuncties aan te roepen en arrays te gebruiken als parameters voor gebruikersfuncties.
- Ondersteuning is toegevoegd voor de parameters SV_DispatchThreadID, SV_GroupID en SV_GroupThreadID.
- Ingebouwde functies zoals all(), distance(), exp(), exp2(), frac(), lit(), reflect(), sin(), cos(), smoothstep(), sqrt(), rsqrt(), step(), transpose() zijn toegevoegd.
- Er is basisondersteuning toegevoegd voor types met lage precisie met zwevendekomma, zoals 'min16float'.
- De ondersteuning voor de shadermodelprofielen Direct3D 1/2/3 is aanzienlijk verbeterd.
- Een publieke API voor het parseren (vkd3d_shader_parse_dxbc) en serialiseren (vkd3d_shader_serialize_dxbc) van binaire DXBC-gegevens is toegevoegd.
Bron: opennet.ru
