【发布时间】:2019-11-12 21:02:11
【问题描述】:
我有基本的 Vulkan 应用程序,“Hello triangle”,源自 this tutorial。在调试模式下,我使用两个验证层:
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:无法打开共享对象 文件:没有这样的文件或目录
我根据这个 LunarG 文档中出现的指南执行了 Linux 设置。
- 将整个 LunarG SDK 放在我的 Linux 上的任意位置 文件系统。
- 来源
setup-env.sh到.profile文件 - 在 setup-env.sh 脚本中,我还添加了
VK_LOADER_DEBUG=all以查看来自 Vulkan Loader 的详细信息。 - 已验证脚本设置的所有变量都指向 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 的完整路径会发生什么? -
试过那个。什么都没改变。