
vkd3d, je sloj prijevoda Wine Direct3D 12 na Vulkan
Projekt vino otkriveno Prije nekoliko dana pokrenuta je nova verzija programa paket vkd3d 1.7 s implementacijom Direct3D 12 koja radi kroz prijevod poziva na Vulkan grafički API.
El paquete uključuje libvkd3d biblioteke s Direct3D 12 implementacijama, libvkd3d-shader s shader model translate 4 i 5 i libvkd3d-utils s funkcijama za pojednostavljenje migracije Direct3D 12 aplikacija, kao i skup demonstracija, uključujući port glxgears na Direct3D 12.
Knjižnica libvkd3d podržava većinu značajki Direct3D 12, uključujući grafiku i računanje, popise naredbi i redove čekanja, deskriptore i deskriptore hrpe, korijenske potpise, neuređeni pristup, uzorke, potpise naredbi, korijenske konstante, neizravno predstavljanje, metode Clear*() i Copy*().
Osim toga libvkd3d-shader implementira prijevod bajtkoda 4 i 5 modela sjenčanja u srednjem prikazu SPIR-V. Podržava vrhove, piksele, teselaciju, izračunavanje i jednostavne geometrijske shadere, korijensku serijalizaciju i deserijalizaciju potpisa.
Aritmetičke, atomske i bitne operacije, operatori za usporedbu i kontrolu protoka podataka, uzorkovanje, prikupljanje i učitavanje instrukcija, operacije pristupa izvan reda (UAV, pogled pristupa izvan reda) implementiraju se iz instrukcija za sjenčanje.
Glavne nove značajke vkd3d 1.7
U ovoj novoj verziji koja je predstavljena od vkd3d 1.7 ističe se éNastavio sam raditi na poboljšanju HLSL shader kompilatora (High-Level Shader Language), kao i dodavanje mogućnosti pozivanja korisnički definiranih funkcija i koristiti nizove kao parametre korisnički definiranih funkcija.
Još jedna od promjena koja se ističe u novoj verziji je značajno poboljšana podrška za profile shader model Direct3D 1/2/3, Dodana je i početna podrška za tipove s pomičnim zarezom niske preciznosti kao što je min16float.
Također je istaknuto da dodana podrška za parametre SV_DispatchThreadID, SV_GroupID i SV_GroupThreadID i da je dodan javni API za analizu (vkd3d_shader_parse_dxbc) i serijalizaciju (vkd3d_shader_serialize_dxbc) DXBC binarnih podataka.
Od druge promjene koje se ističu nove verzije:
- Podrška za izborni parametar "offset" objekta teksture Load().
metoda. - Podrška za intrinzičnu funkciju all().
- Podrška za intrinzičnu funkciju distance().
- Podrška za intrinzične funkcije exp() i exp2().
- Podrška za intrinzičnu funkciju frac().
- Podrška za intrinzičnu funkciju lit().
- Podrška za intrinzičnu funkciju reflect().
- Podrška za intrinzične funkcije sin() i cos().
- Podrška za intrinzičnu funkciju smoothstep().
- Podrška za unutarnje funkcije sqrt() i rsqrt().
- Podrška za intrinzičnu funkciju step().
- Podrška za intrinzičnu funkciju transpose().
- Podrška za varijante float i dword podataka koje ne razlikuju velika i mala slova
vrsta - Djelomična podrška za tipove podataka minimalne preciznosti kao što je "min16float". Oni se trenutno tumače kao njihovi uobičajeni pandani.
Poboljšana podrška za stalno širenje, posebno za stalno širenje putem swizzlea. - Opcija kompajliranja VKD3D_SHADER_COMPILE_OPTION_WRITE_TESS_GEOM_POINT_SIZE može se koristiti za određivanje trebaju li SPIR-V shaderi koji ciljaju Vulkan okruženja pisati veličine točaka za geometriju i teselacijske shadere, ako nisu navedene, veličine točaka će biti zapisane.
Konačno, Za one koji žele znati više o tome, trebali bi znati da je kod projekta licenciran pod LGPLv2.1 i da mogu pregledati pojedinosti ovog novog izdanja U sljedećem linku.
Kako instalirati vkd3d 1.7?
Za zainteresiran za instalaciju vkd3d Moraju znati da moraju kompajlirati izvorni kod, tako da ga prvo moramo nabaviti, važno je spomenuti da Vkd3d ovisi o SPIRV-Headers i Vulkan-Headers (>= 1.2.139).
Da bismo izvršili kompilaciju moramo otvoriti terminal i u njemu ćemo upisati sljedeću naredbu:
git clone https://gitlab.winehq.org/wine/vkd3d.git
Nakon što to učinimo, nastavljamo s unosom nedavno preuzetog direktorija s:
cd vkd3d
I nastavljamo s kompajliranjem izvršavanjem sljedećih naredbi:
./configure make make install
Si želite znati više o kompilaciji vkd3d možete provjeriti detalje u ovu vezu