Vulkan:实例扩展和设备扩展之间的区别?

时间:2018-10-29 16:46:11

标签: vulkan

Vulkan具有 instance device 扩展名,但是我找不到任何有关它们之间的区别的信息。设备扩展或实例扩展到底是什么意思?为什么VK_KHR_external_memory是设备扩展,而VK_KHR_external_memory_capabilities是实例扩展?为什么它不只是一个统一的扩展系统?

1 个答案:

答案 0 :(得分:7)

实例扩展和设备扩展之间的差异就是实例和设备之间的差异。

Vulkan实例是用于设置设备的一段代码。它处理诸如枚举VkPhysicalDevice和查询其属性之类的事情,以及处理自己创建VkDevice的调用。

Vulkan设备用于处理Vulkan渲染系统。

设备扩展与激活该扩展时创建的特定VkDevice对象的行为有关。因此,该扩展名无法描述在设备创建前 发生的事情的行为。

例如,外部存储器对渲染系统有明显的影响。因此,它是设备扩展。但是,特定的VkPhysicalDevice对象具有不同的属性,可以针对其外部存储器功能进行查询。您需要能够在创建设备之前 来查询这些属性,因为如果设备没有提供所需的属性,那么根本就没有必要制造设备。或者至少是使带有该扩展名的设备处于活动状态。

但是设备扩展控制设备的行为。如果由于尚未创建设备而还没有设备,因为您正在尝试决定是否完全创建设备...您会做什么?

好吧,该行为必须是实例扩展。它扩展了Vulkan处理设备设置的部分,而不是控制设备本身行为的部分。