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