切换 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.