vkd3d, to warstwa translacji Wine Direct3D 12 na Vulkan
Projekt Wine ogłosił kilka dni temu wydanie nowej wersji pakietu vkd3d 1.11, wersja, w której wprowadzono usprawnienia w obsłudze rozszerzeń vulkan, a także ulepszenia obsługi, nowe funkcje i nie tylko.
Dla tych, którzy nie wiedzą o Vkd3d, powinniście wiedzieć, że jest to pakiet, który oferuje implementację Direct3D 12 przy użyciu wywołań API grafiki Vulkan i zawiera kilka kluczowych bibliotek. Biblioteka libvkd3d zawiera implementacje Direct3D 12, obejmujące szeroki zakres funkcji, takich jak obliczenia i grafika, między innymi kolejki i listy poleceń, identyfikatory.
Dostępna jest także biblioteka libvkd3d-shader który zapewnia tłumacza modeli shaderów 4 i 5 na pośrednią reprezentację SPIR-V. Ta biblioteka obsługuje moduły cieniujące wierzchołki, piksele, teselację, obliczenia i prostą geometrię, a także serializację i deserializację sygnatur głównych.
Co nowego w vkd3d 1.11?
Vkd3d 1.11 wprowadza początkowa obsługa kompilacji starszego kodu bajtowego Direct3D w pośredniej reprezentacji shaderów SPIR-V, a także swstępne wsparcie z kompilatorem HLSL pdo tworzenia profili efektów.
Kolejnym ulepszeniem przedstawionym w tej nowej wersji jest eksperymentalne wsparcie dla kompilacji DXIL (język pośredni DirectX) w reprezentacji SPIR-V, zapewniając nowe możliwości rozwoju aplikacji Direct3D. Ta funkcja wymaga kompilacji vkd3d z opcją „preprocesora”.-DVKD3D_SHADER_UNSUPPORTED_DXIL' i jest uważany za eksperymentalny.
Również zoptymalizowano wykorzystanie grup i zestawów deskryptorów kiedy dostępne są rozszerzenia VK_EXT_mutable_descriptor_type i VK_EXT_shader_viewport_index_layer, który ma na celu poprawę wydajności pracy z pulą deskryptorów i przyspieszenie renderowania tablic teselacji i modułów cieniujących wierzchołki.
C zostało zaimplementowaneObsługa standardowych kolorów obramowania, takich jak czarno-biały i metoda została wdrożona GetResourceAllocationInfo1() interfejsu ID3D12Device4, a także obsługę interfejsów ID3D12Device7 i ID3D12Resource2.
Obsługiwanych jest kilka nowych zapytań dotyczących funkcji, w tym D3D12_FEATURE_D3D12_OPTIONS6 a D3D12_FEATURE_D3D12_OPTIONS13.
Zostały wdrożone nowe opcje kompilacji: VKD3D_SHADER_COMPILE_OPTION_FEATURE może być używany do
określić funkcje dostępne w środowisku docelowym, natomiast VKD3D_SHADER_COMPILE_OPTION_FEATURE_INT64 wskazuje zgodność z
64-bitowe typy całkowite w środowisku docelowym SPIR oraz VKD3D_SHADER_COMPILE_OPTION_FEATURE_FLOAT64 wskazuje zgodność z
64-bitowe typy zmiennoprzecinkowe w środowisku docelowym SPIR-V.
z inne zmiany, które się wyróżniają tej nowej wersji:
- Aktualizacje deskryptorów odbywają się teraz asynchronicznie w wewnętrznym wątku roboczym, co poprawia wydajność w aplikacjach, które aktualizują wiele deskryptorów na ramkę.
- Do typu docelowego SPIR-V dodano nowe funkcje, w tym obsługę globalnie spójnych widoków dostępu poza kolejnością, barier widoków dostępu poza kolejnością grup wątków i nie tylko.
- Obsługiwany jest interfejs ID3D12Device7.
- Minimalna wymagana wersja nagłówków Vulkan dla tego wydania to wersja
1.3.228. - Obsługiwany jest interfejs ID3D12Resource2.
- Obsługiwanych jest kilka nowych zapytań dotyczących funkcji:
– D3D12_FEATURE_D3D12_OPTIONS6
– D3D12_FEATURE_D3D12_OPTIONS7
– D3D12_FEATURE_D3D12_OPTIONS8
– D3D12_FEATURE_D3D12_OPTIONS9
– D3D12_FEATURE_D3D12_OPTIONS10
– D3D12_FEATURE_D3D12_OPTIONS11
– D3D12_FEATURE_D3D12_OPTIONS12
– D3D12_FEATURE_D3D12_OPTIONS13 - Wewnętrzne funkcje acos(), asin(), atan() i atan2() są już obsługiwane.
- Jawne mapowanie rejestrów przy użyciu słowa kluczowego „register()”.
- Konwersja z typów całkowitych na zmiennoprzecinkowe w profilach modeli cieniujących 1-3.
Dla zainteresowanych, aby dowiedzieć się więcej na ten tematpowinieneś wiedzieć, że kod projektu jest rozpowszechniany na licencji LGPL 2.1 i możesz zapoznać się ze szczegółami tej nowej wersji W poniższym linku.
Jak zainstalować vkd3d 1.11?
Dla zainteresowany możliwością zainstalowania vkd3d Muszą wiedzieć, że muszą skompilować kod źródłowy, więc musimy go najpierw zdobyć, ważne jest, aby wspomnieć, że Vkd3d zależy od SPIRV-Headers i Vulkan-Headers (>= 1.3.228).
Kompilacja jest dość prosta i w tym celu musimy otworzyć terminal, w którym wpiszemy następujące polecenie:
git clone https://gitlab.winehq.org/wine/vkd3d.git
Kontynuujemy wchodzenie do folderu, w którym został pobrany za pomocą:
cd vkd3d
I przystępujemy do kompilacji, wykonując następujące polecenia:
./configure make make install
Si chcesz dowiedzieć się więcej o kompilacji vkd3d możesz sprawdzić szczegóły w ten link