Что такое Vulkan и чем он отличается от OpenGL?

152

Khronos Group (орган стандартизации OpenGL) только что объявил Vulkan :

Vulkan - это новое поколение API открытого стандарта для высокопроизводительного доступа к графике и вычислениям на современных графических процессорах. Этот базовый проект, ранее называемый Инициативой OpenGL следующего поколения, предоставляет приложениям прямой контроль над ускорением графического процессора для максимальной производительности и предсказуемости.

Их страница довольно marketese / жаргон -heavy, как пресс - релиз ... Проще говоря, что это значит Vulkan разработчиков игр? (Гэйб Ньюэлл цитируется как категорически за, без дальнейшего объяснения.)

Каковы именно отношения Vulkan с OpenGL? Его предыдущее название «glNext» (сокращение от «OpenGL Initiative следующего поколения») делает его похожим на замену.


Обновление: спецификация Vulkan 1.0 была выпущена 16-02-2016.

Анко
источник
3
Qo'noS и Vulcan ...
IllidanS4
14
Перевод для людей, которые не уловили дрейфа Звездного пути : Хронос и Вулкан звучат как Qo'noS и Вулкан ; планеты родного мира рас клингонов и вулканцев. Леонард Нимой , актер Спока (очень популярный персонаж), недавно умер 2015-02-27, так что спекуляций предостаточно, что имя было данью уважения. Тем не менее, это было совпадением: Vulkan запрос товарного знака была подана 2015-02-19; до смерти Нимой.
Анко
7
Также Мантия -> Лава -> Вулкан -> Вулкан.
jmegaffin
1
@Boreal Vulkan == Вулкан на многих языках (немецкий, русский (с поправкой на кир.) И т. Д.). Так что это Мантия -> Лава -> Вулкан (Вулкан) действительно :)
user362515

Ответы:

120

Vulkan - это новый API для графики с аппаратным ускорением (и общих вычислений) через традиционные графические процессоры. OpenGL будет продолжать разрабатываться, так как это API более высокого уровня, чем задумано Vulkan. Первоначально называемый «glNext», можно сделать вывод, что Vulkan, скорее всего, в конечном итоге станет «OpenGL 5», но орган по стандартизации в конце концов решил, что новое имя будет лучше совпадать с относительно чистым разрывом, который API-интерфейс делает из существующих Парадигмы OpenGL.

Практические преимущества Vulkan для разработчиков игр заключаются, прежде всего, в контроле (например, в том, что он позволяет использовать его больше, потенциально позволяя улучшить оптимизацию за счет значительно большей предварительной работы со стороны разработчика). В частности:

  • API ориентирован на асинхронную генерацию командных буферов в нескольких потоках и последовательную обработку этих буферов в командный конвейер. Это отражает реалии современного оборудования. Большинство высокопрофильных и / или высокопроизводительных программ, основанных на OpenGL, сегодня сами реализуют такое поведение; наличие поддержки API само по себе означает, что разработчикам не нужно самим внедрять и поддерживать эту платформу или что они могут делать это с меньшими усилиями.
  • Задачи управления потоками и памятью оставлены на усмотрение приложения, а не драйвера, что позволяет разработчикам игр лучше контролировать это поведение и, следовательно, потенциально более точно адаптировать это поведение к потребностям своей игры.
  • Слои валидации и диагностики могут быть включены независимо, что теоретически позволяет улучшить интеграцию инструментов с API (от чего сам OpenGL пострадал) и отключить чрезмерную валидацию, теоретически позволяя « графике на третьем уровне » быть гораздо более производительной.
  • Между мобильными и настольными версиями нет жесткой разницы в API, которая теоретически облегчит портирование кроссплатформенных игр и, как минимум, уменьшит головные боли при проверке версий, которые все ненавидят.

