Projekt Wine opublikował Vkd3d 1.5 z implementacją Direct3D 12

Projekt Wine opublikował wydanie pakietu vkd3d 1.5 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. W tym ulepszona obsługa typów obiektów HLSL, takich jak Tekstura2D w strukturach i tablicach, dodana obsługa wbudowanych funkcji dot(), ldexp() i lerp(), dodana obsługa operatorów logicznych „i”, „lub” dla modeli shaderów 4 i 5 oraz „nie”, a także możliwość rzutowania typów logicznych.
  • Zaimplementowano opcję VKD3D_SHADER_COMPILE_OPTION_TYPED_UAV do ładowania reprezentacji dostępu nieuporządkowanego (UAV) dla wieloczęściowych formatów SPIR-V (DXGI_FORMAT).

Źródło: opennet.ru

Dodaj komentarz