首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Vulkan资源所有权转移与VK_SHARING_MODE_CONCURRENT &不同队列族性能

Vulkan资源所有权转移与VK_SHARING_MODE_CONCURRENT &不同队列族性能
EN

Stack Overflow用户
提问于 2019-07-02 13:32:26
回答 1查看 1.3K关注 0票数 5

我有一个计算着色器,它产生顶点缓冲区和绘制间接结构,然后用来绘制一些几何。

计算着色器不是每帧调用一次,而是每5-10帧调用一次。事实上,我有我的顶点和绘制间接缓冲区复制,所以当我使用VB1和DI1绘制几何时,计算着色器可以写到VB2和DI2,然后交换它们,所以计算和绘图调用可能是独立的。我还有两个队列家族:只做任何事情和计算。

所以,我可以想出三种方法来做到这一点:

  1. 只使用一个具有VK_SHARING_MODE_EXCLUSIVE缓冲区的所有操作队列
  2. 对计算着色器使用只计算队列,并在队列之间使用VK_SHARING_MODE_EXCLUSIVE缓冲区进行绘图和所有权转移。
  3. 使用只计算队列用于计算着色器,并使用VK_SHARING_MODE_CONCURRENT缓冲区进行绘图。

我想听听你关于使用什么选项的建议,它们的利弊是什么。我对此有一些假设,我想知道,我是否正确:

  1. 我认为,使用专用于计算操作的单独家族可能会提高性能。
  2. 我认为所有权转移是一项繁重的操作,值得只进行一次(比如将资源上传到gpu内存时),而不是每5-10帧一次。
  3. 因此我认为第三种选择对我来说是最好的选择。
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-02 15:18:21

因为标准有这样明确的警告:

VK_SHARING_MODE_CONCURRENT 可能导致对缓冲区或图像的性能访问低于VK_SHARING_MODE_EXCLUSIVE

我想说的是,您应该选择独占模式,除非和直到您的分析数据显示存在性能问题。毕竟,您说过使用缓冲区和跨队列移动缓冲区之间至少有5:1的比例。因此,访问缓冲区的频率要大于执行队列所有权操作的频率。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56853688

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档