Projekt Wine wydał Vkd3d 1.3 z implementacją Direct3D 12

Po roku i pół prac projekt Wine opublikował wersję pakietu vkd3d 1.3 z implementacją Direct3D 12, działającą poprzez translację wywołań do API graficznego Vulkan. W skład pakietu wchodzą biblioteki libvkd3d z implementacją Direct3D 12, libvkd3d-shader z translatorem shaderów wersji 4 i 5 oraz libvkd3d-utils z funkcjami ułatwiającymi portowanie aplikacji Direct3D 12, a także zestaw przykładowych demon-stracji, w tym port glxgears na Direct3D 12. Kod projektu jest udostępniany na licencji LGPLv2.1.

Biblioteka libvkd3d obsługuje większość funkcji Direct3D 12, w tym źródła do grafiki i obliczeń, kolejki i listy poleceń, deskryptory oraz deskryptory kopii, root signature, dostęp nieuporządkowany, Samplery, sygnatury poleceń, root constants, pośrednie (indirect) renderowanie, metody Clear*() i Copy*().

W libvkd3d-shader zaimplementowano tłumaczenie bajtkodu modeli shaderów 4 i 5 na pośrednią reprezentację SPIR-V. Obsługiwane są shadery wierzchołkowe, pikselowe, tesselacyjne, obliczeniowe oraz proste shadery geometryczne, serializacja i deserializacja głównego podpisu. Spośród instrukcji shaderowych zaimplementowano operacje arytmetyczne, atomowe i bitowe, operatory porównania oraz zarządzania przepływem danych, instrukcje sample, gather oraz load, operacje dostępu nieuporządkowanego (UAV, Unordered Access View).

Wśród najbardziej znaczących nowości w Vkd3d 1.3 wyróżniają się:

  • Dodano wczesne wsparcie dla kompilacji i preprocessingu shaderów w języku HLSL (High-Level Shader Language), dostępnego od DirectX 9.0.
  • Dodano wsparcie dla tablic deskryptorów, zdefiniowanych w modelu shaderów 5.1.
  • Zapewniono wsparcie dla operacji z podwójną precyzją w shaderach, pośredniego adresowania dla shaderów tesselacyjnych, eksportowania stencils z shaderów, modyfikatora shaderów „precise” oraz globalnych barier dla zasobów w pamięci.
  • Zrealizowano możliwość disassembliwania shaderów Direct3D z bytecode do formatu asemblerowego.
  • Dodano wsparcie dla analizy starego formatu bytecode Direct3D, wykorzystywanego w modelach shaderów Direct3D 1, 2 i 3.
  • W libvkd3d dodano takie możliwości Direct3D 12, jak root signatures, liczniki oglądania z dostępem nieuporządkowanym, logiczne operatory łączenia dla wyjścia, tryb adresowania tekstur mirror_once. Dodano strukturę vkd3d_host_time_domain_info.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster