Steam (Intel GPU) - Vulkan / Nvidia

Vulkan — кроссплатформенный API для 2D- и 3D-графики, Vulkan API изначально был известен как «новое поколение OpenGL» или просто «glNext».

Vulkan позволяет с высокой производительностью отображать в реальном времени различные приложения с 3D-графикой, такие как игры или интерактивные книги на всех платформах, а также обеспечивает более высокую производительность и меньшую нагрузку на процессор, аналогично Direct3D 12, Metal и Mantle. Vulkan основан на технологиях AMD в Mantle.

Обратите внимание автор в данной заметке использует два GPU и два драйвера (два монитора, заметка по теме), это отдельно один Intel GPU (HD Graphics 4600) и Nvidia GPU (GeForce GTX 1050 Ti). Это не технология NVIDIA Optimus, не используется Bumblebee, Nouveau и тд. Основная задача запуск игровых приложений в Steam через RADV, и переменной окружения VK_ICD_FILENAMES. Автор с 2007 года не использует оборудование AMD, поэтому vulkan-icd-loader для Radeon не описывается, и упоминается не будет. Для получения базовой информации обратитесь к странице на WiKi.

Чтобы запустить Vulkan-приложение потребуется установить пакет vulkan-icd-loader (и lib32-vulkan-icd-loader, если планируется запускать 32-битные приложения), а также драйвер Vulkan, описание установки драйверов в данную заметку не входит. Для отладки приложений в Vulkan установите vulkan-headers и, опционально, vulkan-validation-layers и vulkan-tools (в этом пакете также содержится утилита vulkaninfo). 

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

$ ls /usr/share/vulkan/icd.d/

intel_icd.i686.json  - Intel Driver.

intel_icd.x86_64.json  - Intel Driver.

nvidia_icd.json - Nvidia Driver.

Для запуска игровых приложений, устанавливается несколько драйверов Vulkan. Выбрать необходимый драйвер можно с помощью переменной окружения VK_ICD_FILENAMES. В данной заметки автор использует драйвер Vulkan для видеокарты Nvidia (460.67) и Intel (modesetting). А также мелкие правки и доработки сервера X11 (конфигурация и тд).

Мы можем изначально запустить Steam, используя переменную окружения VK_ICD_FILENAMES. Steam начнет работать намного быстрее, но с ограничениями, видео и функциональным запускам игр. Поэтому, саму переменную окружения мы будем устанавливать для свойств запуска в самой игре (set launch options в любом приложении Steam). Изначально Steam запускается и работает с nvidia_icd.json (проприетарным драйвером от Nvidia).

$ VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/nvidia_icd.json steam;

Далее в свойствах самой игры в Steam, общие настройки, параметры запуска, указать вызов переменной окружения VK_ICD_FILENAMES:

VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/intel_icd.i686.json:/usr/share/vulkan/icd.d/intel_icd.x86_64.json %command%

Чтобы избежать сбоев в 32-битных играх, переменной окружения можно задать 32- и 64-битный вариант значения. 

Обратите внимание, не все игровые движки, а также реализация Proton позволит вам использовать Vulkan через intel_icd. В основном данный метод полезен для ресурсоемких проектов, а также вечно заглюченых БичДвижков, вроде Unity3D в нативном исполнении под Linux. Например, игровые проекты For The King, Pillars of Eternity, Project Zomboid работают гораздо эффективней под Intel GPU, чем с проприетарным драйвером от Nvidia. Это действительно хорошие решение, по экономии ресурсов ПК, а также простого энергопотребления, а главное(?) производительности. 

На данный момент в драйвере Nvidia (460.67), наблюдается баг с прозрачностью текстур (падение FPS, swap  и тд). Не важно, нативная версия игры или запуск игр через Proton. Поэтому запуск через intel_icd, крайне хорошие решение, и не важно будет ли Nvidia улучшать и дорабатывать свои драйвера под Linux. OpenSource драйвер (любой), всегда оптимальный вариант.

Автор не приводит таблицы замеров FPS и тд. В этом нет необходимости в данной заметке. Помните о самих игровых движках. Например, X4: Foundations не запустится на Intel GPU (HD Graphics 4600), поскольку чип считается устаревшим для поддержки игрового движка (EgoSoft об этом вам напишет). DRAGON QUEST® XI, не запустится на Intel GPU (HD Graphics 4600), поскольку вывод происходит через костыль Proton(а). Зато просто отлично, заработает "старичок", IL-2 Sturmovik: 1946 (автор смеется).

Обязательно прочтите о переменных окружения, Пакет coreutils содержит программы printenv и env. Чтобы отобразить список текущих переменных окружения, используйте printenv.

$ printenv

База данных оборудования Vulkan содержит комбинации графических процессоров и драйверов. Предоставление собственной информации возможно с помощью vulkan-caps-viewer.


Проверьте, установлены ли в системе другие драйверы Vulkan, так как они могут предотвратить обнаружение Vulkan-драйвера Nvidia.