Wine-projektet har publicerat version 1.14 av paketet vkd3d med implementering av Direct3D 12, som fungerar genom att översÀtta anrop till grafik-API:et Vulkan. Paketet innehÄller biblioteken libvkd3d med implementation av Direct3D 12, libvkd3d-shader med översÀttare för shader-modeller 4 och 5 samt libvkd3d-utils med funktioner för att underlÀtta portering av Direct3D 12-applikationer, samt en uppsÀttning demonstrationsexempel, inklusive porteringen av glxgears till Direct3D 12. Projektkoden distribueras under LGPLv2.1-licensen.
Biblioteket libvkd3d stöder de flesta funktionerna i Direct3D 12, inklusive verktyg för grafik och berÀkningar, köer och kommandolister, deskriptorer och stapeldeskriptorer, rot-signaturer, osorterad Ätkomst, Sampler-ar, kommandosignaturer, rot-konstanter, indirekt rendering, samt metoderna Clear*() och Copy*(). I libvkd3d-shader har translatörerna för shader-modeller implementerat översÀttning av bytekod till mellankod i SPIR-V. Vertex-, pixel-, tessellations-, compute- och geometriska shaders stöds, liksom serialisering och deserialisering av rot-signaturer. Bland shader-instruktionerna implementeras aritmetiska, atomÀra och bitoperationer, jÀmförelse- och kontrollflödesoperatörer, samt instruktionerna sample, gather och load, och operationerna för osorterad Ätkomst (UAV, Unordered Access View).
I den nya versionen:
- Inledande stöd för shader-sprÄket MSL (Metal Shading Language), som anvÀnds av Apple i grafik-API:et Metal, har lagts till.
- Stöd för disassemblerare för binÀra effekter har implementerats.
- I biblioteket libvkd3 har metoden OMSetDepthBounds() implementerats i grÀnssnittet ID3D12GraphicsCommandList1 för dynamisk Àndring av det tillÄtna djupomrÄdet i Z-bufferten.
- Miljövariabeln VKD3D_CAPS_OVERRIDE har lagts till för att ÄsidosÀtta informationen om tillgÀngliga funktioner som ges till applikationer, sÄsom maximalt stödda funktionsnivÄer och resursbindningar.
- Inledande stöd för tesseleringsshaders har lagts till i implementationen av shader-sprÄket HLSL. Inbyggda funktioner som dst(), f32tof16(), mad(), modf() och sincos() har implementerats. För profilerna 1, 2 och 3 av shader-modeller har stöd för «discard»-operationen lagts till. Stöd för indata-semantik SV_SampleIndex för fragmentshaders och SV_GroupIndex för berÀkningsshaders har tillkommit.
- En stor mÀngd nya instruktioner för shader-sprÄket GLSL har implementerats.
KĂ€lla: opennet.ru
