Опубліковано графічний стандарт Vulkan 1.3

Після двох років роботи консорціум Khronos, який займається розробкою графічних стандартів, опублікував специфікацію Vulkan 1.3, яка визначає API для доступу до графічних та обчислювальних можливостей GPU. Нова специфікація увібрала в себе виправлення і розширення, що накопичилися за два роки. Наголошується, що вимоги специфікації Vulkan 1.3 розраховані на графічне обладнання класу OpenGL ES 3.1, що дозволить забезпечити підтримку нового графічного API у всіх GPU, які підтримують Vulkan 1.2. Інструментарій Vulkan SDK планують опублікувати у середині лютого. Крім основної специфікації, планується запропонувати додаткові розширення для мобільних і настільних пристроїв середньої та вищої ланки, підтримка яких здійснюватиметься в рамках редакції «Vulkan Milestone».

Одночасно представлено план реалізації підтримки нової специфікації та додаткових розширень у графічних платах та драйверах пристроїв. Продукти з підтримкою Vulkan 1.3 готуються випустити компанії Intel, AMD, ARM та NVIDIA. Наприклад, компанія AMD заявила про швидке забезпечення підтримки Vulkan 1.3 у серії графічних карток AMD Radeon RX Vega, а також у всіх картках на базі архітектури AMD RDNA. Компанія NVIDIA готується опублікувати драйвери з підтримкою Vulkan 1.3 для Linux та Windows. Компанія ARM додасть підтримки Vulkan 1.3 у GPU Mali.

Основні нововведення:

  • Реалізовано підтримку спрощених проходів малювання (Streamlining Render Passes, VK_KHR_dynamic_rendering), що дозволяють розпочати малювання без створення проходів малювання та об'єктів фреймбуфера.
  • Додані нові розширення для спрощення управління компіляцією графічного конвеєра (pipeline, набір операцій, що перетворює векторні графічні примітиви та текстури на піксельну виставу).
    • VK_EXT_extended_dynamic_state, VK_EXT_extended_dynamic_state2 — додають додаткові динамічні стани для скорочення числа об'єктів стану, що компілюються і прикріплюються.
    • VK_EXT_pipeline_creation_cache_control - надає розширені інструменти керування тим, коли і як компілювати конвеєри.
    • VK_EXT_pipeline_creation_feedback — надає інформацію про скомпільовані конвеєри для спрощення профілювання та налагодження.
  • Ряд можливостей переведені з опціональних до обов'язкових. Наприклад, обов'язковими тепер є реалізація буферних посилань (VK_KHR_buffer_device_address) і моделі пам'яті Vulkan, що визначає як паралельно виконувані потоки можуть звертатися до даних і операцій синхронізації, що спільно використовуються.
  • Надано засоби точного управління підгрупами (VK_EXT_subgroup_size_control), за допомогою яких виробники можуть надавати підтримку кількох розмірів підгруп, а розробники вибирати необхідний розмір.
  • Надано розширення VK_KHR_shader_integer_dot_product, яке можна використовувати для оптимізації роботи фреймворків машинного навчання завдяки апаратному прискоренню операцій cкалярного твору.
  • Всього до складу включено 23 нових розширення:
    • VK_KHR_copy_commands2
    • VK_KHR_dynamic_rendering
    • VK_KHR_format_feature_flags2
    • VK_KHR_maintenance4
    • VK_KHR_shader_integer_dot_product
    • VK_KHR_shader_non_semantic_info
    • VK_KHR_shader_terminate_invocation
    • VK_KHR_synchronization2
    • VK_KHR_zero_initialize_workgroup_memory
    • VK_EXT_4444_формати
    • VK_EXT_розширений_динамічний_ стан
    • VK_EXT_extended_dynamic_state2
    • VK_EXT_витривалість зображення
    • VK_EXT_inline_uniform_block
    • ВКонтакте
    • VK_EXT_pipeline_creation_feedback
    • VK_EXT_приватні_дані
    • VK_EXT_shader_demote_to_helper_invocation
    • VK_EXT_контроль підгрупи_розміру
    • VK_EXT_текст_буфер_вирівнювання
    • VK_EXT_texture_compression_astc_hdr
    • VK_EXT_tooling_info
    • VK_EXT_ycbcr_2plane_444_formats
  • Додано новий тип об'єктів VkPrivateDataSlot. Реалізовано 37 нових команд та понад 60 структур.
  • Оновлено специфікацію SPIR-V 1.6, що визначає універсальне для всіх платформ проміжне уявлення шейдерів, яке може застосовуватися як для графіки, так і для паралельних обчислень. SPIR-V має на увазі виділення окремої фази компіляції шейдерів у проміжне уявлення, що дозволяє створювати фронтенди для різних високорівневих мов. На основі різних високорівневих реалізацій окремо генерується єдиний проміжний код, який можна використовувати драйверами OpenGL, Vulkan і OpenCL без застосування вбудованого компілятора шейдерів.
  • Запропоновано концепцію профілів сумісності. Першим компанією Google підготовлений базовий профіль (baseline profile) для платформи Android, який спростить визначення на пристрої рівня підтримки розширених можливостей Vulkan, що виходять за межі специфікації Vulkan 1.0. Для більшості пристроїв підтримка профілю може бути забезпечена без встановлення OTA-оновлень.

Нагадаємо, що API Vulkan примітний кардинальним спрощенням драйверів, виносом генерації команд GPU на бік програми, можливістю підключення шарів налагодження, уніфікацією API для різних платформ і застосуванням предкомпилированного проміжного представлення коду для виконання на стороні GPU. Для забезпечення високої продуктивності та передбачуваності, Vulkan надає додаткам засоби для прямого керування операціями GPU та вбудовану підтримку багатопоточної обробки команд GPU, що мінімізує накладні витрати, що вносяться драйвером, а можливості, що реалізуються на стороні драйвера, помітно спрощуються і стають більш передбачуваними. Наприклад, такі операції, як управління пам'яттю та обробка помилок, що реалізуються в OpenGL на стороні драйвера, Vulkan винесені на рівень програми.

Vulkan охоплює всі доступні платформи та надає єдиний API для настільних, мобільних систем та Web, дозволяючи використовувати один загальний API для різних графічних процесорів та областей застосування. Завдяки багатошаровій архітектурі Vulkan, що передбачає створення інструментів, що працюють з будь-якими GPU, виробники обладнання можуть використовувати при розробці типові інструменти для перевірки коду, налагодження та профілювання. Для створення шейдерів пропонується нове переносне проміжне уявлення SPIR-V, засноване на LLVM і використовує спільні з OpenCL базові технології. Для управління пристроями та екранами Vulkan пропонується інтерфейс WSI (Window System Integration), що вирішує приблизно ті ж завдання, що і EGL в OpenGL ES. Підтримка WSI з коробки доступна в Wayland - всі програми, що використовують Vulkan, можуть запускатися в оточенні немодифікованих серверів Wayland. Можливість роботи через WSI також забезпечена для Android, X11 (c DRI3), Windows, Tizen, MacOS та iOS.

Джерело: opennet.ru

Додати коментар або відгук