Projekt Wine vydal novou verzi balíčku vkd3d 1.2 s implementací Direct3D 12 , která funguje na principu překladu volání do grafického API Vulkan.
Tato nová verze vkd3d 1.2 obsahuje několik vylepšení, ale mezi ta hlavní, která vynikají, patří dostupnost knihovny libvkd3d-shader jako veřejné knihovny , podpora teselačních shaderů a také podpora streamového výstupu.
Balíček obsahuje knihovnu libvkd3d s implementacemi Direct3D 12, knihovnu libvkd3d-shader s překladačem shaderů Model 4 a 5 a knihovnu libvkd3d-utils s funkcemi pro zjednodušení migrace aplikací Direct3D 12, a také sadu dem, včetně portu glxgears na Direct3D 12. Kód projektu je distribuován pod licencí LGPLv2.1.
Knihovna libvkd3d podporuje většinu funkcí Direct3D 12, včetně grafických a výpočetních funkcí, seznamů a front příkazů, deskriptorů a deskriptorů haldy, kořenových signatur, neuspořádaného přístupu, samplerů, signatur příkazů, kořenových konstant, nepřímého vykreslování atd.
Libvkd3d-shader implementuje překlad bajtkódu 4 a 5 shaderových modelů do mezilehlé reprezentace SPIR-V. Podporovány jsou vrcholové, pixelové, teselační, jednoduché a výpočetní geometrické shadery, serializace kořenových signatur a deserializace.
Instrukce shaderu zahrnují aritmetické, atomické a bitové operace, operátory řízení a porovnávání datového toku, instrukce pro vzorkování, shromažďování a načítání a operace neuspořádaného přístupu (UAV, Unordered Access View).
V této fázi vývoje nejsou implementována všechna volání Direct3D 12 a testování probíhalo primárně na sadě demo aplikací. Tato verze neobsahuje vyvíjené funkce, jako je podpora teselace a shaderů komplexní geometrie, ani několik vylepšení týkajících se shaderů a základních metod Direct3D 12. Tyto funkce budou nabídnuty v budoucí verzi.
Hlavní nové funkce Vkd3d 1.2
Jednou z nejdůležitějších změn v nové verzi je dostupnost knihovny libvkd3d-shader pro použití v projektech třetích stran, protože bylo přidáno několik funkcí Direct3D 12, například:
- Vícenásobné vzorkování.
- Rezervované zdroje.
- Rychlost předávání dat instance.
- „Soukromá data“ API pro všechna rozhraní.
- Mapování komponent shaderu pro zobrazení zdrojů.
- Rozšíření VK_KHR_draw_indirect_count.
- Predikátové / podmíněné vyjádření.
- Hloubkové vykreslení bez shaderu pixelů.
- Hloubkový výřez. To vyžaduje rozšíření VK_EXT_depth_clip_enable.
- Zrušte rasterizer.
- Míchání dvou zdrojů.
- Mapování umístěných zdrojů.
- Metody ID3D12Resource ReadFromSubresource () a WriteToSubresource ().
- Simultánní přístup k prostředkům s více frontami.
- Nulové pohledy. To znamená, pohledy bez podkladového zdroje.
- Několik dalších dotazů na podporu funkcí.
Kromě toho je pozoruhodná také přidaná podpora pro převod, serializaci a deserializaci kořenových podpisů (vkd3d_serialize_versioned_root_signature() a vkd3d_create_versioned_root_signature_deserializer()) , stejně jako podpora streamování výstupu.
Další pozoruhodnou změnou je implementace proměnných prostředí: VKD3D_CONFIG pro nastavení možností změny chování knihovny libvkd3d a VKD3D_VULKAN_DEVICE pro přepsání zařízení pro Vulkan API.
Dále byla přidána podpora pro instrukce stínování bufinfo, eval_centroid, eval_sample_index, ld2ms, sample_b, sample_d, sample_info, samplepos a předběžná podpora pro shadery modelu 5.1.
A také podpora pro cílová prostředí OpenGL SPIR-V. To umožňuje použití SPIR-V produkovaného libvkd3d-shaderem s GL_ARB_gl_spirv. To zahrnuje podporu pro počítadla atomů OpenGL a kombinované vzorkovače.
A konečně, pokud se chcete o této nové verzi dozvědět více, kompletní seznam změn si můžete prohlédnout 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