Projekt Wine opublikował wydanie pakietu vkd3d 1.12 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*(). libvkd3d-shader implementuje tłumaczenie kodu bajtowego modeli shaderów 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:
- Kompilator HLSL został zaktualizowany o obsługę bezpośredniej kompilacji do kodu asemblera shaderów Direct3D i typów docelowych SPIR-V.
- Kompilator HLSL zapewnia lepszą obsługę profili modeli shaderów 1, 2 i 3.
- Wbudowane funkcje dla HLSL obejmują cosh(), determinant(), refract(), sinh() i tanh().
- Dodano obsługę formatów DXGI_FORMAT_B3G5R6_UNORM, DXGI_FORMAT_B5G5R5A5_UNORM i DXGI_FORMAT_B1G4R4A4_UNORM w bibliotece libvkd4d, jeśli są one obsługiwane przez istniejącą implementację interfejsu API Vulkan.
- Dodano obsługę interfejsów ID3D12ShaderCacheSession i ID3D12Device9. Metody CreateCommittedResource3(), CreatePlacedResource12(), GetCopyableFootprints8() i GetResourceAllocationInfo2() zostały dodane do interfejsu ID1D1Device2.
- Zaimplementowano zapytania weryfikacyjne D3D12_FEATURE_D3D12_OPTIONS14, D3D12_FEATURE_D3D12_OPTIONS15, D3D12_FEATURE_D3D12_OPTIONS16, D3D12_FEATURE_D3D12_OPTIONS17 i D3D12_FEATURE_D3D12_OPTIONS18.
- Moduł cieniujący libvkd3d dla języka DXIL (język pośredni DirectX) dodał eksperymentalną obsługę większości metod i instrukcji modułu cieniującego Direct6D Model 3.
Źródło: opennet.ru
