Projekt Wine opublikował wydanie pakietu vkd3d 1.12 z implementacją Direct3D 12, działającą poprzez tłumaczenie wywołań do API graficznego Vulkan. Paket zawiera biblioteki libvkd3d z implementacją Direct3D 12, libvkd3d-shader z tłumaczem dla modeli szeregów 4 i 5 oraz libvkd3d-utils z funkcjami ułatwiającymi portowanie aplikacji Direct3D 12, a także zestaw przykładów demonstracyjnych, w tym port glxgears na Direct3D 12. Kod projektu jest rozpowszechniany na licencji LGPLv2.1.
Biblioteka libvkd3d wspiera większość funkcji Direct3D 12, w tym narzędzia do grafiki i obliczeń, kolejek i list poleceń, deskryptorów oraz deskryptorów puli, korzeniowe sygnatury, dostęp nieuporządkowany, samplery, sygnatury poleceń, korzeniowe stałe, niebezpośrednie renderowanie oraz metody Clear*() i Copy*(). W libvkd3d-shader zrealizowano translację bajtkodu shaderów do pośredniego reprezentacji SPIR-V. Obsługiwane są shadery wierzchołków, pikseli, tesselacyjne, obliczeniowe oraz proste shadery geometryczne, serializacja i deserializacja korzeniowej sygnatury. Z instrukcji shaderów zaimplementowano operacje arytmetyczne, atomowe i bitowe, operatory porównań oraz sterowania przepływem danych, instrukcje sample, gather i load, operacje dostępu nieuporządkowanego (UAV, Unordered Access View).
W nowej wersji:
- Do kompilatora HLSL dodano wsparcie dla bezpośredniej kompilacji do kodu assemblera dla shaderów Direct3D oraz docelowych typów SPIR-V.
- W kompilatorze HLSL poprawiono wsparcie dla profili modeli shaderów 1, 2 i 3.
- Dla HLSL wdrożono wbudowane funkcje cosh(), determinant(), refract(), sinh() i tanh().
- W libvkd3d dodano wsparcie dla formatów DXGI_FORMAT_B5G6R5_UNORM, DXGI_FORMAT_B5G5R5A1_UNORM oraz DXGI_FORMAT_B4G4R4A4_UNORM, jeśli są one wspierane w bieżącej implementacji API Vulkan.
- Dodano wsparcie dla interfejsów ID3D12ShaderCacheSession oraz ID3D12Device9. Do interfejsu ID3D12Device8 dodano metody CreateCommittedResource2(), CreatePlacedResource1(), GetCopyableFootprints1() oraz GetResourceAllocationInfo2().
- Zrealizowano zapytania kontrolne D3D12_FEATURE_D3D12_OPTIONS14, D3D12_FEATURE_D3D12_OPTIONS15, D3D12_FEATURE_D3D12_OPTIONS16, D3D12_FEATURE_D3D12_OPTIONS17 oraz D3D12_FEATURE_D3D12_OPTIONS18.
- W libvkd3d-shader dla pośredniego języka DXIL (DirectX Intermediate Language) dodano eksperymentalne wsparcie dla większości metod i instrukcji 6. modelu shaderów Direct3D.
Źródło: opennet.ru
