切换 OS 版本,vulkan 程序停止工作
Switched OS version, vulkan program stopped working
当我从 Ubuntu 20.04 升级到 21.04
时,我正在开发的程序停止工作
我怀疑发生的事情是,我正在使用 conan 安装依赖项,包括 sdk 中的内容(加载程序、headers、验证层)。
vkcube 和 vulkaninfo 运行,所以 vulkan 本身没问题。
conan 包版本(其版本与每个项目的官方 github 回购相匹配)是:
"vulkan-headers/1.2.184",
"vulkan-loader/1.2.182",
"vulkan-validationlayers/1.2.182"
我从 vulkaninfo 得到以下信息:
vulkaninfo | grep Instance
WARNING: lavapipe is not a conformant vulkan implementation, testing use only.
Vulkan Instance Version: 1.2.182
Instance Extensions: count = 18
WARNING: lavapipe is not a conformant vulkan implementation, testing use only.
maxMultiviewInstanceIndex = 2147483647
maxMultiviewInstanceIndex = 2147483647
drawIndirectFirstInstance = true
vertexAttributeInstanceRateDivisor = true
vertexAttributeInstanceRateZeroDivisor = true
drawIndirectFirstInstance = true
vertexAttributeInstanceRateDivisor = true
vertexAttributeInstanceRateZeroDivisor = false
我也尝试下载最新的 sdk 并 运行 运行 setu-env.sh 脚本以查看是否修复了它,但它似乎没有做任何事情。
我得到的确切问题是,调用时出现分段错误:
physical_device.getQueueFamilyProperties();
(我使用的是 .hpp header)
我不完全确定为什么事情停止工作,我怀疑我的 vulkan.hpp header 和我的 vulkan 库之间可能存在不匹配,但我不知道如何检查.我不确定这是否真的是问题所在。
我在 运行ning vulkaninfo | grep GPU
:
时也得到了这个
WARNING: lavapipe is not a conformant vulkan implementation, testing use only.
GPU id = 0 (AMD RADV RAVEN2 (ACO))
GPU id = 1 (llvmpipe (LLVM 12.0.0, 256 bits))
GPU id = 0 (AMD RADV RAVEN2 (ACO))
GPU id = 1 (llvmpipe (LLVM 12.0.0, 256 bits))
GPU id : 0 (AMD RADV RAVEN2 (ACO)):
GPU id : 1 (llvmpipe (LLVM 12.0.0, 256 bits)):
WARNING: lavapipe is not a conformant vulkan implementation, testing use only.
GPU0:
deviceType = PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU
GPU1:
这条 reddit 评论似乎是解决方案:
https://www.reddit.com/r/Fedora/comments/krz20h/vulkan_swrast_lavapipe_is_getting_used_instead_of/
具体来说:
After reading through Archwiki, I've discovered that lavapipe is indeed being used instead of radeon.
exporting VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/radeon_icd.x86_64.json fixes the issue.
当我从 Ubuntu 20.04 升级到 21.04
时,我正在开发的程序停止工作我怀疑发生的事情是,我正在使用 conan 安装依赖项,包括 sdk 中的内容(加载程序、headers、验证层)。
vkcube 和 vulkaninfo 运行,所以 vulkan 本身没问题。
conan 包版本(其版本与每个项目的官方 github 回购相匹配)是:
"vulkan-headers/1.2.184",
"vulkan-loader/1.2.182",
"vulkan-validationlayers/1.2.182"
我从 vulkaninfo 得到以下信息:
vulkaninfo | grep Instance
WARNING: lavapipe is not a conformant vulkan implementation, testing use only.
Vulkan Instance Version: 1.2.182
Instance Extensions: count = 18
WARNING: lavapipe is not a conformant vulkan implementation, testing use only.
maxMultiviewInstanceIndex = 2147483647
maxMultiviewInstanceIndex = 2147483647
drawIndirectFirstInstance = true
vertexAttributeInstanceRateDivisor = true
vertexAttributeInstanceRateZeroDivisor = true
drawIndirectFirstInstance = true
vertexAttributeInstanceRateDivisor = true
vertexAttributeInstanceRateZeroDivisor = false
我也尝试下载最新的 sdk 并 运行 运行 setu-env.sh 脚本以查看是否修复了它,但它似乎没有做任何事情。
我得到的确切问题是,调用时出现分段错误:
physical_device.getQueueFamilyProperties();
(我使用的是 .hpp header)
我不完全确定为什么事情停止工作,我怀疑我的 vulkan.hpp header 和我的 vulkan 库之间可能存在不匹配,但我不知道如何检查.我不确定这是否真的是问题所在。
我在 运行ning vulkaninfo | grep GPU
:
WARNING: lavapipe is not a conformant vulkan implementation, testing use only.
GPU id = 0 (AMD RADV RAVEN2 (ACO))
GPU id = 1 (llvmpipe (LLVM 12.0.0, 256 bits))
GPU id = 0 (AMD RADV RAVEN2 (ACO))
GPU id = 1 (llvmpipe (LLVM 12.0.0, 256 bits))
GPU id : 0 (AMD RADV RAVEN2 (ACO)):
GPU id : 1 (llvmpipe (LLVM 12.0.0, 256 bits)):
WARNING: lavapipe is not a conformant vulkan implementation, testing use only.
GPU0:
deviceType = PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU
GPU1:
这条 reddit 评论似乎是解决方案: https://www.reddit.com/r/Fedora/comments/krz20h/vulkan_swrast_lavapipe_is_getting_used_instead_of/
具体来说:
After reading through Archwiki, I've discovered that lavapipe is indeed being used instead of radeon. exporting VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/radeon_icd.x86_64.json fixes the issue.