Projekt Wine opublikował Vkd3d 1.7 z implementacją Direct3D 12

Projekt Wine opublikował wydanie pakietu vkd3d 1.7 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 funkcje 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:

  • Kontynuowano prace nad udoskonaleniem kompilatora shaderów w HLSL (High-Level Shader Language):
    • Dodano możliwość wywoływania funkcji niestandardowych i używania tablic jako parametrów funkcji niestandardowych.
    • Dodano obsługę parametrów SV_DispatchThreadID, SV_GroupID i SV_GroupThreadID.
    • Dodano wbudowane funkcje all(), Distance(), exp(), exp2(), frac(), lit(),flect(), sin(), cos(), smoothstep(), sqrt(), rsqrt () , krok(), transpozycja().
    • Dodano początkową obsługę typów zmiennoprzecinkowych o niskiej precyzji, takich jak „min16float”.
  • Znacząco ulepszona obsługa profili modeli shaderów Direct3D 1/2/3.
  • Dodano publiczne API do analizowania (vkd3d_shader_parse_dxbc) i serializacji (vkd3d_shader_serialize_dxbc) danych binarnych DXBC.

Źródło: opennet.ru

Dodaj komentarz