Vulkan очень C-like / OpenGL-like в поверхностной структуре (внешний вид вызовов API и т. Д. Однако он лучше типизирован (в том intсмысле, что не все является пустым; есть соответствующие определения типов и т. Д.).

Это намного ниже уровня, чем OpenGL. Можно ожидать скачка в оперативной настройке и сложности между OpenGL и Vulkan, как это было видно при переходе от D3D9 к D3D10, который раскрыл гораздо больше деталей работы устройства GPU под прикрытием клиенту API. Переход на самом деле больше похож на D3D11 на 12, так как D3D12 сам по себе очень похож на API по Вулкану в плане возможностей.

Джош
источник
18
Возможно, стоит отметить, что Vulkan - это, в основном, версия Mantle с высокой степенью повторяемости: community.amd.com/community/amd-blogs/amd-gaming/blog/2015/03/… Соглашения API кажутся чем-то похожими на DSA OpenGL, за исключением повсеместного glпрефикса, замененного на vk: blog.imgtec.com/powervr/…
jmegaffin
Я предполагал, что это будет так, но не видел никаких доказательств до этой ссылки, спасибо.
Джош
3
К вашему сведению, вы сможете заменить домыслы и догадки на (некоторые) неопровержимые факты после презентации Valve в четверг, и мораторий на членов Khronos, раскрывающий больше деталей, (в основном) отменен.
Шон Мидлдич
4
Я нахожу штуку с байт-кодом шейдера немного забавной, учитывая, что раньше был простой язык, похожий на ассемблер, для шейдеров, а затем его заменили на сложный язык (GLSL), и теперь мы возвращаемся к простому языку байт-кода.
Immibis
2
Я думал, что Vulkan, как и Mantle, будет стоять рядом с OpenGL для более низкоуровневого доступа, а не для его полной замены. По крайней мере, это то, что я прочитал до сих пор. Или Vulkan будет охватывать операции как низкого, так и высокого уровня?
Рой Т.
18

Чтобы уточнить будущее OpenGL:

OpenGL может достичь производительности, сопоставимой с Vulkan, при вызовах отрисовки в секунду, а также в отношении общих накладных расходов драйвера:

  • Самые последние расширения OpenGL на самом деле устраняют большую нагрузку на драйвер, делая все без привязок (например, ARB_direct_state_access(ядро 4.5) ARB_bindless_texture, ...).
  • При постоянном отображении ( ARB_buffer_storageядро в 4.4) буферная память может быть доступна непосредственно ЦП, поэтому синхронизация с GPU также явная, как и в Vulkan.
  • Будущие расширения, такие как NV_command_list(см. Презентацию Тристана Лораха Siggraph Asia 2014 ), вероятно, предоставят OpenGL ту же «парадигму питания GPU», что и Vulkan.
Alex
источник
11
На самом деле это не ответ на вопрос сам по себе.
MichaelHouse
1

Хронос недавно объявил о выпуске абсолютно нового API Vulkan, который будет дополнять (а в некоторых случаях заменять) OpenGL и OpenGL ES. Vulkan - это API с низким уровнем издержек, разработанный для того, чтобы приблизить код к металлу, повысить производительность и эффективность. Он основан на API Mantle от AMD, и окончательная спецификация ожидается в конце этого года.

В этом посте - Краткий обзор API Vulkan - Технический редактор Toptal Нермин Хайдарбегович объясняет, почему Vulkan может иметь большое значение в долгосрочной перспективе. Это может занять некоторое время, но этот кроссплатформенный API может кардинально улучшить производительность 3D на определенных устройствах, особенно многоядерных процессорах приложений, которые используются в миллиардах смартфонов и планшетов.

Дмитрий Павлов
источник
2
«Хронос недавно объявил о выпуске абсолютно нового API Vulkan». Гм, не по состоянию на 18 августа этого не произошло. Он не был «выпущен» каким-либо определением этого термина. Сейчас 8 декабря, и он до сих пор не выпущен.
Никол Болас
2
@NicolBolas - Это сейчас. Он был запущен сегодня: khronos.org/vulkan
beatgammit