vkd3d 1.2 přináší vylepšení kompatibility, stínování a další

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


Přidat jako preferovaný zdroj v Googlu