Vulkan Specification(Vulkan规范):第十一章 11.7. 资源共享模式

缓冲区和图像对象能以 共享模式 被创建,控制它们如何被队列访问。 受支持的共享模式如下:

typedef enum VkSharingMode {
    VK_SHARING_MODE_EXCLUSIVE = 0,
    VK_SHARING_MODE_CONCURRENT = 1,
} VkSharingMode;
  • VK_SHARING_MODE_EXCLUSIVE specifies that access to any range或 image subresource of the object will be exclusive to a single queue family at a time.

  • VK_SHARING_MODE_CONCURRENT specifies that concurrent access to any range或 image subresource of the object from multiple queue families is supported.

 

注意

VK_SHARING_MODE_EXCLUSIVE相比,VK_SHARING_MODE_CONCURRENT 也许会导致访问缓冲区或者图像时效率较低。

使用 VK_SHARING_MODE_EXCLUSIVE 创建的图像对象 的图像子资源和缓冲区的区间必须 只能被同一个队列族中的队列在任何时间访问。 为了让一个不同的队列族可以中断 图像子资源或者区间的内容, 应用程序 必须 执行一个 queue family ownership transfer.

一旦创建完成,使用  VK_SHARING_MODE_EXCLUSIVE 创建的资源,就不在被任何队列族拥有。 当没有队列族拥有该资源时,一个缓冲区或内存屏障不被要求 获取 所有权, - 在队列内第一次被使用时就获取来。

 

注意

Images still require a layout transition from VK_IMAGE_LAYOUT_UNDEFINED或 VK_IMAGE_LAYOUT_PREINITIALIZED before being used on the first queue.

一个队列族可以 获取 使用 VK_SHARING_MODE_EXCLUSIVE创建的资源的 图像子资源 或 缓冲区区间 的所有权,且不需要所有权转移, 对于刚创建的资源来说同样如此;然而,以此方式获取所有权 会导致 图形子资源或者缓冲区区间的内容变得未定义。

使用 VK_SHARING_MODE_CONCURRENT 创建的 缓冲区的区间和图像对象的图像子资源 必须只能被 对应着创建信息数据结构的 queueFamilyIndexCount 和 pQueueFamilyIndices 成员 指定的队列族的队列所访问。

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值