我有一个基本的Vulkan应用程序,“ Hello三角形”,源自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设置的。
setup-env.sh
导出到.profile
文件中VK_LOADER_DEBUG=all
,以便查看来自Vulkan Loader的详细信息。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/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_KHRONOS_validation
替换为VK_LAYER_LUNARG_standard_validation
,我将收到相同的加载失败错误。
调试器还显示,加载程序确实找到了SDK中所有层的所有清单文件。
我不知道还有什么问题。
我的系统设置:
Ubuntu 18.04 64位,Nvidia RTX 3000 Nvidia驱动程序:430.0 VulkanSDK(LunarG):1.1.121.1
答案 0 :(得分:0)
在此SO question中包含了user1824407的答案。
似乎在最新的Ubuntu发行版中(至少在我使用的18.04中),将LD_LIBRARY
路径设置为以下配置文件:
.profile
或/etc/environment
或.bashrc
没有任何效果。确实,我尝试将lib路径添加到所有这些文件中,即使echo $LD_LIBRARY_PATH
打印了我设置的密码,也没有加载lib。
而且只有当我将带有Vulkan验证层位置的路径添加到/etc/ld.so.conf.d/devlibs.conf
devlibs.conf
是我给文件指定的任意名称,现在我看到Vulkan加载了VK_LAYER_LUNARG_monitor和VK_LAYER_KHRONOS_validation。