Новые OpenGL — Vulkan и SPIR-V


Ранее называемый OpenGL следующего поколения, Vulkan-это новый кросс-платформенный графический API открытого стандарта. Теперь Khronos сделал его доступным в техническом предварительном просмотре, а также выпустил предварительную спецификацию Open CL 2.1.

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

В пресс-релизе Вулкана говорится::

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

Первоначальные спецификации и реализации Vulkan ожидаются в конце этого года, и компаниям рекомендуется присоединиться к Khronos для участия в его разработке. 

Microsoft присоединилась к Khronos в августе прошлого года, и это, несомненно, связано с тем, что Vulkan отказывается от OpenGL-способа обработки шейдерных программ в пользу подхода Direct3D. Разработчики скомпилируют шейдеры в промежуточную форму под названием SPIR-V.  

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

SPIR-V будет использоваться как Vulkan, так и OpenCL 2.1, предварительная спецификация которого была выпущена. Его главная особенность заключается в том, что он вводит новый язык ядра, основанный на подмножестве C++. 

Согласно его пресс-релизу:

Язык ядра Open CL C++ значительно повышает производительность параллельного программирования, предоставляя лямбда-функции, классы, шаблоны, перегрузку операторов и многие другие функции C++, чтобы освободить разработчиков от деталей низкоуровневого кодирования без ущерба для производительности. OpenCL C++ позволяет многократно использовать библиотеки устройств и контейнеры для быстрого и элегантного кода, а шаблоны позволяют метапрограммировать высокоадаптивное программное обеспечение, которое обеспечивает высокую переносимость производительности.  

Кроме того, OpenCL 2.1 вносит улучшения в API OpenCL, в том числе:

Подгруппы, которые предоставляют аппаратную потоковую обработку, включаются в ядро вместе с дополнительными операциями запроса подгрупп для повышения гибкости;

clCloneKernel позволяет копировать объекты ядра и состояние для безопасной реализации конструкторов копирования в классах-оболочках;

Запросы таймера устройства с низкой задержкой поддерживают выравнивание профилирования между кодом устройства и хоста.

Вулкан добился быстрого прогресса с тех пор, как в июне 2014 года началась следующая инициатива OpenGL, и имеет некоторые положительные характеристики.

Однако OpenGL будет жить дальше. Контроль более низкого уровня, предоставляемый Vulkan, означает, что он может не подходить для всех программ. Для них лучше всего подойдет традиционный OpenGL, в котором драйвер обрабатывает большую часть рабочей нагрузки.

В этом смысле Vulkan-это не следующая версия OpenGL, а альтернатива аналогичным графическим системам «ближе к металлу», таким как AMDs Mantle, Microsoft DirectX 12 и Apple Metal. Преимущество Vulkan в том, что он не привязан к конкретной ОС или оборудованию. 


Добавить комментарий