【问题标题】:Vulkan validation layers don't load/work on LinuxVulkan 验证层无法在 Linux 上加载/工作
【发布时间】:2019-11-12 21:02:11
【问题描述】:

我有基本的 Vulkan 应用程序,“Hello triangle”,源自 this tutorial。在调试模式下,我使用两个验证层:

VK_LAYER_KHRONOS_validationVK_LAYER_LUNARG_monitor

在 Windows 上我没有问题。两个图层都加载了,我可以在标题栏中看到 FPS 计数器。但我在 Linux (Ubuntu 18.04) 上遇到了不同的行为。

仅加载 VK_LAYER_LUNARG_monitor。标题栏中不显示 FPS 计数器。

VK_LAYER_KHRONOS_validation 加载失败并出现错误:

错误:libVkLayer_khronos_validation.so:无法打开共享对象 文件:没有这样的文件或目录

我根据这个 LunarG 文档中出现的指南执行了 Linux 设置。

  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

这是我从调试输出中得到的块,显示加载层失败:

DEBUG:加载层库 /home/platform-thirdparty/vulkan-sdk/1.1.121.1/x86_64/lib/libVkLayer_monitor.so 信息:插入的设备层 VK_LAYER_LUNARG_monitor (/home/platform-thirdparty/vulkan-sdk/1.1.121.1/x86_64/lib/libVkLayer_monitor.so) 消息:libVkLayer_khronos_validation.so:无法打开共享对象 文件:没有这样的文件或目录错误: libVkLayer_khronos_validation.so:无法打开共享对象文件:否 这样的文件或目录

虽然这么说

插入的设备层 VK_LAYER_LUNARG_monitor

显示器不工作。 如果我用VK_LAYER_LUNARG_standard_validation 替换VK_LAYER_KHRONOS_validation,我会收到相同的加载失败错误。 调试器还显示加载器确实找到了 SDK 中所有层的所有清单文件。 我不知道还有什么问题。

我的系统设置:

Ubuntu 18.04 64 位,Nvidia RTX 3000 英伟达驱动程序:430.0 VulkanSDK(LunarG):1.1.121.1

【问题讨论】:

  • 1.1.126 怎么样?监视器在某些平台上不起作用;我认为例如韦兰。
  • 好吧,还没有尝试最新版本。希望在不升级的情况下追踪此问题。
  • @krOoze 与 1.1.126.0 相同
  • 看起来好像LD_LIBRARY_PATH 被忽略了。如果在 json 文件中编辑 *.so 的完整路径会发生什么?
  • 试过那个。什么都没改变。

标签: linux vulkan


【解决方案1】:

在这个SO question 中,user1824407 给出了答案。

似乎在最新的 Ubuntu 发行版中(至少在我使用的 18.04 中)将 LD_LIBRARY 路径设置为配置文件,例如: .profile/etc/environment.bashrc

不采取任何效果。事实上,我尝试将 lib 路径添加到所有这些文件,即使 echo $LD_LIBRARY_PATH 打印了我设置的通行证,这些库也没有加载。 并且仅当我将带有 Vulkan 验证层位置的路径添加到 /etc/ld.so.conf.d/devlibs.conf where

devlibs.conf

是我给文件取的任意名称,现在我看到 VK_LAYER_LUNARG_monitor 和 VK_LAYER_KHRONOS_validation 都是由 Vulkan 加载的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多