Wine-prosjektet har gitt ut Vkd3d 1.3 med Direct3D 12-implementering

Etter halvannet år med utvikling har Wine-prosjektet publisert utgivelsen av vkd3d 1.3-pakken med en Direct3D 12-implementering som fungerer gjennom kringkastingsanrop til Vulkan graphics API. Pakken inkluderer libvkd3d-biblioteker med implementeringer av Direct3D 12, libvkd3d-shader med en oversetter av shader-modeller 4 og 5 og libvkd3d-utils med funksjoner for å forenkle porteringen av Direct3D 12-applikasjoner, samt et sett med demo-eksempler, inkludert en port av glxgears til Direct3D 12. Prosjektkoden er distribuert lisensiert under LGPLv2.1.

Libvkd3d-biblioteket støtter de fleste Direct3D 12-funksjoner, inkludert grafikk- og beregningsfasiliteter, køer og kommandolister, håndtak og heap-håndtak, rotsignaturer, tilgang utenfor rekkefølge, samplere, kommandosignaturer, rotkonstanter, indirekte gjengivelse, klare metoder *( ) og Copy*().

I libvkd3d-shader implementeres oversettelsen av bytekode for shader-modellene 4 og 5 til en mellomliggende SPIR-V-representasjon. Vertex, pixel, tessellation, databehandling og enkel geometri shaders, rotsignaturserialisering og deserialisering støttes. Shader-instruksjoner inkluderer aritmetiske, atom- og bitoperasjoner, sammenlignings- og dataflytkontrolloperatører, sample, samle og laste instruksjoner, uordnede tilgangsoperasjoner (UAV, Unordered Access View).

Blant de viktigste nyvinningene i Vkd3d 1.3 er:

  • Lagt til innledende støtte for kompilering og forhåndsbehandling av shaders i HLSL (High-Level Shader Language), gitt fra og med DirectX 9.0.
  • Lagt til støtte for arrays av deskriptorer definert i 5.1 shader-modellen.
  • Gir støtte for dobbelpresisjon flytepunkt-operasjoner i shaders, indirekte adressering for tessellation shaders, eksport av sjablonger fra shaders, en "presis" shader-modifikator og globale barrierer for minneressurser.
  • Muligheten til å demontere Direct3D shaders fra bytekode til monteringsrepresentasjon er implementert.
  • Lagt til støtte for å analysere det gamle Direct3D-bytekodeformatet brukt i Direct3D 1, 2 og 3 shader-modeller.
  • libvkd3d legger til Direct3D 12-funksjoner som rotsignaturer, visningstellere som ikke er i orden, logiske fletteoperatorer for utdata og mirror_once-teksturadresseringsmodus. Lagt til struktur for vkd3d_host_time_domain_info.

Kilde: opennet.ru

Legg til en kommentar