Projekt Wine opublikował Vkd3d 1.11 z implementacją Direct3D 12

Projekt Wine opublikował wersję pakietu vkd3d 1.11 z implementacją Direct3D 12, działającą poprzez translację wywołań do graficznego interfejsu API Vulkan. W skład pakietu wchodzą biblioteki libvkd3d z implementacją Direct3D 12, libvkd3d-shader z translatory modelu shaderó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 dystrybuowany 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:

  • Dodano początkowe wsparcie dla kompilacji starego bajtkodu Direct3D do pośredniego reprezentacji shaderów SPIR-V.
  • Do kompilatora HLSL dodano początkowe wsparcie dla kompilacji profili efektów Direct3D („fx_2_0”, „fx_4_0”, „fx_4_1” i „fx_5_0”).
  • Dodano eksperymentalne wsparcie dla kompilacji pośredniego języka DXIL (DirectX Intermediate Language) do reprezentacji SPIR-V oraz instrukcji asemblerowych shaderów Direct3D.
  • W HLSL dodano wsparcie dla profili „fx_2_0”, „fx_4_0”, „fx_4_1” i „fx_5_0”, wprowadzono wbudowane funkcje acos(), asin(), atan() i atan2(), zapewniono wsparcie dla zasobów „Buffer”.
  • Dodano optymalizację, która wykonuje aktualizację deskryptorów w trybie asynchronicznym, co może przyspieszyć aplikacje aktualizujące dużą liczbę deskryptorów w każdej klatce.
  • Zaimplementowano wykorzystanie rozszerzeń Vulkan VK_EXT_mutable_descriptor_type i VK_EXT_shader_viewport_index_layer dla zwiększenia efektywności pracy z pulą deskryptorów i przyspieszenia renderowania tablic shaderów wierzchołkowych i teselacyjnych.
  • Dodano wsparcie dla interfejsów ID3D12Device7 i ID3D12Resource2. Do interfejsu ID3D12Device4 dodano metodę GetResourceAllocationInfo1().
  • Dodano wsparcie dla interfejsów D3DReflect() i D3DDisassemble().
  • Zaimplementowano zapytania 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.
  • Dodano nowe opcje kompilacji: VKD3D_SHADER_COMPILE_OPTION_FEATURE, VKD3D_SHADER_COMPILE_OPTION_FEATURE_INT64, VKD3D_SHADER_COMPILE_OPTION_FEATURE_FLOAT64, VKD3D_SHADER_API_VERSION_1_10 i VKD3D_SHADER_SPIRV_EXTENSION_EXT_VIEWPORT_INDEX_LAYER.
  • W funkcjach D3D12CreateDeviceVKD3D() i D3D12CreateDevice() zaangażowano rozszerzenia Vulkan VK_KHR_android_surface, VK_KHR_wayland_surface, VK_KHR_win32_surface, VK_KHR_xlib_surface, VK_EXT_metal_surface i VK_MVK_ios_surface.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster