Jump to content

Vulkan (Русский)

From ArchWiki
Состояние перевода: На этой странице представлен перевод статьи Vulkan. Дата последней синхронизации: 1 июля 2025. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

Из Википедии:

Vulkan (рус. Вулкан) — кроссплатформенный API для 2D- и 3D-графики, впервые представленный Khronos Group в рамках конференции GDC 2015.

Дополнительная информация доступна на веб-сайте Vulkan.

Установка

Примечание: На гибридной графике (NVIDIA Optimus/AMD Dynamic Switchable Graphics):
  • Vulkan в настоящее время официально не поддерживается Bumblebee [1], но работает с primus_vk или primus-vk-gitAUR.
  • Драйвер Radeon Vulkan теперь поддерживает PRIME [2].

Для запуска Vulkan-приложений установите пакет vulkan-icd-loaderlib32-vulkan-icd-loader из репозитория multilib, если планируется запускать 32-битные приложения), а также драйвер Vulkan для видеокарты. Есть несколько пакетов, которые предоставляют vulkan-driver и lib32-vulkan-driver:

Также есть программные реализации, позволяющие использовать Vulkan на устройствах без его аппаратной поддержки:

Для разработки приложений 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 Closed драйвера.

В 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.