You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

启用保守光栅化失败:加载vkGetPhysicalDeviceProperties2KHR函数出错求助

问题原因及解决办法

核心问题在于你对VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME的处理错误:这个扩展是实例级扩展,而非设备级扩展,你不应该把它放到设备扩展列表里,而是要在创建Vulkan实例时启用它。

具体修正步骤

  • 调整扩展归属
    将VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME从DEVICE_EXTENSIONS移到实例扩展列表中,比如:
    const std::vector<const char*> INSTANCE_EXTENSIONS = {
        VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME,
        // 其他你需要的实例级扩展,比如VK_KHR_SURFACE等
    };
    
  • 创建实例时启用该扩展
    在创建Vulkan实例的vk::InstanceCreateInfo中指定启用这个实例扩展:
    vk::InstanceCreateInfo instance_create_info = {};
    instance_create_info.enabledExtensionCount = INSTANCE_EXTENSIONS.size();
    instance_create_info.ppEnabledExtensionNames = INSTANCE_EXTENSIONS.data();
    // 配置其他实例创建参数...
    vk::Instance instance = vk::createInstance(instance_create_info);
    
  • 重新加载函数
    完成实例创建并启用对应扩展后,再调用vkGetInstanceProcAddr加载vkGetPhysicalDeviceProperties2KHR函数,此时就能成功获取到函数指针了。

额外说明

你提到的VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME确实是设备级扩展,这部分的处理是正确的。不过注意你的vulkaninfo输出里显示用的是lavapipe软件渲染器,它的Vulkan实现不完全合规,后续测试保守光栅化功能时可能会遇到其他问题,建议优先使用硬件驱动提供的Vulkan实例。

内容的提问来源于stack exchange,提问作者Makogan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 12:24:19