Консорциум Khronos, занимающийся разработкой графических стандартов, опубликовал спецификацию Vulkan 1.0, в которой определён новый высокоэффективный API для доступа к графическим и вычислительным возможностям GPU. Одновременно компания Intel открыла исходные тексты нового видеодрайвера с полной поддержкой API Vulkan. Драйвер доступен для чипов Broadwell, Braswell и Sky Lake, и может использоваться в X11 с DRI3 и в Wayland. Код драйвера принят в репозиторий проекта Mesa и войдёт в состав следующего релиза Mesa 11.3. Пакеты с новым драйвером подготовлены для Fedora и Ubuntu.

Драйверы с поддержкой Vulkan также выпустили компании AMD, NVIDIA, Qualcomm и Imagination. Для разработки игр и приложений, использующих API Vulkan, компания Valve опубликовала SDK для Linux и Windows, а также прототип открытого драйвера с поддержкой Vulkan. Компания Google подготовила SDK для Android. Компания Qt Company объявила о вхождении в консорциум Khronos и работе над поддержкой Vulkan в Qt. Компания Collabora сообщила о работе по обеспечению поддержки Vulkan WSI в Wayland.

Разработка Vulkan была инициирована полтора года назад в рамках инициативы OpenGL Next Generation, нацеленной на создание API, отвечающего требованиям современных реалий и устраняющего основные недостатки OpenGL, такие как усложнённость драйверов, встроенный компилятор шейдеров, неоптимальные механизмы обработки ошибок, раздельные API для десктоптов и мобильных систем. Vulkan примечателен кардинальным упрощением драйверов, выносом генерации команд GPU на сторону приложения, возможностью подключения отладочных слоёв, унификацией API для различных платформ и применением предкомпилированного промежуточного представления кода для выполнения на стороне GPU.

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

Vulkan охватывает все доступные платформы и предоставляет единый API для настольных, мобильных систем и Web, позволяя использовать один общий API для различных графических процессоров и областей применения. Современные GPU для настольных, встраиваемых и мобильных систем приблизились друг к другу по функциональности и внутренней архитектуре, что позволяет избавиться от устаревшей привязки к разным спецификациям (OpenGL, OpenGL ES). Благодаря многослойной архитектуре Vulkan, подразумевающей создание инструментов, работающих с любыми GPU, производители оборудования могут использовать при разработке типовые инструменты для проверки кода, отладки и профилирования.

Для создания шейдеров предлагается новое переносимое промежуточное представление SPIR-V, основанное на LLVM и использующее общие с OpenCL 2.1 базовые технологии. SPIR-V универсален для всех платформ и может применяться как для графики, так и для параллельных вычислений. SPIR-V подразумевает выделение отдельной фазы компиляции шейдеров в промежуточное представление, что позволяет создавать фронтэнды для различных высокоуровневых языков (в том числе доступны трансляторы для GLSL и OpenCL C). На основе различных высокоуровневых реализаций отдельно генерируется единый промежуточный код, который может использоваться драйверами Vulkan и OpenCL без применения встроенного компилятора шейдеров. Избавление драйвера от компилятора шейдеров существенно упрощает драйвер, ускоряет загрузку кода для GPU и делает драйвер независимым от высокоуровневых языков разработки программ для GPU.

Для управления устройствами и экранами в Vulkan предлагается интерфейс WSI (Window System Integration), решающий примерно те же задачи, что и EGL в OpenGL ES. Поддержка WSI из коробки доступна в Wayland - все приложения, использующие Vulkan, могут запускаться в окружении немодифицированных серверов Wayland, таких как Weston, GENIVI LayerManager, Mutter/GNOME Shell и Enlightenment. Возможность работы через WSI также обеспечена для Android, Mir, Windows (Vista+) и X11 (c DRI3).

Источник: http://www.opennet.ru/opennews/art.shtml?num=43887