У розробці 3D-додатків, відеоігор і систем віртуальної реальності настає новий етап. Спільними зусиллями розробники зробили важливий крок на шляху до уніфікації коду і більш ефективному використанню апаратних ресурсів. Консорціум Khronos Group, що нараховує більше ста компаній, офіційно представив першу версію відкритого кроссплатформенного API під назвою Vulkan (раніше - GLNext). Він забезпечує безпосередній контроль над ДП і ЦП, усуваючи «вузькі місця» і підвищуючи загальну продуктивність.
На форумах часто можна побачити однотипні питання про те, чи розкриє процесор X відеокарту Y і яка конфігурація при однаковому бюджеті буде продуктивніше в конкретних додатках. Він виникає через те, що сучасні ДП мають більшу продуктивність, ніж ЦП того ж рівня і покоління. В іграх та інших 3D-додатках часом виникають ситуації, коли на ЦП припадає велике навантаження, а ДП простоює. Наприклад, процесор обраховує взаємодія гравців і об'єктів, а відеокарта чекає від нього дані, щоб отрисовать наступний кадр. Через незбалансованість навантаження виникають затримки, а динамічна гра може перетворитися в покадровое слайд-шоу навіть з потужною відеокартою.
Зазначені проблеми характерні для платформи PC і практично незнайомі власниками ігрових консолей. Розробники консольних ігор завжди знають детальні специфікації приставок і можуть виконувати глибоку оптимізацію коду з урахуванням їх особливостей. Комп'ютери, ноутбуки, планшети - це зоопарк не тільки з різних конфігурацій, а й принципово відмінних архітектур. При створенні ігор для настільки різношерстої платформи пріоритетом стає універсальність коду, що негативно позначається на швидкості його виконання.
Порівняння Vulkan API і OpenGL (зображення: Khronos Group).
Розробники операційних систем по-різному намагаються вирішити проблему низької ефективності коду сторонніх додатків. Microsoft почала шукати шляхи оптимізації графічних обчислень давно, проте реальна підтримка низькорівневих операцій з'явилася тільки в DirectX 12. Цей API доступний лише в одній ОС - Windows 10. У свою чергу, положення Apple виявилося ближче до такого у виробників ігрових консолей. Коли одна і та ж компанія випускає мобільні процесори і софт, його узгодженої роботи домогтися куди легше. Проте, шляхи оптимізації самої розробки ігор і додатків у Apple далеко не вичерпані. В iOS 8 з'явився Metal API, також орієнтований на використання низькорівневих операцій.
Інші великі компанії воліють діяти спільно і в рамках відкритих стандартів. З'явився 16 років тому консорціум Khronos Group об'єднав понад сто виробників, включаючи таких кровних друзів, як AMD, Nvidia і Intel. Свого часу консорціум явив на світ відкриті стандарти OpenGL, OpenCL, OpenCV і багато інших.
Khronos Group налічує понад сто учасників.
У порівнянні з OpenGL, Vulkan дає розробникам можливість використовувати низькорівневі операції без шкоди для переносимості коду. За допомогою Vulkan на різних платформах можна досягти майже такого ж збалансованого алгоритму, як на спеціалізованих ігрових консолях. Цей API допомагає ефективніше використовувати апаратні можливості дискретних відеокарт і інтегрованих графічних чіпів в 2D і 3D-режимах.
Подібно DirectX 12, Vulkan підтримує прямий доступ до пам'яті GPU. Додатково Vulkan знижує залежність швидкості відтворення від якості драйверів. За рахунок трансляції коду шейдерних програм в проміжний двійковий формат, їх компіляцію можна виконувати вже на етапі розробки, а не під час запуску 3D-додатки.
Vulkan розробляється з середини 2014 року. В його основу лягли графічні бібліотеки іншого низькорівневого API - AMD Mantle. Компанія AMD також виступала в ролі редактора офіційних вказівок. Крім них Khronos group опублікувала ряд тестів, що демонструють перевагу нового API. Всі вони доступні на порталі GitHub.
«У Vulkan є величезний потенціал, - говорить Дін Секулік (Dean Sekulic), програміст Croteam. - Якщо сказати про нього в одному реченні, то з появою Vulkan завершилося давнє протистояння між борцями за продуктивність і переносимість коду. Зараз ми портіруем на нього The Talos Principle на підтвердження нової концепції розробки ».
Компанія Valve спонсорує створення відкритого SDK LunarG з підтримкою API Vulkan. Однак незважаючи на відкриті специфікації, доступні інструменти розробки, можливість глибокої оптимізації коду і інші переваги, Vulkan ще якийсь час буде рідко використовуваних API. Більшість ігроробів залишаться вірні DirectX 11/12 і OpenGL. Куди простіше підвищити системні вимоги або знизити якість графіки, ніж освоювати нові способи розробки. Розуміючи це, консорціум Khronos Group прагнути забезпечити підтримку Vulkan не тільки в нових ОС і графічних рішеннях, але і на морально застарілих системах.
Зараз Vulkan підтримується в середовищі Windows (починаючи з сьомої версії), Linux, SteamOS і Android. Найближчим часом очікується додавання підтримки ОС Tizen від Samsung. Бета-версії драйверів з підтримкою API Vulkan вже випустили AMD і Nvidia . На черзі Intel, Qualcomm, ARM і інші виробники, що входять в консорціум Khronos Group. Демонстрацію Vulkan на графічному чіпі ARM Mali можна побачити в ролику нижче.
В даний час Vulkan можна протестувати на відкритих з графічними чіпами Nvidia GeForce GT 630 і вище, AMD Radeon HD 7700 і новіше. Також API Vulkan підтримує гібридні процесори AMD з графічним ядром Radeon HD 8500 - 8900 і R2 - R9. Вбудована графіка десктопних і мобільних процесорів Intel підтримується Vulkan починаючи з сімейства Core п'ятого покоління.
Повною мірою можливості нового API розкриються перспективними графічними процесорами Nvidia серії Pascal і AMD з архітектурою GCN четвертого покоління. Відповідні відеокарти імовірно увійдуть в серію GTX 1xxx і Radeon Rx 400. За неофіційними даними початок їх продажів планується на другий квартал 2016 року.