跳到主要内容

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;
}
}