【问题标题】:Vulkan: Difference between instance and device extensions?Vulkan:实例和设备扩展之间的区别?
【发布时间】:2018-10-29 16:46:10
【问题描述】:

Vulkan 有 instancedevice 扩展,但我在任何地方都找不到关于它们之间区别的任何信息。如果某物是设备扩展或实例扩展,这究竟意味着什么?为什么VK_KHR_external_memory 是设备扩展而VK_KHR_external_memory_capabilities 是实例扩展?为什么它不只是一个单一的、统一的扩展系统?

【问题讨论】:

    标签: vulkan


    【解决方案1】:

    实例扩展和设备扩展的区别就是实例和设备的区别。

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

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

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

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

    但设备扩展控制设备的行为。如果您还没有设备,因为您还没有创建设备,因为您正在尝试决定是否要创建设备...您会怎么做?

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

    【讨论】:

    • 它可能是一个设备扩展,因为它们现在也可以影响物理设备对象。尽管它可能不太实用。作为实例扩展,Loader 甚至可以处理不支持给定功能的设备并为其返回一些默认上限。
    猜你喜欢
    • 2011-03-30
    • 2011-09-17
    • 1970-01-01
    • 2014-04-29
    • 2020-11-11
    • 2012-09-02
    • 2021-10-11
    • 2019-07-12
    • 2017-10-30
    相关资源
    最近更新 更多