我有一个计算着色器,可生成顶点缓冲区并绘制间接结构,然后将其用于绘制某些几何图形。
计算着色器不是每帧调用一次,而是每5-10帧调用一次。 实际上,我已经复制了顶点和绘制间接缓冲区,因此当我使用VB1和DI1渲染几何时,计算着色器能够写入VB2和DI2,然后交换它们,因此计算和绘制调用可能是独立的。 我也有2个队列族:全部处理和仅计算。
因此,我可以想到3种方法:
VK_SHARING_MODE_EXCLUSIVE
缓冲区做所有事情的队列VK_SHARING_MODE_EXCLUSIVE
缓冲区进行所有操作,并在队列之间进行所有权转移VK_SHARING_MODE_CONCURRENT
缓冲区进行绘制我想听听您关于使用哪种选择以及它们的优缺点的建议。 我对此有一些假设,并且想知道,对与错:
答案 0 :(得分:2)
由于该标准具有以下明确警告:
VK_SHARING_MODE_CONCURRENT
可能会导致对缓冲区的较低性能访问 或图片比VK_SHARING_MODE_EXCLUSIVE
。
我要说,除非分析数据表明存在性能问题,否则应该选择独占模式。毕竟,您说过在使用缓冲区和跨队列移动缓冲区之间至少有5:1的比率。因此,您访问缓冲区的频率要比执行队列所有权操作的频率高。