ΠΡΠΎΠ΅ΠΊΡ Wine ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π° Π²Π΅ΡΡΠΈΡ vkd3d 1.16 Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° Direct3D 12, ΡΠ°Π±ΠΎΡΠ΅ΡΠ° ΡΡΠ΅Π· ΡΡΠ°Π½ΡΠ»Π°ΡΠΈΡ Π½Π° ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½ΠΈΡ Π² Π³ΡΠ°ΡΠΈΡΠ½ΠΈΡ API Vulkan. ΠΠ°ΠΊΠ΅ΡΡΡ Π²ΠΊΠ»ΡΡΠ²Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈΡΠ΅ libvkd3d Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° Direct3D 12, libvkd3d-shader Ρ ΡΡΠ°Π½ΡΠ»Π°ΡΠΎΡ Π·Π° Π²Π΅ΡΡΠΈΠΈ 4 ΠΈ 5 Π½Π° ΡΠ΅ΠΉΠ΄Π΅ΡΠΈΡΠ΅, ΠΈ libvkd3d-utils Ρ ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π° ΠΎΠΏΡΠΎΡΡΡΠ²Π°Π½Π΅ Π½Π° ΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡΡΠ° Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡΠ° Direct3D 12, ΠΊΠ°ΠΊΡΠΎ ΠΈ Π½Π°Π±ΠΎΡ ΠΎΡ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠΈ, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΠΏΠΎΡΡ Π½Π° glxgears Π½Π° Direct3D 12. ΠΠΎΠ΄ΡΡ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΠ΅ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½ΡΠ²Π° ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΡ LGPLv2.1.
ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° libvkd3d ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΠΏΠΎ-Π³ΠΎΠ»ΡΠΌΠ°ΡΠ° ΡΠ°ΡΡ ΠΎΡ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈΡΠ΅ Π½Π° Direct3D 12, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ Π·Π° Π³ΡΠ°ΡΠΈΠΊΠ° ΠΈ ΠΈΠ·ΡΠΈΡΠ»Π΅Π½ΠΈΡ, ΠΎΠΏΠ°ΡΠΊΠΈ ΠΈ ΡΠΏΠΈΡΡΡΠΈ Ρ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ, Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠΈ ΠΈ Ρ ΠΈΠΏ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠΈ, ΠΊΠΎΡΠ΅Π½Π½ΠΈ ΡΠΈΠ³Π½Π°ΡΡΡΠΈ, Π½Π΅ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½ Π΄ΠΎΡΡΡΠΏ, Sampler-ΠΈ, ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΈ ΡΠΈΠ³Π½Π°ΡΡΡΠΈ, ΠΊΠΎΡΠ΅Π½Π½ΠΈ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠΈ, Π½Π΅ΠΏΡΡΠΊΠ° (indirect) ΡΠ΅Π½Π΄ΠΈΡΠ°Π½Π΅, ΠΌΠ΅ΡΠΎΠ΄ΠΈ Clear*() ΠΈ Copy*(). Π libvkd3d-shader Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π±Π°ΠΉΡ-ΠΊΠΎΠ΄Π° Π½Π° ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠ΅ Π½Π° ΡΠ΅ΠΉΠ΄Π΅ΡΠΈ Π² ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠ½Π΅ SPIR-V. ΠΠΎΠ΄Π΄ΡΡΠΆΠ°Ρ ΡΠ΅ Π²Π΅ΡΡΠΈΠ½Π½ΠΈ, ΠΏΠΈΠΊΡΠ΅Π»Π½ΠΈ, ΡesselΠ°ΡΠΈΡΠ½ΠΈ, ΠΈΠ·ΡΠΈΡΠ»ΠΈΡΠ΅Π»Π½ΠΈ ΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΠΈ Π³Π΅ΠΎΠΌΠ΅ΡΡΠΈΡΠ½ΠΈ ΡΠ΅ΠΉΠ΄Π΅ΡΠΈ, ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈ Π΄Π΅ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° ΠΊΠΎΡΠ΅Π½Π½Π°ΡΠ° ΡΠΈΠ³Π½Π°ΡΡΡΠ°. ΠΡ ΡΠ΅ΠΉΠ΄Π΅ΡΠ½ΠΈΡΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΡΠ° ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ½ΠΈ, Π°ΡΠΎΠΌΠ°ΡΠ½ΠΈ ΠΈ Π±ΠΈΡΠΎΠ²ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΈ Π·Π° ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠΎΡΠΎΠΊΠ° Π½Π° Π΄Π°Π½Π½ΠΈ, ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ 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 Π·Π° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ° Ρ Π½ΡΠ»ΠΈ Π·Π° ΡΠ΅ΠΉΠ΄Π΅ΡΠΈΡΠ΅. ΠΠ°Π΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π½ΠΎΡΠΎ Π²ΠΊΠ»ΡΡΠ²Π° ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΠ΅ΡΠΎ Vulkan 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
