本篇对第一章进行总结。
要想使用Vulkan进行计算,必须使用队列(Queue)来提交命令。为了得到我们想要的队列,需要先创建或启用一些东西。顺序是:实例->物理设备->逻辑设备->队列族->队列。
拿到队列前每个部分都要经过三个步骤: 查找->选择->创建/获取
实例:
查找:在Vulkan Loader库中查找所有支持的实例功能(扩展信息)。
选择:在查找出来支持的实例功能(扩展信息)中, 选择我们需要的实例功能。
创建:用我们选择出来的实例功能(扩展信息)作为信息,来创建实例。我们可以获取创建完成的实例支持的功能(核心函数于扩展函数),例如可以用来创建物理设备的函数。
注:注意这里说的函数是实例级函数,实例级函数是操作物理设备的!!
物理设备:
查找:在实例中查找所有支持的物理设备。
选择:得到物理设备再使用实例级函数查找出设备的(属性、特性(Features)、扩展以及队列族信息),根据这些信息选择具有期望能力的设备。
注:属性是物理设备的通用信息,例如硬件名称、是否是独立显卡、储存器大小等。特性是不同物理硬件支持的不同功能例如是否支持几何和片段着色器、多个视口、几何和曲面细分着色器等功能。扩展是除了核心函数之外扩展出的函数例如创建交换链。注意这里说的函数是设备级函数,而设备级函数是不能在物理设备上使用的!!,他只能用于稍后创建的逻辑设备上。
获取:物理设备不能创建,因为他代表了安装在设备里的硬件,你只能用洪荒之力去插拔。所以我们直接获取选择好的设备就可以了,但是为了使用它需要创建逻辑设备。
逻辑设备:
查找:获取选择好的物理设备。
选择:获取在物理设备里挑选好的功能(扩展以及队列族信息)。
创建:用选好的功能(扩展以及队列族信息)作为信息,创建逻辑设备,这个逻辑设备代表了我们想要支持一组特定功能的设备。我们可以获取创建完成的逻辑设备支持的功能(核心函数于扩展函数)。
注:这里的函数就是物理设备里所说的设备级函数。设备级函数只能在逻辑设备上使用。
队列族:
查找:队列族已经在选择物理设备时查找过了,因为有什么队列族可用是特定的物理设备决定的。
选择:我们需要选择队列族中的一个队列,一个队列族是一组相同功能队列的列表。
获取:通过将选择的队列族和队列索引传给逻辑设备的特定函数,我们可以获取到指定的队列句柄。
队列:然后我们就拿到队列了。之后会用他提交命令。
如有错误请批评指正。