Projekt Wine wydał Vkd3d 1.2 z wdrożeniem Direct3D 12.

Projekt Wine opublikował wydanie pakietu vkd3d 1.2 z implementacją Direct3D 12, działającej poprzez tłumaczenie wywołań do API graficznego Vulkan. Pakiet zawiera biblioteki libvkd3d z implementacją Direct3D 12, libvkd3d-shader z tłumaczem modeli shaderów 4 i 5 oraz libvkd3d-utils z funkcjami ułatwiającymi portowanie aplikacji Direct3D 12, a także zestaw przykładów demonstracyjnych, w tym port glxgears na Direct3D 12. Kod projektu rozpowszechniany jest objęty licencją LGPLv2.1.

Biblioteka libvkd3d wspiera większość funkcji Direct3D 12, w tym narzędzia do grafiki i obliczeń, kolejki i listy poleceń, deskryptory i deskryptory pamięci, podpisy główne, dostęp nieuporządkowany, Sampler-y, podpisy poleceń, stałe główne, pośrednie rysowanie, metody Clear*() oraz 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).

Do najbardziej znaczących nowości w Vkd3d 1.2 wyróżniają się:

  • Gotowość biblioteki libvkd3d-shader do użycia w projektach zewnętrznych.
  • Wsparcie dla shaderów tesselacyjnych.
  • Wsparcie dla konwersji, serializacji i deserializacji głównych podpisów (vkd3d_serialize_versioned_root_signature() oraz vkd3d_create_versioned_root_signature_deserializer()).
  • Wsparcie dla strumieniowego wyjścia.
  • Implementacja wielu wcześniej niedostępnych możliwości Direct3D 12, w tym wsparcie dla multisampling, rezerwacji zasobów,
    pośredniego rysowania indeksowanego, renderowania głębokości bez shaderów pikselowych, równoczesnego dostępu do zasobów z różnych kolejki poleceń, pustych widoków (Null-views).
  • Dodano zmienne środowiskowe: VKD3D_CONFIG do ustawiania opcji zmieniających zachowanie libvkd3d oraz VKD3D_VULKAN_DEVICE do nadpisania urządzenia dla API Vulkan.
  • Dodano wsparcie dla instrukcji shaderowych bufinfo,
    eval_centroid,
    eval_sample_index,
    ld2ms,
    sample_b,
    sample_d,
    sample_info,
    samplepos.

Ź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