跳转至

vkEnumeratePhysicalDevices

函数原型

1
2
3
4
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;
    }
}