Projekt Wine opublikował Vkd3d 1.16 z implementacją Direct3D 12

Projekt Wine opublikował wersję pakietu vkd3d 1.16 z realizacją Direct3D 12, działającą poprzez tłumaczenie wywołań w interfejsie API Vulkan. W skład pakietu wchodzą biblioteki libvkd3d z realizacją Direct3D 12, libvkd3d-shader z translatorem modeli 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 udostępniany na licencji LGPLv2.1.

Biblioteka libvkd3d obsługuje większość możliwości Direct3D 12, w tym narzędzia do grafiki i obliczeń, kolejki i listy poleceń, deskryptory i deskryptory sterty, sygnały korzenia, dostęp nieuporządkowany, Samplery, sygnały poleceń, stałe korzenia, niezależne renderowanie, metody Clear*() i Copy*(). W libvkd3d-shader zrealizowano translację kodu bajtowego modeli shaderów do pośredniego formatu SPIR-V. Obsługiwane są shadery wierzchołków, pikseli, tesselacyjne, obliczeniowe i proste shadery geometryczne, serializacja i deserializacja sygnału korzenia. Z instrukcji shaderowych zrealizowane zostały operacje arytmetyczne, atomowe i bitowe, operatory porównania i zarządzania przepływem danych, instrukcje sample, gather i load, operacje dostępu nieuporządkowanego (UAV, Unordered Access View).

W nowej wersji:

  • Stabilizowane i domyślnie włączone wsparcie dla shaderów DXIL (DirectX Intermediate Language).
  • W kompilatorze języka shaderów HLSL dodano wstępną obsługę shaderów geometrii. Dla modeli shaderów 1,2,3 zrealizowano obsługę pośredniego adresowania, modułów oraz ograniczenia wartości.
  • W bibliotece libvkd3d zadeklarowano wsparcie dla modelu shaderów 6.0. W interfejsie ID3D12Device1 zaimplementowano metodę SetEventOnMultipleFenceCompletion(). Dodano wsparcie dla rozszerzenia Vulkan VK_KHR_zero_initialize_workgroup_memory do inicjalizacji pamięci zerami dla shaderów. W skład obligatoryjnych wchodzi rozszerzenie Vulkan VK_KHR_maintenance2, zaproponowane w specyfikacji Vulkan 1.1.
  • Dodano wsparcie dla dezasemblacji shaderów SPIR-V i binarnych efektów „fx_2_0”.
  • Dodano eksperymentalne wsparcie dla pośredniego adresowania stałych buforów w GLSL (OpenGL Shading Language).
  • Do realizacji języka shaderów MSL (Metal Shading Language), używanego przez firmę Apple w interfejsie API Metal, dodano możliwość ładowania tekstur.
  • Dodano wsparcie dla wbudowanych funkcji HLSL: AllMemoryBarrier(), AllMemoryBarrierWithGroupSync(), DeviceMemoryBarrier(), DeviceMemoryBarrierWithGroupSync(), GroupMemoryBarrier() i GroupMemoryBarrierWithGroupSync().
  • Zrealizowano flagi VKD3D_SHADER_COMPILE_OPTION_FEATURE_ZERO_INITIALIZE_WORKGROUP_MEMORY, VKD3D_SHADER_COMPONENT_INT64, VKD3D_SHADER_COMPONENT_FLOAT16, VKD3D_SHADER_COMPONENT_UINT16, VKD3D_SHADER_COMPONENT_INT16, VKD3D_SHADER_RESOURCE_DATA_NONE i VKD3D_SHADER_RESOURCE_DATA_UINT.

Ź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