ΠΡΠΎΠ΅ΠΊΡ Wine ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π» Π²ΡΠΏΡΡΠΊ ΠΏΠ°ΠΊΠ΅ΡΠ° vkd3d 1.16 Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ Direct3D 12, ΡΠ°Π±ΠΎΡΠ°ΡΡΠ΅ΠΉ ΡΠ΅ΡΠ΅Π· ΡΡΠ°Π½ΡΠ»ΡΡΠΈΡ Π²ΡΠ·ΠΎΠ²ΠΎΠ² Π² Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ API Vulkan. Π ΡΠΎΡΡΠ°Π² ΠΏΠ°ΠΊΠ΅ΡΠ° Π²Ρ ΠΎΠ΄ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ libvkd3d Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ Direct3D 12, libvkd3d-shader c ΡΡΠ°Π½ΡΠ»ΡΡΠΎΡΠΎΠΌ 4 ΠΈ 5 ΠΌΠΎΠ΄Π΅Π»ΠΈ ΡΠ΅ΠΉΠ΄Π΅ΡΠΎΠ² ΠΈ libvkd3d-utils Ρ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ Π΄Π»Ρ ΡΠΏΡΠΎΡΠ΅Π½ΠΈΡ ΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Direct3D 12, Π° ΡΠ°ΠΊΠΆΠ΅ Π½Π°Π±ΠΎΡ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ², Π²ΠΊΠ»ΡΡΠ°Ρ ΠΏΠΎΡΡ glxgears Π½Π° Direct3D 12. ΠΠΎΠ΄ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ΅ΡΡΡ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΠ΅ΠΉ LGPLv2.1.
ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° libvkd3d ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π±ΠΎΠ»ΡΡΡΡ ΡΠ°ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ Direct3D 12, Π²ΠΊΠ»ΡΡΠ°Ρ ΡΡΠ΅Π΄ΡΡΠ²Π° Π΄Π»Ρ Π³ΡΠ°ΡΠΈΠΊΠΈ ΠΈ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ, ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ ΠΈ ΡΠΏΠΈΡΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄, Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΡ ΠΈ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΡ ΠΊΡΡΠΈ, ΠΊΠΎΡΠ½Π΅Π²ΡΠ΅ ΡΠΈΠ³Π½Π°ΡΡΡΡ, Π½Π΅ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½Π½ΡΠΉ Π΄ΠΎΡΡΡΠΏ, Sampler-Ρ, ΡΠΈΠ³Π½Π°ΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄, ΠΊΠΎΡΠ½Π΅Π²ΡΠ΅ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ, Π½Π΅ΠΏΡΡΠΌΡΡ (indirect) ΠΎΡΡΠΈΡΠΎΠ²ΠΊΡ, ΠΌΠ΅ΡΠΎΠ΄Ρ Clear*() ΠΈ Copy*(). Π libvkd3d-shader ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΡΡΠ°Π½ΡΠ»ΡΡΠΈΡ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄Π° ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΡΠ΅ΠΉΠ΄Π΅ΡΠΎΠ² Π² ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ SPIR-V. ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ Π²Π΅ΡΡΠΈΠ½Π½ΡΠ΅, ΠΏΠΈΠΊΡΠ΅Π»ΡΠ½ΡΠ΅, ΡΠ΅ΡΡΠ΅Π»ΡΡΠΈΠΎΠ½Π½ΡΠ΅, Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΈ ΠΏΡΠΎΡΡΡΠ΅ Π³Π΅ΠΎΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ΅ΠΉΠ΄Π΅ΡΡ, ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈ Π΄Π΅ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΊΠΎΡΠ½Π΅Π²ΠΎΠΉ ΡΠΈΠ³Π½Π°ΡΡΡΡ. ΠΠ· ΡΠ΅ΠΉΠ΄Π΅ΡΠ½ΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅, Π°ΡΠΎΠΌΠ°ΡΠ½ΡΠ΅ ΠΈ Π±ΠΈΡΠΎΠ²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠΌ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π΄Π°Π½Π½ΡΡ , ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ sample, gather ΠΈ load, ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π½Π΅ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½Π½ΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ° (UAV, Unordered Access View).
Π Π½ΠΎΠ²ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ:
- Π‘ΡΠ°Π±ΠΈΠ»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π° ΠΈ Π²ΠΊΠ»ΡΡΠ΅Π½Π° ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠ΅ΠΉΠ΄Π΅ΡΠΎΠ² DXIL (DirectX Intermediate Language).
- Π ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΡΠ·ΡΠΊΠ° ΡΠ΅ΠΉΠ΄Π΅ΡΠΎΠ² HLSL Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π½Π°ΡΠ°Π»ΡΠ½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π³Π΅ΠΎΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ΅ΠΉΠ΄Π΅ΡΠΎΠ². ΠΠ»Ρ ΡΠ΅ΠΉΠ΄Π΅ΡΠ½ΡΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ 1,2,3 ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΊΠΎΡΠ²Π΅Π½Π½ΠΎΠΉ Π°Π΄ΡΠ΅ΡΠ°ΡΠΈΠΈ, ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ ΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ.
- Π Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ libvkd3d Π·Π°ΡΠ²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠ΅ΠΉΠ΄Π΅ΡΠ½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ 6.0. Π ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅ ID3D12Device1 ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΠΌΠ΅ΡΠΎΠ΄ SetEventOnMultipleFenceCompletion(). ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Vulkan-ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ VK_KHR_zero_initialize_workgroup_memory Π΄Π»Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π½ΡΠ»ΡΠΌΠΈ ΠΏΠ°ΠΌΡΡΠΈ Π΄Π»Ρ ΡΠ΅ΠΉΠ΄Π΅ΡΠΎΠ². Π ΡΠΈΡΠ»ΠΎ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΡ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΎ Vulakan-ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ VK_KHR_maintenance2, ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ΅ Π² ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Vulkan 1.1.
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π΄ΠΈΠ·Π°ΡΡΠ΅ΠΌΠ±Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅ΠΉΠ΄Π΅ΡΠΎΠ² SPIR-V ΠΈ Π±ΠΈΠ½Π°ΡΠ½ΡΡ ΡΡΡΠ΅ΠΊΡΠΎΠ² Β«fx_2_0Β».
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»ΡΠ½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΊΠΎΡΠ²Π΅Π½Π½ΠΎΠΉ Π°Π΄ΡΠ΅ΡΠ°ΡΠΈΠΈ ΠΏΠΎΡΡΠΎΡΠ½Π½ΡΡ Π±ΡΡΠ΅ΡΠΎΠ² Π² GLSL (OpenGL Shading Language).
- Π ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠ·ΡΠΊΠ° ΡΠ΅ΠΉΠ΄Π΅ΡΠΎΠ² MSL (Metal Shading Language), ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ Apple Π² Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΌ API Metal, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠ΅ΠΊΡΡΡΡ.
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ HLSL: AllMemoryBarrier(), AllMemoryBarrierWithGroupSync(), DeviceMemoryBarrier(), DeviceMemoryBarrierWithGroupSync(), GroupMemoryBarrier() ΠΈ GroupMemoryBarrierWithGroupSync().
- Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ ΡΠ»Π°Π³ΠΈ VKD3D_SHADER_COMPILE_OPTION_FEATURE_ZERO_INITIALIZE_WORKGROUP_MEMORY, VKD3D_SHADER_COMPONENT_INT64, VKD3D_SHADER_COMPONENT_FLOAT16, VKD3D_SHADER_COMPONENT_UINT16, VKD3D_SHADER_COMPONENT_INT16, VKD3D_SHADER_RESOURCE_DATA_NONE ΠΈ VKD3D_SHADER_RESOURCE_DATA_UINT.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: opennet.ru