Projekt Wine wydał Vkd3d 1.4 z implementacją Direct3D 12

Projekt Wine opublikował wydanie pakietu vkd3d 1.4 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 jest rozpowszechniany na licencji LGPLv2.1.

Biblioteka libvkd3d obsługuje większość funkcji Direct3D 12, w tym obiekty graficzne i obliczeniowe, kolejki i listy poleceń, uchwyty i uchwyty sterty, podpisy 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ługuje moduły cieniujące wierzchołki, piksele, teselację, obliczenia i prostą geometrię, serializację sygnatur głównych i deserializację. 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 nowej wersji:

  • W kompilatorze modułu cieniującego HLSL (High-Level Shader Language) dostępnym od wersji DirectX 9.0 wprowadzono liczne ulepszenia.
  • Zaproponowano nową implementację sterty deskryptorów, wykorzystującą rozszerzenie Vulkan VK_EXT_descriptor_indexing.
  • Dodano nową implementację ogrodzenia opartą na rozszerzeniu Vulkan K_KHR_timeline_semaphore.

Źródło: opennet.ru

Dodaj komentarz