您的位置:首页 > 产品设计 > UI/UE

Vulkan Device and Queue --2

2016-04-04 21:56 543 查看
Vulkan 2 - Device and Queue

Instance 对象之后,接下来开始操作Device对象了, 为APP提供的Vulkan操作的是针对逻辑设备,对于物理设备Vulkan只提供查询物理设备信息的接口,没有提供操作物理设备的接口

VkPhysicalDeviceProperties

可以获取显卡PCI信息,显卡类型,是集成显卡、独立显卡,还是虚拟显卡啊等,最主要的是可以:correlate how many memory heaps there are.

最最主要的是可以获取物理设备上的可用的队列信息:

vkGetPhysicalDeviceQueueFamilyProperties

树形结构:Device -> Queue families -> Queue

创建了逻辑设备之后,我们可以通过逻辑设备干点啥呢?

创建Queue,问题又来了,在逻辑设备上创建一个Queue之前挂载到那个family下面呢?

创建和跟踪各种可供同步的数据结构

管理memory

创建命令缓冲区和cmd buffer pools

管理graphic state

Vulkan可以创建逻辑设备,同样可以销毁逻辑设备,以及逻辑设备的生存期和生存期之内的不同状态。

接下来便是操作Queue对象了。

需要注意的地方有

Queue之间的同步是通过Vulkan semaphores来实现的

题外话: events&barries是同步cmd buffer的,fences work between host and device… 是这样吗?

接下来重点来了: 操作Queue对象之一:Sparse Memory Binding

Sparse memory binding 是啥?

首先要搞懂 Sparse Resource是个啥。。。

Sparse resource可以说是提供一种欺骗性的机制,这个机制让APP认为自己得到的是一块连续的内存,实际上是Sparse resource将分散的内存bound起来提供给APP的。

Vulkan为啥需要这种机制呢?

因为VkBuffer和VkImage的存储资源需要被完全连续绑定在VkDeviceMemory 对象中
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: