Vinprojektet har släppt Vkd3d 1.3 med Direct3D 12-implementering

Efter ett och ett halvt år av utveckling har Wine-projektet publicerat releasen av vkd3d 1.3-paketet med en Direct3D 12-implementering som fungerar genom att sända anrop till Vulkans grafik-API. Paketet innehåller libvkd3d-bibliotek med implementeringar av Direct3D 12, libvkd3d-shader med en översättare av shader-modellerna 4 och 5 och libvkd3d-utils med funktioner för att förenkla porteringen av Direct3D 12-applikationer, samt en uppsättning demoexempel, inklusive en port av glxgears till Direct3D 12. Projektkoden distribueras licensierad under LGPLv2.1.

Libvkd3d-biblioteket stöder de flesta Direct3D 12-funktioner, inklusive grafik och beräkningsfaciliteter, köer och kommandolistor, handtag och heap-handtag, rotsignaturer, out-of-order access, Samplers, kommandosignaturer, rotkonstanter, indirekt rendering, Rensa metoder *( ) och Copy*().

I libvkd3d-shader implementeras översättningen av bytekod för shadermodellerna 4 och 5 till en mellanliggande SPIR-V-representation. Vertex, pixel, tessellation, beräkning och enkel geometriskuggning, rotsignaturserialisering och deserialisering stöds. Shader-instruktioner inkluderar aritmetiska, atom- och bitoperationer, jämförelse- och dataflödeskontrolloperatörer, sampla, samla och ladda instruktioner, oordnade åtkomstoperationer (UAV, Unordered Access View).

Bland de viktigaste innovationerna i Vkd3d 1.3 är:

  • Lade till initialt stöd för att kompilera och förbearbeta shaders i HLSL (High-Level Shader Language), tillhandahållet från och med DirectX 9.0.
  • Lade till stöd för arrayer av deskriptorer definierade i 5.1 shader-modellen.
  • Ger stöd för flyttalsoperationer med dubbel precision i shaders, indirekt adressering för tessellation shaders, export av stenciler från shaders, en "precis" shadermodifierare och globala barriärer för minnesresurser.
  • Möjligheten att demontera Direct3D shaders från bytecode till assembly-representation har implementerats.
  • Tillagt stöd för att analysera det gamla Direct3D-bytekodformatet som används i Direct3D-skuggningsmodellerna 1, 2 och 3.
  • libvkd3d lägger till Direct3D 12-funktioner som rotsignaturer, out-of-order view-räknare, logiska sammanslagningsoperatorer för utdata och mirror_once texture-adresseringsläge. Lade till struktur för vkd3d_host_time_domain_info.

Källa: opennet.ru

Lägg en kommentar