Projekt Wine wydał Vkd3d 1.2 z implementacją Direct3D 12

Projekt Wina opublikowany wydanie pakietu vkd3d 1.2 z implementacją Direct3D 12, która działa poprzez rozgłaszanie wywołań API grafiki Vulkan. Pakiet zawiera biblioteki libvkd3d z implementacjami Direct3D 12, libvkd3d-shader z tłumaczem modeli shaderów 4 i 5 oraz libvkd3d-utils z funkcjami ułatwiającymi przenoszenie aplikacji Direct3D 12, a także zestaw przykładów demonstracyjnych, w tym port glxgears do Direct3D 12. Kod projektu dystrybuowane przez licencjonowany na podstawie LGPLv2.1.

biblioteka libvkd3d obsługuje Większość funkcji Direct3D 12, w tym grafika i możliwości obliczeniowe, kolejki i listy poleceń, uchwyty i uchwyty sterty, sygnatury root, dostęp poza kolejnością, samplery, sygnatury poleceń, stałe root, renderowanie pośrednie, metody Clear*() i Kopiuj*().

W libvkd3d-shader zaimplementowano tłumaczenie kodu bajtowego modeli shaderów 4 i 5 na pośrednią reprezentację SPIR-V. Obsługiwane są moduły cieniujące wierzchołki, piksele, teselacja, obliczenia i prosta geometria, serializacja sygnatur głównych i deserializacja. Instrukcje modułu cieniującego obejmują operacje arytmetyczne, atomowe i bitowe, operatory porównania i kontroli przepływu danych, instrukcje próbkowania, gromadzenia i ładowania, operacje dostępu nieuporządkowanego (UAV, Unordered Access View).

Wśród najważniejszych innowacje w Vkd3d 1.2 podświetlone są następujące elementy:

  • Biblioteka libvkd3d-shader jest gotowa do użycia w projektach innych firm.
  • Obsługa modułu cieniującego teselacji.
  • Obsługa konwersji, serializacji i deserializacji podpisów głównych (vkd3d_serialize_versioned_root_signature() i vkd3d_create_versioned_root_signature_deserializer()).
  • Obsługa wyjścia strumieniowego.
  • Implementacja wielu niedostępnych wcześniej funkcji Direct3D 12, w tym obsługa multisamplingu, rezerwacja zasobów,
    pośrednie renderowanie indeksowane, renderowanie głębi bez shaderów pikseli, jednoczesny dostęp do zasobów z różnych kolejek poleceń, widoki zerowe.

  • Dodano zmienne środowiskowe: VKD3D_CONFIG, aby ustawić opcje zmiany zachowania libvkd3d i VKD3D_VULKAN_DEVICE, aby zastąpić urządzenie dla API Vulkan.
  • Dodano obsługę instrukcji modułu cieniującego bufinfo,
    eval_centroid,
    eval_sample_index,
    ld2ms,
    próbka_b,
    próbka_d,
    przykładowe informacje,
    próbki.

Źródło: opennet.ru

Dodaj komentarz