Vulkan 学习(3)---- Vulkan 物理设备和队列组

Vulkan PhysicalDevice

Vulkan 物理设备 (PhysicalDevice) 一般是指支持 Vulkan 的物理硬件,通常是系统的一部分-- 显卡、加速器、数字信号处理器或者其他的组件。
系统里有固定数量的物理设备,每个物理设备都有自己的一组固定的功能

Vulkan 编程中,我们通常需要枚举出所有的物理设备,并且找到我们需要的那个:
vulkan 设备模型

枚举物理设备

使用 vkEnumeratePhysicalDevices 枚举出所有的物理设备:

VkResult vkEnumeratePhysicalDevices(
    VkInstance                                  instance,
    uint32_t*                                   pPhysicalDeviceCount,
    VkPhysicalDevice*                           pPhysicalDevices);
  • instance 是之前使用 vkCreateInstance 创建的 VkInstance handle
  • pPhysicalDeviceCount 是用于指定或获取的物理设备数量,通过这个值返回物理设备的数量
  • pPhysicalDevices 要么是 nullptr 要么是数量不小于 pPhysicalDeviceCountVkPhysicalDevice 数组,通过这个值返回物理设备的属性

需要注意的是,如果pPhysicalDeviceCount 中指定的数量小于系统中的物理设备数量,则 pPhysicalDevices 中写入的物理设备不是所有,vkEnumeratePhysicalDevices 只会写入传入的 pPhysicalDeviceCount 个物理设备属性到 pPhysicalDevices 并返回 VkResult::VK_INCOMPLET
如果所有物理设备成功写入,则会返回 VkResult::VK_SUCCESS

获取物理设备属性

使用 vkGetPhysicalDeviceProperties 函数获取物理设备信息
获取到的 PhysicalDeviceProperties 的含义如下:

typedef struct VkPhysicalDeviceProperties {
   
   
    uint32_t                            apiVersion;
    uint32_t                            driverVersion;
    uint32_t                            vendorID;
    uint32_t                            deviceID;
    VkPhysicalDeviceType                deviceType;
    char                                deviceName[VK_MAX_PHYSICAL_DEVICE_NAME_SIZE];
    uint8_t                             pipelineCacheUUID[VK_UUID_SIZE];
    VkPhysicalDeviceLimits              limits;
    VkPhysicalDeviceSparseProperties    sparseProperties;
} VkPhysicalDeviceProperties;
  • apiVersion 该设备驱动支持的 Vulkan 版本
  • driverVersion 该设备驱动版本
  • vendorID 设备供应商的 ID
  • deviceID 设备的 ID
  • deviceType 设备类型
  • deviceName 设备名称
  • pipelineCacheUUID 设备的通用唯一识别码( universally unique identifier )
  • limits 设备的限制信息
  • sparseProperties 稀疏数据属性

其中的 deviceType 设备类型是下面的几种之一:

typedef enum VkPhysicalDeviceType {
   
   
    VK_PHYSICAL_DEVICE_TYPE_OTHER = 0,
    // 集成显卡
    VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = 1,
    // 独立显卡
    VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = 2,
    // 虚拟环境中虚拟显卡
    VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = 3,
    // 中央处理器
    VK_PHYSICAL_DEVICE_TYPE_CPU = 4,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值