Vulkan (Русский)
Из Википедии:
- Vulkan (рус. Вулкан) — кроссплатформенный API для 2D- и 3D-графики, впервые представленный Khronos Group в рамках конференции GDC 2015.
Дополнительная информация доступна на веб-сайте Vulkan.
Установка
Для запуска Vulkan-приложений установите пакет vulkan-icd-loader (и lib32-vulkan-icd-loader из репозитория multilib, если планируется запускать 32-битные приложения), а также драйвер Vulkan для видеокарты. Есть несколько пакетов, которые предоставляют vulkan-driver и lib32-vulkan-driver:
- Intel: vulkan-intel (или lib32-vulkan-intel для 32-битных приложений)
-
NVIDIA: есть две реализации:
- nvidia-utils (или lib32-nvidia-utils) — официальный проприетарный драйвер от NVIDIA
-
vulkan-nouveau (или lib32-vulkan-nouveau) — NVK (часть проекта Mesa) Примечание: Для включения NVK требуются дополнительные настройки в системе; смотрите раздел Nouveau (Русский)#Использование Vulkan-драйвера NVK.
-
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 (или lib32-vulkan-swrast)
- SwiftShader: swiftshader-gitAUR
Для разработки приложений Vulkan установите vulkan-headers и, опционально, vulkan-validation-layers, vulkan-man-pagesAUR и vulkan-tools (в этом пакете также содержатся утилиты vulkaninfo и vkcube).
Проверка
Чтобы узнать, какие реализации Vulkan в настоящее время установлены в вашей системе, используйте следующую команду:
$ ls /usr/share/vulkan/icd.d/
Чтобы убедиться, что Vulkan работает с вашим оборудованием, установите vulkan-tools и используйте команду vulkaninfo
для получения информации о вашей системе. Если она сообщает информацию о видеокарте, значит Vulkan работает.
$ vulkaninfo
Выбор
Выбор устройства
В системах с несколькими видеокартами может понадобиться принудительно использовать определённую видеокарту. Для этого нужен vulkan-mesa-layers. Видеокарта выбирается с помощью установки переменной окружения MESA_VK_DEVICE_SELECT
со значением vendorID:deviceID
Узнать список доступных видеокарт можно командой:
$ MESA_VK_DEVICE_SELECT=list vulkaninfo
Добавление !
в конце значения переменной делает выбор принудительным (приложение не увидит другие видеокарты помимо указанной). Подробнее: Vulkan mesa device select layer environment variables.
Выбор драйвера AMD
Для видеокарт AMD можно одновременно установить несколько драйверов Vulkan, и может возникнуть необходимость переключаться между ними.
Выбор с помощью переменной окружения
В amdvlk реализована специальная логика, которая выбирает AMDVLK в качестве драйвера по умолчанию и для выбора драйвера требует:
- указать
AMD_VULKAN_ICD=RADV
для переключения со стандартного AMDVLK на другой драйвер; - или указать
DISABLE_LAYER_AMD_SWITCHABLE_GRAPHICS_1=1
для включения метода ICD loader, описанного ниже.
Переменная окружения DISABLE_LAYER_AMD_SWITCHABLE_GRAPHICS_1=1
позволяет вам выбрать необходимый драйвер с помощью переменной окружения VK_DRIVER_FILES
. Например, запустить Steam с RADV-драйвером возможно следующей командой:
$ VK_DRIVER_FILES=/usr/share/vulkan/icd.d/radeon_icd.i686.json:/usr/share/vulkan/icd.d/radeon_icd.x86_64.json steam
Чтобы избежать сбоев в 32-битных играх, переменной окружения можно задать 32- и 64-битный вариант значения.
Выбор с помощью AMD Vulkan Prefixes
AMD Vulkan Prefixes — это скрипт для переключения между всеми тремя реализациями Vulkan. Установите пакет amd-vulkan-prefixesAUR и добавьте к команде запуска приложения нужный вам префикс — доступны команды vk_radv
, vk_amdvlk
и vk_pro
. Например, для запуска приложения AMDVLK Closed драйвером:
$ vk_pro команда
Программный рендеринг
Вы можете установить программную реализацию Vulkan — lavapipe — например, для выявления проблем с оборудованием: vulkan-swrast (или lib32-vulkan-swrast для 32-битных приложений).
В следующем примере показан запуск vulkaninfo с необходимыми переменными окружения, включающими принудительный программный рендеринг для Vulkan и OpenGL (переменная __GLX_VENDOR_LIBRARY_NAME=mesa
также позволяет использовать команду пользователям PRIME):
$ LIBGL_ALWAYS_SOFTWARE=1 __GLX_VENDOR_LIBRARY_NAME=mesa VK_DRIVER_FILES=/usr/share/vulkan/icd.d/lvp_icd.i686.json:/usr/share/vulkan/icd.d/lvp_icd.x86_64.json vulkaninfo
База данных оборудования Vulkan
База данных оборудования Vulkan содержит комбинации графических процессоров и драйверов. Предоставление собственной информации возможно с помощью vulkan-caps-viewer-waylandAUR или vulkan-caps-viewer-x11AUR.
Решение проблем
NVIDIA - Vulkan не работает и не может инициализироваться
Переменные окружения
Некорректные или противоречивые значения переменных окружения могут нарушать работу Vulkan, а неподходящие значения могут привести к использованию не той видеокарты на системах с несколькими видеокартами. Правильная настройка переменных также может позволить не подавать питание на вторую видеокарту, когда она не нужна.
Переключение GPU
Если на вашей машине несколько видеокарт, а Vulkan не видит одну из них, убедитесь, что она не отключена в BIOS/UEFI или в ядре. Различные методы использования нескольких видеокарт описаны в статье NVIDIA Optimus (Русский).
Проверить текущий статус можно с помощью optimus-manager-gitAUR:
$ optimus-manager --status
Optimus Manager (Client) version 1.4 Current GPU mode : nvidia GPU mode requested for next login : no change GPU at startup : integrated Temporary config path: no
Прошивка GSP
Смотрите раздел NVIDIA/Решение проблем#Прошивка GSP.
No device for the display GPU found. Are the intel-mesa drivers installed?
Попробуйте задать конфигурации intel_icd
и primus_vk_wrapper
в переменной окружения VK_DRIVER_FILES
:
export VK_DRIVER_FILES=/usr/share/vulkan/icd.d/intel_icd.x86_64.json:/usr/share/vulkan/icd.d/nv_vulkan_wrapper.json
AMDGPU - ERROR_INITIALIZATION_FAILED при выполнении vulkaninfo
Если после запуска vulkaninfo
на видеокарте AMD из семейства GCN1 или GCN2 вы получаете такое сообщение об ошибке:
ERROR at /build/vulkan-tools/src/Vulkan-Tools-1.2.135/vulkaninfo/vulkaninfo.h:240:vkEnumerateInstanceExtensionProperties failed with ERROR_INITIALIZATION_FAILED
Проверьте, включили ли вы поддержку этих моделей видеокарт (смотрите раздел AMDGPU (Русский)#Включение поддержки Southern Islands (SI) и Sea Islands (CIK)).
Проверить правильность загрузки драйверов видеокарты можно командой lspci -k
— она должна сообщать, что используется драйвер amdgpu
.
$ lspci -k
... 01:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Curacao PRO [Radeon R7 370 / R9 270/370 OEM] Subsystem: Gigabyte Technology Co., Ltd Device 226c Kernel driver in use: amdgpu Kernel modules: radeon, amdgpu ...
Темы на форуме об этой проблеме: [3] [4]
AMDGPU - Зависания при запуске игр DirectX Vulkan
Похоже, что Radeon-Vulkan вызывает зависание драйвера и/или GPU в некоторых играх, использующих DirectX Vulkan.
kernel: [drm:amdgpu_dm_atomic_commit_tail [amdgpu]] *ERROR* Waiting for fences timed out! kernel: [drm:amdgpu_job_timedout [amdgpu]] *ERROR* ring gfx_0.0.0 timeout, signaled ..., emitted ... kernel: [drm:amdgpu_job_timedout [amdgpu]] *ERROR* Process information: process ... pid ... thread dxvk-submit pid ...
Переключение на AMDVLK или его включение, похоже, решает проблему. BBS#275991
AMDGPU - Крахи при запуске игр DirectX Vulkan
AMDVLK известен своей нестабильностью (темы на форуме: BBS#284118, BBS#283008, BBS#274737): переключение на Radeon-Vulkan или его включение решает проблему.
AMDGPU - Приложения Vulkan запускаются медленно
После установки cuda вы можете обнаружить, что приложения Vulkan, например Chromium, запускаются медленно. Это связано с тем, что nvidia-utils предоставляет драйвер Vulkan, который пытается загружаться перед драйвером Vulkan для Radeon. Чтобы решить эту проблему, в переменной окружения VK_DRIVER_FILES
укажите нужный драйвер — /usr/share/vulkan/icd.d/radeon_icd.i686.json:/usr/share/vulkan/icd.d/radeon_icd.x86_64.json
.
AMDGPU - Found no drivers!
Если вы получаете ошибку Found no drivers!
:
$ vulkaninfo
WARNING: [Loader Message] Code 0 : terminator_CreateInstance: Failed to CreateInstance in ICD 0. Skipping ICD. ERROR: [Loader Message] Code 0 : terminator_CreateInstance: Found no drivers! Cannot create Vulkan instance. This problem is often caused by a faulty installation of the Vulkan driver or attempting to use a GPU that does not support Vulkan. ERROR at /usr/src/debug/vulkan-tools/Vulkan-Tools-1.3.269/vulkaninfo/./vulkaninfo.h:688:vkCreateInstance failed with ERROR_INCOMPATIBLE_DRIVER
AMD периодически прекращает поддержку старых видеокарт (pre-Polaris, Vega). Если поддержка видеокарты удалена из текущей версии драйвера amdvlk, удалите его и вместо него установите vulkan-radeon.