Projekt Wine opublikował wydanie pakietu vkd3d 1.7 z implementacją Direct3D 12, działającą poprzez tłumaczenie wywołań w graficzny API Vulkan. W skład pakietu wchodzą biblioteki libvkd3d z realizacją Direct3D 12, libvkd3d-shader z translatory modelu 4 i 5 shaderów oraz libvkd3d-utils z funkcjami upraszczającymi portowanie aplikacji Direct3D 12, a także zestaw przykładów demonstrujących, w tym port glxgears na Direct3D 12. Kod projektu jest rozpowszechniany na licencji LGPLv2.1.
Biblioteka libvkd3d obsługuje większość funkcji Direct3D 12, w tym narzędzia do grafiki i obliczeń, kolejki i listy poleceń, deskryptory i deskryptory sterty, sygnatury korzeni, dostęp nieuporządkowany, Samplery, sygnatury poleceń, stałe korzeniowe, niebezpośrednie rysowanie, metody Clear*() i Copy*(). W libvkd3d-shader zaimplementowano translację kodu bajtowego modeli shaderów w wersji 4 i 5 do pośredniej reprezentacji SPIR-V. Obsługiwane są shadery wierzchołkowe, pikselowe, tesselacyjne, obliczeniowe i proste shadery geometryczne, a także serializacja i deserializacja sygnatury korzeniowej. Z instrukcji shaderowych zaimplementowano operacje arytmetyczne, atomowe i bitowe, operatory porównania oraz sterowania przepływem danych, instrukcje sample, gather i load oraz operacje dostępu nieuporządkowanego (UAV, Unordered Access View).
W nowej wersji:
- Kontynuowano prace nad ulepszaniem kompilatora shaderów w języku HLSL (High-Level Shader Language):
- Dodano możliwość wywoływania funkcji użytkownika i używania tablic jako parametrów funkcji użytkownika.
- Dodano wsparcie dla parametrów SV_DispatchThreadID, SV_GroupID i SV_GroupThreadID.
- Dodano funkcje wbudowane: all(), distance(), exp(), exp2(), frac(), lit(), reflect(), sin(), cos(), smoothstep(), sqrt(), rsqrt(), step(), transpose().
- Dodano wstępne wsparcie dla typów niskiej precyzji zmiennoprzecinkowej, takich jak „min16float”.
- Znacznie poprawiono wsparcie dla profili modeli shaderów Direct3D 1/2/3.
- Dodano publiczne API do analizy (vkd3d_shader_parse_dxbc) i serializacji (vkd3d_shader_serialize_dxbc) danych binarnych DXBC.
Źródło: opennet.ru
