ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ графичСский стандарт Vulkan 1.4

ПослС ΠΏΠΎΡ‡Ρ‚ΠΈ Ρ‚Ρ€Ρ‘Ρ… Π»Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ консорциум Khronos, Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΠΉΡΡ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ графичСских стандартов, ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π» ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ Vulkan 1.4, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΡƒΡŽ API для доступа ΠΊ графичСским ΠΈ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ возмоТностям GPU. Новая спСцификация Π²ΠΎΠ±Ρ€Π°Π»Π° Π² сСбя накопившиСся Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π½Π΅Π΅ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π»ΠΈΡΡŒ ΠΊΠ°ΠΊ ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅, Π° Ρ‚Π°ΠΊΠΆΠ΅ прСдоставила ряд Π½ΠΎΠ²Ρ‹Ρ… возмоТностСй ΠΈ повысила ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ трСбования ΠΊ ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΡŽ. Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Vulkan SDK ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΡŽΡ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ Π² январС 2025 Π³ΠΎΠ΄Π°.

ΠŸΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρ‹ с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ Vulkan 1.4 готовятся Π²Ρ‹ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ AMD, Arm, Imagination, Intel, NVIDIA, Qualcomm ΠΈ Samsung. ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Ρ‹ для GPU AMD (radv), Apple M1/M2 (honeykrisp), Intel (anv), NVIDIA (nvk) ΠΈ Qualcomm (tu), Ρ€Π°Π·Π²ΠΈΠ²Π°Π΅ΠΌΡ‹Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ Mesa, ΡƒΠΆΠ΅ ΠΏΡ€ΠΎΡˆΠ»ΠΈ всС тСсты совмСстимости с Vulkan 1.4 ΠΈΠ· Π½Π°Π±ΠΎΡ€Π° CTS (Khronos Conformance Test Suite) ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π² список сСртифицированных Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ². Π’ список Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Ρ‹ Samsung ΠΈ Qualcomm для ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Android, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Ρ‹ для GPU PowerVR D-Series DXT* ΠΎΡ‚ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Imagination Technologies ΠΈ ΠΏΡ€ΠΎΠΏΡ€ΠΈΠ΅Ρ‚Π°Ρ€Π½Ρ‹Π΅ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Ρ‹ NVIDIA.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Π½ΠΎΠ²ΡˆΠ΅ΡΡ‚Π²Π°:

  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° «Streaming Transfers», ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½ΠΎΠ³ΠΎ для обСспСчСния ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΎΠ±ΡŠΡ‘ΠΌΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠ΅ΠΆΠ΄Ρƒ основной систСмой (хостом) ΠΈ графичСским устройством, Π½Π΅ прСрывая ΠΏΡ€ΠΈ этом Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³ ΠΈ Π½Π΅ замСдляя Π΅Π³ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ VK_EXT_host_image_copy, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ являСтся ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΉ.
  • ΠŸΠ΅Ρ€Π΅Π²Π΅Π΄Π΅Π½Ρ‹ Π² разряд ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… возмоТности, Π½Π°Ρ†Π΅Π»Π΅Π½Π½Ρ‹Π΅ Π½Π° ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ:
    • Push Descriptors — Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ обновлСния дСскрипторов нСпосрСдствСнно Π² Π±ΡƒΡ„Π΅Ρ€ ΠΊΠΎΠΌΠ°Π½Π΄, вмСсто создания ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Π½Π°Π±ΠΎΡ€ΠΎΠ² дСскрипторов ΠΈ ΠΈΡ… привязки ΠΊ Π±ΡƒΡ„Π΅Ρ€Ρƒ ΠΊΠΎΠΌΠ°Π½Π΄.
    • VK_KHR_dynamic_rendering_local_read — позволяСт Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΈΠ· Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Π±ΡƒΡ„Π΅Ρ€ΠΎΠ² (attachments) ΠΈ рСсурсов, записанных ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΌΠΈ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π½Ρ‹ΠΌΠΈ ΡˆΠ΅ΠΉΠ΄Π΅Ρ€Π°ΠΌΠΈ, Π² Ρ€Π°ΠΌΠΊΠ°Ρ… динамичСских ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΎΠ² Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³Π° (render pass).
    • VK_EXT_scalar_block_layout — позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π‘ΠΈ-ΠΏΠΎΠ΄ΠΎΠ±Π½ΡƒΡŽ структуру для Π±Π»ΠΎΠΊΠΎΠ² SPIR-V, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ Π½Π΅ скалярныС Ρ‚ΠΈΠΏΡ‹ Π½Π° основС Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΈΡ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ².
  • Π’ состав Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ VK_KHR_maintenance5 ΠΈ VK_KHR_maintenance6, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅Π΅ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈ структуры для упрощСния управлСния рСсурсами ΠΈ ΡˆΠ΅ΠΉΠ΄Π΅Ρ€Π°ΠΌΠΈ.
  • Π“Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³Π° с Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ 8K (7680 x 4320 пиксСлСй) ΠΈ с использованиСм Π΄ΠΎ 8 нСзависимых Π±ΡƒΡ„Π΅Ρ€ΠΎΠ² Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³Π°.
  • Π’ состав Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ:
    • VK_KHR_global_priority

    • VK_KHR_index_type_uint8

    • VK_KHR_line_rasterization

    • VK_KHR_load_store_op_none

    • VK_KHR_map_memory2

    • VK_KHR_push_descriptor

    • VK_KHR_shader_expect_assume

    • VK_KHR_shader_float_controls2

    • VK_KHR_shader_subgroup_rotate

    • VK_KHR_vertex_attribute_divisor

    • VK_EXT_pipeline_protected_access

    • VK_EXT_pipeline_robustness

  • ΠŸΠ΅Ρ€Π΅Π²Π΅Π΄Π΅Π½Ρ‹ Π² разряд ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠ½ΠΎΠ³ΠΈΠ΅ возмоТности, Ρ€Π°Π½Π΅Π΅ являвшиСся ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° большая порция Π½ΠΎΠ²Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈ структур.

