Nakon jedne i pol godine razvoja, projekt Wine objavio je izdanje paketa vkd3d 1.3 s implementacijom Direct3D 12, koja radi putem prevođenja poziva u grafički API Vulkan. U paketu se nalaze biblioteke libvkd3d s implementacijom Direct3D 12, libvkd3d-shader s prevoditeljem verzija 4 i 5 sjenčera, te libvkd3d-utils s funkcijama za pojednostavljenje portiranja aplikacija Direct3D 12, kao i set demonstracijskih primjera, uključujući port glxgears na Direct3D 12. Izvorni kod projekta distribuiran je pod LGPLv2.1 licencom.
Biblioteka libvkd3d podržava većinu mogućnosti Direct3D 12, uključujući alate za grafiku i računanje, redove i nizove komandi, deskriptore i deskriptore hrpe, korijenske potpise, neuređeni pristup, uzorkivače, potpise komandi, korijenske konstante, neizravno renderiranje, metode Clear*() i Copy*().
U libvkd3d-shader implementirano je prevođenje bajtkoda modela 4 i 5 šejdera u intermedijerno predstavljanje SPIR-V. Podržavaju se vršni, pikselni, tesselacijski, izračunski i jednostavni geometrijski šejderi, serijalizacija i deserializacija korijenskog potpisa. Od šejderskih instrukcija implementirane su aritmetičke, atomske i bitovne operacije, operateri usporedbe i upravljanja tokom prijenosa podataka, instrukcije sample, gather i load, operacije neuređenog pristupa (UAV, Unordered Access View).
Među najznačajnijim novostima u Vkd3d 1.3 ističu se:
- Dodana je osnovna podrška za kompajliranje i preprocesiranje sjenčera na jeziku HLSL (High-Level Shader Language), koja je dostupna od DirectX 9.0.
- Dodana je podrška za nizove deskriptora definirane u modelu sjenčera 5.1.
- Osigurana je podrška za operacije s brojevima s pomičnom zarezom dvostruke preciznosti u sjenčerima, neizravno adresiranje za tesselacijske sjenčere, izvoz šablona iz sjenčera, modifikator sjenčera „precise“ i globalne barijere za resurse u memoriji.
- Implementirana je mogućnost disasembleranja sjenčera Direct3D iz bajtkoda u asembler predstavljen.
- Dodana je podrška za analizu starog formata bajtkoda Direct3D, korištenog u modelima sjenčera Direct3D 1, 2 i 3.
- U libvkd3d dodane su mogućnosti Direct3D 12, poput korijenskih potpisa, brojača pregleda s neuređenim pristupom, logičkih operatora spajanja za izlaz, načina adresiranja tekstura mirror_once. Dodana je struktura vkd3d_host_time_domain_info.
Izvor: opennet.ru
