Vulkan SDK 之 Device

 Enumerate Physical Devices

Vulkan instance创建完成之后,vulkan loader是知道你有几个物理设备(显卡),但是程序不知道,需要通过 相关接口获取设备情况。

 

Create a (Logical) Device

Picking a Device

Device Queues and Queue Families

Queue是一个抽象层,用来将指令提交给GPU。

 

 

 

 

typedef enum VkQueueFlagBits {
    VK_QUEUE_GRAPHICS_BIT = 0x00000001,//3d图像处理工作
    VK_QUEUE_COMPUTE_BIT = 0x00000002,
    VK_QUEUE_TRANSFER_BIT = 0x00000004,//像素拷贝
    VK_QUEUE_SPARSE_BINDING_BIT = 0x00000008,
} VkQueueFlagBits;

 

只有一种类型的Queue

 

  uint32_t gpu_count = 1;
    VkResult U_ASSERT_ONLY res = vkEnumeratePhysicalDevices(info.inst, &gpu_count, NULL);
    assert(gpu_count);
    info.gpus.resize(gpu_count);
    //std::vector<VkPhysicalDevice> gpus; vector 固定大小了之后,可以直接获取其buff使用。
    res = vkEnumeratePhysicalDevices(info.inst, &gpu_count, info.gpus.data());
    assert(!res && gpu_count >= 1);

 

posted on 2020-02-06 10:39  KHacker  阅读(460)  评论(0编辑  收藏  举报