Vulkan (Русский) - ArchWiki

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-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)
  - amdvlkAUR (или lib32-amdvlkAUR) — 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 Closed драйвера.

В amdvlkAUR реализована специальная логика, которая выбирает 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). Если поддержка видеокарты удалена из текущей версии драйвера amdvlkAUR, удалите его и вместо него установите vulkan-radeon.

Categories:

- Graphics (Русский)
- Development (Русский)

Vulkan (Русский)
Add topic