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

Sil*_*lan 1 vulkan

Vulkan有实例设备扩展,但我无法找到任何关于它们之间区别的信息.如果某个东西是设备扩展或实例扩展,它究竟意味着什么?为什么VK_KHR_external_memory是设备扩展而VK_KHR_external_memory_capabilities是实例扩展?为什么它不仅仅是一个统一的扩展系统?

Nic*_*las 7

实例扩展和设备扩展之间的区别在于实例和设备之间的差异.

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

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

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

例如,外部存储器对渲染系统有明显的影响.所以这是一个设备扩展.但是,特定VkPhysicalDevice对象具有可以根据其外部存储器功能查询的不同属性.您需要能够创建设备之前查询这些属性,因为如果设备不提供您需要的属性,则根本不需要制作设备.或者至少,使具有该扩展的设备处于活动状态.

但设备扩展支配的行为装置.如果您还没有设备,因为您还没有设备,因为您正在尝试决定是否创建一个设备......您做什么?

那么,该行为必须是实例扩展.它扩展了Vulkan的部分,它处理设备的设置,而不是管理设备本身的行为.

  • 好吧,它可能是设备扩展,因为它们现在也可以影响物理设备对象。尽管它可能不太实用。作为实例扩展,加载器甚至可以处理不支持给定功能的设备并为其返回一些默认上限。 (2认同)