记一次debug
情景
正在学习编写Vulkan渲染器,其中有函数:
if (!checkValidationLayerSupport()) {
throw std::runtime_error("validation layers requested, but not available!");
}
始终找不到 VK_LAYER_KHRONOS_validation,倒是有别的层:
Available validation layers:
VK_LAYER_NV_optimus
VK_LAYER_NV_present
VK_LAYER_OBS_HOOK
VK_LAYER_VALVE_steam_overlay
VK_LAYER_VALVE_steam_fossilize
VK_LAYER_EOS_Overlay
VK_LAYER_EOS_Overlay
解决过程
阅读了文章 https://blog.csdn.net/weixin_43761337/article/details/136093746 [1]后,按照步骤进行了排查。首先 HKEY_LOCAL_MACHINE\SOFTWARE\Khronos\Vulkan\ExplicitLayers 确实存在 json 配置,不过 HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Khronos\Vulkan\ExplicitLayers 没有相关配置,遂进行 “vkconfig->Tools->Reset” 的重置,如图

不过在重置之后,注册表32位没有相关的配置出现,然而程序确实可以找到VK_LAYER_KHRONOS_validation。
相当玄学。
其余操作
除了以上步骤,还有其他尝试。
1、在环境变量中,检查是否存在 VK_LAYER_PATH 且指向SDK的 Bin 目录,另外还有 VK_SDK_PATH 指向SDK根目录。
2、检查显卡驱动与SDK是否兼容。我的SDK版本为1.4.321.1,显卡查询驱动的报告发现支持 Vulkan 1.4。
如果我的操作没有解决问题,建议阅读上面提到的文章,文章末还提到了路径名的问题。
Comments NOTHING