物理设备可以有零个实例层吗?
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 的计算机上,这是常见的情况;通常只有开发人员才有这些。
我有一个有效的物理设备: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 的计算机上,这是常见的情况;通常只有开发人员才有这些。