Слои проверки Vulkan не загружаются / не работают в Linux - PullRequest
0 голосов
/ 05 ноября 2019

У меня есть базовое приложение Vulkan, «Привет треугольник», полученное из этого урока . В режиме отладки я использую два слоя проверки:

VK_LAYER_KHRONOS_validation и VK_LAYER_LUNARG_monitor

В Windows у меня нет проблем. Оба слоя загружаются, я вижу счетчик FPS в строке заголовка. Но у меня другое поведение в Linux (Ubuntu 18.04).

Только VK_LAYER_LUNARG_monitor загрузка. В строке заголовка не отображается счетчик FPS.

VK_LAYER_KHRONOS_validation не удается загрузить с ошибкой:

ОШИБКА: libVkLayer_khronos_validation.so: невозможно открыть файл общего объекта: такого файла нет иликаталог

Я выполнил установку Linux в соответствии с рекомендациями, приведенными в этом документе LunarG.

  1. Поместите весь LunarG SDK в произвольное место на моей файловой системе Linux.
  2. Источник setup-env.sh в .profile файл
  3. Внутри сценария setup-env.sh я также добавил VK_LOADER_DEBUG=all для просмотра подробной информации из Vulkan Loader.
  4. Проверено, чтовсе переменные, установленные сценарием, указывают на правильность каталогов в SDK. Они делают.

setup-env.sh:

 VULKAN_SDK="$(dirname "$(readlink -f "${BASH_SOURCE:-$_}" )" )/x86_64"
 export VULKAN_SDK
 PATH="$VULKAN_SDK/bin:$PATH"
 export PATH
 LD_LIBRARY_PATH="$VULKAN_SDK/lib:${LD_LIBRARY_PATH:-}"
 export LD_LIBRARY_PATH
 VK_LAYER_PATH="$VULKAN_SDK/etc/vulkan/explicit_layer.d"
 export VK_LAYER_PATH
 export VK_LOADER_DEBUG=all

Вот фрагмент, который я получаю из вывода отладки, который показывает ошибку загрузки слоев:

ОТЛАДКА: Загрузка библиотеки слоев /home/platform-thirdparty/vulkan-sdk/1.1.121.1/x86_64/lib/libVkLayer_monitor.so INFO: Вставлен слой устройства VK_LAYER_LUNARG_monitor (/ home / platform-thirdparty / vulkan1.1.121.1/x86_64/lib/libVkLayer_monitor.so) Сообщение: libVkLayer_khronos_validation.so: невозможно открыть файл общего объекта: нет такого файла или каталога. ОШИБКА: libVkLayer_khronos_validation.so: невозможно открыть файл общего объекта: такого файла или каталога нет

Даже при том, что

Вставленный слой устройства VK_LAYER_LUNARG_monitor

Монитор не работает. Если я заменю VK_LAYER_KHRONOS_validation на VK_LAYER_LUNARG_standard_validation, я получаю ту же ошибку сбоя загрузки. Отладчик также показывает, что загрузчик нашел все файлы манифеста для всех слоев в SDK. Я понятия не имею, что еще может быть проблемой.

Настройка моей системы:

Ubuntu 18.04 64bit, Nvidia RTX 3000 Nvidia Драйверы: 430.0 VulkanSDK (LunarG): 1.1.121.1

1 Ответ

0 голосов
/ 12 ноября 2019

В этом SO вопросе лежит ответ пользователя 1824407.

Похоже, что в последних дистрибутивах Ubuntu (по крайней мере, в 18.04 я использую) установка LD_LIBRARY пути в конфигурационные файлы, такие как: .profile или /etc/environment или .bashrc

Не требует никакого эффекта. И действительно, я пытался добавить путь к lib для всех этих файлов, библиотеки не загружали даже это echo $LD_LIBRARY_PATH напечатал проход, который я установил. И только когда я добавил путь с расположением слоев валидации Vulkan в /etc/ld.so.conf.d/devlibs.conf, где

devlibs.conf

- произвольное имя, которое я дал файлу, теперь ясмотрите, как VK_LAYER_LUNARG_monitor и VK_LAYER_KHRONOS_validation загружаются Vulkan.

...