Wine-projektet har släppt en ny version av vkd3d 1.2-paketet med en Direct3D 12-implementering som fungerar genom att översätta anrop till Vulkans grafik-API.
Den här nya versionen av vkd3d 1.2 innehåller flera förbättringar, men de viktigaste som sticker ut är tillgängligheten av libvkd3d-shader som ett publikt bibliotek , stöd för tessellation-shaders, samt stöd för strömningsutdata.
Paketet innehåller libvkd3d-biblioteket med Direct3D 12-implementeringar, libvkd3d-shader-biblioteket med en shader-översättare för modell 4 och 5, och libvkd3d-utils-biblioteket med funktioner för att förenkla migreringen av Direct3D 12-applikationer, samt en uppsättning demos, inklusive glxgears-porten till Direct3D 12. Projektkoden distribueras under LGPLv2.1-licensen.
Biblioteket libvkd3d stöder de flesta Direct3D 12-funktioner, inklusive grafik- och beräkningsfunktioner, kommandolistor och köer, deskriptorer och heap-deskriptorer, rotsignaturer, oordnad åtkomst, samplare, kommandosignaturer, rotkonstanter, indirekt rendering, etc.
Libvkd3d-shader implementerar översättningen av bytekod 4 och 5 från shadermodeller till den mellanliggande SPIR-V-representationen. Hörnpunkter, pixlar, tessellation, shaders för enkel och beräkningsgeometri, rotsignaturserialisering och deserialisering stöds.
Shader-instruktioner inkluderar aritmetiska, atomära och bit-för-bit-operationer, operatorer för dataflödeskontroll och jämförelse, instruktioner för sampling, insamling och laddning samt oordnade åtkomstoperationer (UAV, Unordered Access View).
I detta utvecklingsstadium är inte alla Direct3D 12-anrop implementerade , och testningen utfördes huvudsakligen på en uppsättning demoapplikationer. Den här versionen inkluderar inte funktioner under utveckling, såsom stöd för tessellation och shaders för komplex geometri, samt flera förbättringar relaterade till shaders och centrala Direct3D 12-metoder. Dessa funktioner kommer att erbjudas i en framtida version.
De viktigaste nya funktionerna i Vkd3d 1.2
En av de viktigaste förändringarna i den nya versionen är tillgängligheten av libvkd3d-shader-biblioteket för användning i tredjepartsprojekt, då flera Direct3D 12-funktioner har lagts till, såsom:
- Multiprovtagning.
- Reserverade resurser.
- Överföringshastigheter för instansdata.
- API för "privata data" för alla gränssnitt.
- Komponentmappningar för Shader-resursvy.
- VK_KHR_draw_indirect_count-tillägg.
- Predikat / villkorlig representation.
- Djupåtergivning utan pixelskuggning.
- Djupskärning. Detta kräver tillägget VK_EXT_depth_clip_enable.
- Kasta rasterizer.
- Blandning med dubbla källor.
- Kartläggning av placerade resurser.
- Metoderna ReadFromSubresource () och WriteToSubresource () ID3D12Resource.
- Samtidig åtkomst till flera köresurser.
- Null utsikt. Det vill säga åsikter utan en underliggande resurs.
- Flera fler funktioner stöder frågor.
Utöver detta är det extra stödet för att konvertera, seriala och avseriala rotsignaturer (vkd3d_serialize_versioned_root_signature() och vkd3d_create_versioned_root_signature_deserializer()) också anmärkningsvärt , liksom stödet för strömmande utdata.
En annan anmärkningsvärd förändring är implementeringen av miljövariabler: VKD3D_CONFIG för att ange alternativ för att ändra beteendet hos libvkd3d och VKD3D_VULKAN_DEVICE för att åsidosätta enheten för Vulkan API.
Dessutom lades stöd till för skuggningsinstruktionerna bufinfo, eval_centroid, eval_sample_index, ld2ms, sample_b, sample_d, sample_info, samplepos och preliminärt stöd för shaders i modell 5.1.
Och även stöd för OpenGL SPIR-V-målmiljöer. Detta gör att SPIR-V producerad av libvkd3d-shader kan användas med GL_ARB_gl_spirv. Detta inkluderar stöd för OpenGL-atomräknare och kombinerade samplare.
Slutligen, om du vill veta mer om den här nya versionen kan du se den fullständiga listan över ändringar på följande länk.
Hur installerar jag vkd3d på Linux?
För dem som är intresserade av att kunna installera vkd3d på sitt system, bör de skaffa källkoden och fortsätta med sammanställningen, men för praktiska ändamål eller för de nybörjare kan de prova det här biblioteket utan mycket ansträngning. För detta behöver de bara installera lutris och inom dess konfigurationer.
När det gäller de som är intresserade av sammanställning måste de få koden med:
git clone git://source.winehq.org/git/vkd3d.git/
./autogen.sh
./configure
make
../vkd3d/configure --build=i686-pc-linux-gnu "CPPFLAGS=-m32" "LDFLAGS=-m32"
Slutligen måste Vulkan-lagren vara aktiverade:
export VK_INSTANCE_LAYERS=VK_LAYER_LUNARG_standard_validation
VKD3D_CONFIG=vk_debug