- Vulkan
- Поддержка API на аппаратном уровне
- AMD
- Intel
- NVidia
- Проверка версии и возможностей ICD
- Vulkan (Русский)
- Установка
- Проверка
- Выбор драйвера Vulkan
- База данных оборудования Vulkan
- Решение проблем
- Error — vulkan: No DRI3 support
- Nvidia — vulkan is not working and can not initialize
- No device for the display GPU found. Are the intel-mesa drivers installed?
Vulkan
Vulkan API изначально был известен как «новое поколение OpenGL» или просто «glNext», но после анонса компания отказалась от этих названий в пользу названия Vulkan. Как и OpenGL, Vulkan позволяет с высокой производительностью отображать на всех платформах в реальном времени различные приложения с 3D-графикой, такие как игры или интерактивные книги, а также обеспечивает более высокую производительность и меньшую нагрузку на процессор, аналогично Direct3D 12, Metal и Mantle. Vulkan основан на технологиях AMD в Mantle. На текущий момент для Linux существует т.н. Vulkan SDK, который представляет собой библиотеку для загрузки низкоуровневых драйверов (ICD loader), заголовочные файлы для разработчиков (Vulkan Headers), специальную библиотеку для проверки корректности работы всех компонентов (Validation layers).
Т.к. Vulkan API в чем-то схож с Direct3D, появилось достаточное количество трансляторов Direct3D->Vulkan, которые значительно улучшают качество поддержки игр и приложений Windows под Linux. Самый известный пример такого транслятора — DXVK, который реализует в wine поддержку D3D11 через Vulkan.
Vulkan часто используют как альтернативу для реализации 2D/3D-функций в графике; см., например, GTK+4 и Qt.
Текущая доступная версия спецификации API по состоянию на 03.03.2023 г.: 1.3.242
Текущая доступная версия ICD/Headers/Validation layers в Сизифе: 1.3.239
Поддержка API на аппаратном уровне
Производитель | AMD | Intel | Nvidia |
---|---|---|---|
Реализация в MesaLib stable (22.3.x)/ Реализация в Mesalib unstable (23.0.x) | RADV 1.3.230 [1] /1.3.238 [2] | ANV 1.3.230 [3] /1.3.238 [4] | N/A |
Open-Source реализация от производителя | AMDVLK 1.3.240 [5] | ANV (см. выше) | N/A |
Closed-Source реализация от производителя | AMDGPU-PRO 1.2.199 [6] | N/A | nvidia_glx 1.3.224 [7] /1.3.236 [8] |
AMD
Самая разнообразная поддержка, есть много вариантов, которые можно попробовать для различных приложений. Изначально поддержка Vulkan для AMD появилась в MesaLib, написана не разработчиками из AMD и называется RADV (RADeon Vulkan). В настоящий момент является наиболее стабильной, гарантировано поддерживается многими приложениями и играми, но не обладает всеми возможностями в отличие от оф. версии от AMD (AMDVLK/AMDGPU-PRO).
команды для установки:
RADV/MesaLib [9]
$ apt-get install xorg-dri-radeon
$ apt-get install vulkan-amdgpu
ВАЖНО В amdvlk начиная с 2021.Q3.x стали убирать поддержку старых (до-Polaris) GPU, поэтому для этих карт рекомендуется оставаться на RADV.
ВАЖНО В свежей версии AMDVLK появились новые экспериментальные расширения, которые можно включить указав переменную окружения AMDVLK_ENABLE_DEVELOPING_EXT= , где может принимать некоторые значения, см. оф. документацию.
ВАЖНО По умолчанию в AMDVLK отключено сохранение шейдерного кеша на диск, т.е. шейдеры компилируются каждый раз на сеанс. Сделано это для совместимости, т.к. проверка работоспособности есть не для всех приложений/игр. Если вы уверены, что ваше приложение поддерживает работу с шейдерным кэшем, можете включить его самостоятельно:
$ cat ~/.config/amdPalSettings.cfg ShaderCacheMode,2 // включить запись шейдерного кеша на диск
Убедиться, что кеш создался, можно проверив каталог $HOME/.cache, где должен создаться каталог AMD:
$ ll ~/.cache/AMD/LlpcCache/ total 7620 .
ВАЖНО В Mesa начиная с 20.x стала использоваться реализация компилятора шейдеров для Vulkan (ACO), которая написана при поддержке Valve и не использует LLVM. Судя по результатам тестов, она работает чуть быстрее, чем стандартная реализация на базе LLVM. Но как и любая оптимизация, иногда ACO может работать неправильно или вообще препятствовать нормальной работе. Работу ACO можно контролировать через след. переменные окружения:
# отключить ACO полностью и использовать LLVM для компиляции шейдеров $ export RADV_DEBUG=llvm # отключить оптимизации в коде ACO, решает 90% проблем в работе :) $ ACO_DEBUG=noopt
Intel
Поддержка Vulkan в MesaLib осуществляется разработчиками из Intel, наиболее полная, но особо ничем не блещет. Просто работает(tm). Внутри MesaLib драйвер называется ANV
команды для установки: [10]
$ apt-get install xorg-dri-intel
NVidia
Поддержка Vulkan появилась и в закрытых драйверах от Nvidia, причем предлагается несколько версий на выбор:
- Стабильная версия из long-term и short-term версий драйверов
- Экспериментальная для разработчиков, доступная отдельно.
команды для установки:
стабильная версия
$ apt-get install nvidia_glx_, где может быть 390.xx или 410.xx
версия для разрабочиков [11]
$ apt-get install nvidia_glx=, где может быть 415.xx и выше
ВАЖНО Начиная с версии 39x NVidia изменила компилятор шейдеров для Vulkan на SPIR-V, в связи с этим в некоторых приложениях замечено падение производительности или ошибки отрисовки. Вернуться на предыдущую версию компилятора шейдеров можно через указание переменной окружения __GL_NextGenCompiler=0
Проверка версии и возможностей ICD
$ apt-get install vulkan-tools $ vulkaninfo --summary ========== VULKANINFO ========== Vulkan Instance Version: 1.3.211 Instance Extensions: count = 20 ------------------------------- . Devices: ======== GPU0: apiVersion = 4206796 (1.3.204) driverVersion = 92274689 (0x5800001) vendorID = 0x1002 deviceID = 0x7300 deviceType = PHYSICAL_DEVICE_TYPE_DISCRETE_GPU deviceName = AMD RADV FIJI driverID = DRIVER_ID_MESA_RADV driverName = radv driverInfo = Mesa 22.0.1 conformanceVersion = 1.2.7.1 deviceUUID = 00000000-0100-0000-0000-000000000000 driverUUID = 414d442d-4d45-5341-2d44-525600000000
- ↑ актуально для Mesa 22.3.6
- ↑ актуально для Mesa 23.0.0
- ↑ актуально для Mesa 22.3.6
- ↑ актуально для Mesa 23.0.0
- ↑ актуально для версии 2023.Q1.2
- ↑ актуально для версии 21.50.2
- ↑ актуально для версии 525.89.02
- ↑ актуально для версии 530.30.02
- ↑ для MesaLib unstable пакет называется vulkan-radeon
- ↑ для MesaLib unstable пакет называется vulkan-intel или vulkan-intel_hasvk для GPU Arc/Xe
- ↑ доступна там же, где и MesaLib unstable
Vulkan (Русский)
Состояние перевода: На этой странице представлен перевод статьи Vulkan. Дата последней синхронизации: 20 декабря 2020. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.
Vulkan (рус. Вулкан) — кроссплатформенный API для 2D- и 3D-графики, впервые представленный Khronos Group в рамках конференции GDC 2015.
Дополнительная информация доступна на веб-сайте Khronos.
Установка
- Vulkan в настоящее время официально не поддерживается Bumblebee[1], но работает с primus_vk или primus-vk-gitAUR .
- Драйвер Radeon Vulkan теперь поддерживает PRIME[2].
Чтобы запустить Vulkan-приложение потребуется установить пакет vulkan-icd-loader (и lib32-vulkan-icd-loader , если планируется запускать 32-битные приложения), а также драйвер Vulkan для видеокарты:
- Intel: vulkan-intel (или lib32-vulkan-intel для 32-битных предложений)
- NVIDIA: nvidia-utils (или lib32-nvidia-utils )
- AMD: есть три реализации, которые можно установить одновременно:
- vulkan-radeon (или lib32-vulkan-radeon ) — RADV (часть проекта Mesa)
- amdvlk (или lib32-amdvlk ) — AMDVLK Open (поддерживается AMD)
- vulkan-amdgpu-proAUR (или lib32-vulkan-amdgpu-proAUR ) — AMDVLK Closed (поддерживается AMD)
Также возможно установить программную реализацию Vulkan, известную, как lavapipe — vulkan-swrast .
Важно: «lavapipe — несовместимая реализация Vulkan и предлагается только для ознакомления»[3].
Другие драйверы можно установить вручную:
Для разработки приложений Vulkan установите vulkan-headers и, опционально, vulkan-validation-layers и vulkan-tools (в этом пакете также содержится утилита vulkaninfo ).
Проверка
Чтобы узнать, какие реализации Vulkan в настоящее время установлены в вашей системе, используйте следующую команду::
Выбор драйвера Vulkan
В некоторых случаях устанавливается несколько драйверов Vulkan (например, RADV и AMDVLK). Выбрать необходимый драйвер можно с помощью переменной окружения VK_ICD_FILENAMES . Например, запустить Steam с RADV-драйвером возможно следующей командой:
$ VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/radeon_icd.i686.json:/usr/share/vulkan/icd.d/radeon_icd.x86_64.json steam
Чтобы избежать сбоев в 32-битных играх, переменной окружения можно задать 32- и 64-битный вариант значения.
База данных оборудования Vulkan
База данных оборудования Vulkan содержит комбинации графических процессоров и драйверов. Предоставление собственной информации возможно с помощью vulkan-caps-viewer-wayland AUR или vulkan-caps-viewer-x11 AUR .
Решение проблем
Error — vulkan: No DRI3 support
При получении данной ошибки с драйвером Intel graphics может потребоваться принудительный выбор DRI3 и перезапуск Xorg:
/etc/X11/xorg.conf.d/20-intel.conf
Section "Device" Identifier "Intel Graphics" Driver "intel" Option "DRI" "3" EndSection
Nvidia — vulkan is not working and can not initialize
Проверьте, установлены ли в системе другие драйверы Vulkan, так как они могут предотвратить обнаружение Vulkan-драйвера Nvidia.
В качестве альтернативы задайте переменной окружения VK_ICD_FILENAMES значение /usr/share/vulkan/icd.d/nvidia_icd.json .
No device for the display GPU found. Are the intel-mesa drivers installed?
Попробуйте задать конфигурации intel_icd и primus_vk_wrapper в переменной окружения VK_ICD_FILENAMES :
export VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/intel_icd.x86_64.json:/usr/share/vulkan/icd.d/nv_vulkan_wrapper.json