Vulkan API 笔记记录
1.初始化-设备握手过程
Vulkan的初始化过程包括验证层属性的初始化,以及实例对象(VkInstance)的构建。当实例创建完成之后,需要检查当前系统是否存在可用的物理设备(VkPhysicalDevice)。选择可用的物理设备,并通过实例对象创建一个对应的逻辑设备(VkDevice)。在 Vulkan程序当中,逻辑设备对象会被大多数的API所使用,它可以被视为是当前物理设备的一个逻辑表示。
API:
函数后面有2:意思是同一个功能函数有不同形式;
函数后面有khr:代表这是扩展功能,需要加载动态函数指针;
vkEnumerate InstanceLayerProperties:返回层的数量及其属性
- 查找连接的物理设备,原型如下:
VkResult vkEnumeratePhysicalDevices (
VkInstance instance,
uint32_t* pPhysicalDeviceCount,
VkPhysicalDevice* pPhysicalDevices);
- 查询设备的队列族,原型如下:
void vkGetPhysicalDeviceQueueFamilyProperties (
VkPhysicalDevice physicalDevice,
uint32_t* pQueueFamilyPropertyCount,
VkQueueFamilyProperties* pQueueFamilyProperties);
- 图像平铺模式,通过字段tiling指定的,原型如下,这是枚举值参数,<example:对应的是tiling =VK_VK_IMAGE_TILING_OPTIMAL>:
typedef enum VkImageTiling {
VK_IMAGE_TILING_OPTIMAL = 0, //最优平铺,一般最优平铺比线性平铺表现更好
VK_IMAGE_TILING_LINEAR = 1, //线性平铺
VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT = 1000158000,
VK_IMAGE_TILING_MAX_ENUM = 0x7FFFFFFF
} VkImageTiling;
- 队列使用,字段sharingMode表示缓冲区在设备支持的多个缓冲区队列中如何使用,原型如下:
typedef enum VkSharingMode {
VK_SHARING_MODE_EXCLUSIVE = 0, //表明只会被一个队列使用访问
VK_SHARING_MODE_CONCURRENT = 1,
VK_SHARING_MODE_MAX_ENUM = 0x7FFFFFFF
} VkSharingMode;

浙公网安备 33010602011771号