物理设备可以有零个实例层吗?

Can a physical device have zero instance layers?

我有一个有效的物理设备:m_physicalDevice[0]

我正在尝试检查我的物理设备支持的层:

    uint32_t physicalLayerCount;
    std::vector<VkLayerProperties> vkDeviceLP;
    result = vkEnumerateDeviceLayerProperties(m_physicalDevice[0], &physicalLayerCount, nullptr);
    if (physicalLayerCount > 0)
    {
        vkDeviceLP.resize(physicalLayerCount);
        vkEnumerateDeviceLayerProperties(m_physicalDevice[0], &physicalLayerCount, vkDeviceLP.data());
    }

我已经验证:

•物理设备有效

result 等于 VK_SUCCESS

这里的问题是 physicalLayerCount = 0,所以代码不会 运行 physicalLayerCount > 0 循环。是硬件问题还是我的代码有问题?

(r9 270X 是我的 GPU)

Device layers are deprecated,您通常不需要查询它们。出于兼容性原因,最好在创建设备时提供与创建实例时相同的层列表。

除此之外,没有任何类型的层是正常的:在没有安装 Vulkan SDK 或类似 RenderDoc 的计算机上,这是常见的情况;通常只有开发人员才有这些。