我有一个基本的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设置的。
- 将整个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
这是我从调试输出中获得的大块,显示了加载图层失败:
调试:加载图层库 /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