vkEnumeratePhysicalDevices
函数原型
VkResult vkEnumeratePhysicalDevices(
VkInstance instance,
uint32_t* pPhysicalDeviceCount,
VkPhysicalDevice* pPhysicalDevices);
描述
查询系统中的GPU物理设备列表。
参数
-
instance
: 用 vkCreateInstance创建的Vulkan实例的句柄。 -
pPhysicalDeviceCount
: 物理设备的数量的整数指针。 -
pPhysicalDevices
: NULL或者VkPhysicalDevice
结构体数组指针。- 当
pPhysicalDevices
为NULL时,pPhysicalDeviceCount
返回物理设备数量; - 当
pPhysicalDevices
不为NULL时,写入pPhysicalDeviceCount
个物理设备信息到pPhysicalDevices
中。
- 当
返回值
VK_SUCCESS
: 查询成功。VK_INCOMPLETE
:pPhysicalDeviceCount
小于可用的设备数量。- 其他 : 查询失败。
代码示例
VkPhysicalDevice GetPhysicalDevices(uint32_t selectDevIdx)
{
// query valid physical devices count
uint32_t physicalDeviceCount = 0;
VK_CHECK(vkEnumeratePhysicalDevices(instance, &physicalDeviceCount, nullptr));
if (physicalDeviceCount > 0)
{
// retrieve physical devices
std::vector<VkPhysicalDevice> physicalDevices;
physicalDevices.resize(physicalDeviceCount);
VK_CHECK(vkEnumeratePhysicalDevices(instance, &physicalDeviceCount, physicalDevices.data()));
return physicalDevices[selectDevIdx];
}
else
{
return nullptr;
}
}