API Vulkan ΠΏΡ€ΠΈΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»Π΅Π½ ΠΊΠ°Ρ€Π΄ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½ΠΈΠ΅ΠΌ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ², выносом Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ GPU Π½Π° сторону прилоТСния, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½Ρ‹Ρ… слоёв, ΡƒΠ½ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠ΅ΠΉ API для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΏΡ€Π΅Π΄ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ прСдставлСния ΠΊΠΎΠ΄Π° для выполнСния Π½Π° сторонС GPU.

Для обСспСчСния высокой ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ прСдсказуСмости, Vulkan прСдоставляСт прилоТСниям срСдства для прямого управлСния опСрациями GPU ΠΈ Π²ΡΡ‚Ρ€ΠΎΠ΅Π½Π½ΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ GPU, Ρ‡Ρ‚ΠΎ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Π΅ расходы, вносимыС Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠΌ, Π° Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π½Π° сторонС Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° возмоТности Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°ΡŽΡ‚ΡΡ ΠΈ становятся Π±ΠΎΠ»Π΅Π΅ прСдсказуСмыми. НапримСр, Ρ‚Π°ΠΊΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΊΠ°ΠΊ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ошибок, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π² OpenGL Π½Π° сторонС Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°, Π² Vulkan вынСсСны Π½Π° ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ прилоТСния.

Vulkan ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ всС доступныС ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈ прСдоставляСт Π΅Π΄ΠΈΠ½Ρ‹ΠΉ API для Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠ½Ρ‹Ρ…, ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… систСм ΠΈ Web, позволяя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΎΠ±Ρ‰ΠΈΠΉ API для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… графичСских процСссоров ΠΈ областСй примСнСния. Благодаря многослойной Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ Vulkan, ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°ΡŽΡ‰Π΅ΠΉ созданиС инструмСнтов, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… с Π»ΡŽΠ±Ρ‹ΠΌΠΈ GPU, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΠΈ оборудования ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Ρ‚ΠΈΠΏΠΎΠ²Ρ‹Π΅ инструмСнты для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΊΠΎΠ΄Π°, ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΈ профилирования.

Для создания ΡˆΠ΅ΠΉΠ΄Π΅Ρ€ΠΎΠ² прСдлагаСтся пСрСносимоС ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ΅ прСдставлСниС SPIR-V, основанноС Π½Π° LLVM ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π΅Π΅ ΠΎΠ±Ρ‰ΠΈΠ΅ с OpenCL Π±Π°Π·ΠΎΠ²Ρ‹Π΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ. C Vulkan Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ язык ΡˆΠ΅ΠΉΠ΄Π΅Ρ€ΠΎΠ² HLSL, примСняСмый Π² DirectX, Ρ‡Π΅Ρ€Π΅Π· Π΅Π³ΠΎ Ρ‚Ρ€Π°Π½ΡΠ»ΡΡ†ΠΈΡŽ Π² SPIR-V. Для управлСния устройствами ΠΈ экранами Π² Vulkan прСдлагаСтся интСрфСйс WSI (Window System Integration), Ρ€Π΅ΡˆΠ°ΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π΅ ΠΆΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ, Ρ‡Ρ‚ΠΎ ΠΈ EGL Π² OpenGL ES. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° WSI ΠΈΠ· ΠΊΠΎΡ€ΠΎΠ±ΠΊΠΈ доступна Π² Wayland — всС прилоТСния, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ Vulkan, ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒΡΡ Π² ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΈ Π½Π΅ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… сСрвСров Wayland. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ‡Π΅Ρ€Π΅Π· WSI Ρ‚Π°ΠΊΠΆΠ΅ обСспСчСна для Android, X11 (c DRI3), Windows, Tizen, macOS ΠΈ iOS.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru