Po roce a půl vývoje aon Wine projekt oznámil spuštění nová verze balíčku «vkd3d 1.3″ s implementací Direct3D 12, která funguje prostřednictvím překladu volání do grafického API Vulkan.
Tato verze obsahuje různá vylepšení, z nichž jsou v této nové verzi nejdůležitější počáteční podpora sestavení HLSL, stejně jako Podpora pole deskriptorů Shader Model 5.1, podpora pro odpojení Direct3D shaderů a další.
Pro ty, kteří o balíčku nevědí, by to měli vědět zahrnuje knihovny libvkd3d s implementacemi Direct3D 12, libvkd3d-shader s překladačem shaderů modelu 4 a 5 a libvkd3d-utils s funkcemi pro zjednodušení migrace aplikací Direct3D 12, stejně jako sada ukázek, včetně portu glxgears na Direct3D 12. Kód projektu je distribuován s licencí pod LGPLv2.1.
Knihovna libvkd3d podporuje většinu funkcí Direct3D 12, včetně grafů a výpočetních funkcí, seznamů příkazů a front, deskriptorů a deskriptorů haldy, kořenových signatur, neuspořádaného přístupu, vzorkovačů, signatur příkazů, kořenových konstant, proxy reprezentace atd.
libvkd3d-shader implementuje překlad byte kódu 4 a 5 stínících modelů v mezireprezentaci SPIR-V. Podporovány jsou vrcholy, pixely, mozaikování, výpočetní a jednoduché geometrické shadery, serializace kořenových signatur a deserializace.
Pokyny shaderu zahrnují aritmetické, atomové a bitové operace, operátory řízení a porovnávání toku dat, pokyny pro vzorkování, sběr a načítání, operace neuspořádaného přístupu (UAV, zobrazení neuspořádaného přístupu).
V současné fázi vývoje nejsou implementována všechna volání Direct3D 12 a testy byly prováděny především na sadě demo aplikací.
Hlavní nové funkce Vkd3d 1.3
V této nové verzi vkd3d 1.3, která je představena, je to zdůrazněno přidána počáteční podpora pro kompilaci a předběžné vykreslování shaderů v HLSL (high-level shader language), který je poskytován od DirectX 9.0.
Další ze změn, které v této nové verzi vynikají, je podpora operací s plovoucí desetinnou čárkou s dvojitou přesností v shaderech, stejně jako indirection pro teselační shadery, export šablon z shaderů, "přesný" modifikátor shaderů a globální bariéry pro zdroje v paměti.
Můžeme také zjistit, že schopnost rozebrat Direct3D shadery z kódu bajtů do reprezentace assembleru a také přidána podpora pro analýzu starého formátu bajtového kódu Direct3D používaného v modelech shaderů Direct3D 1, 2 a 3.
libvkd3d přidal funkce Direct3D 12, jako jsou kořenové signatury, neuspořádané vyhledávací čítače, výstupní slučovací booleany, režim adresování textury mirror_once a přidaná struktura vkd3d_host_time_domain_info.
Z dalších změn které vyčnívají z této nové verze:
- vkd3d_shader_preprocess_info rozšiřuje strukturu vkd3d_shader_compile_info a lze jej použít ke specifikaci parametrů předběžného zpracování, jako jsou definice maker preprocesoru.
- vkd3d_shader_hlsl_source_info rozšiřuje strukturu vkd3d_shader_compile_info a lze jej použít ke specifikaci HLSL a parametrů sestavení, jako je cílový profil a vstupní bod.
- Propojte modely Direct3D 12 a Vulkan
- VKD3D_SHADER_COMPILE_OPTION_API_VERSION lze použít k určení verze rozhraní API libvkd3d-shader, na kterou aplikace cílí. Pokud není zadáno, použije se VKD3D_SHADER_API_VERSION_1_2.
- vkd3d-compiler použije výchozí barevný výstup, pokud dokáže určit, že
výstupem je barevná dálnopis. - Přidána podpora pro pole deskriptorů definovaná v Shader Model 5.1.
Konečně pokud o tom chcete vědět víc o této nové verzi si můžete prohlédnout úplný seznam změn Na následujícím odkazu.
Jak nainstalovat vkd3d na Linux?
Pro ty, kteří mají zájem o instalaci vkd3d na svůj systém, by měli získat zdrojový kód a pokračovat v kompilaci, i když z praktických důvodů nebo pro nováčky mohou tuto knihovnu bez velké námahy vyzkoušet. K tomu musí nainstalovat pouze lutris a v rámci jeho konfigurací.
Pokud jde o zájemce o kompilaci, musí získat kód s:
git clone git://source.winehq.org/git/vkd3d.git/
./autogen.sh
./configure
make
../vkd3d/configure --build=i686-pc-linux-gnu "CPPFLAGS=-m32" "LDFLAGS=-m32"
Nakonec musí být povoleny vrstvy vulkánu:
export VK_INSTANCE_LAYERS=VK_LAYER_LUNARG_standard_validation
VKD3D_CONFIG=vk_debug