【发布时间】:2020-10-17 00:35:32
【问题描述】:
我正在使用存储缓冲区来存储来自具有片段着色器互锁的片段着色器的每像素链表。在单个绘图调用中一切正常,但我无法在连续绘图调用之间同步存储缓冲区。
我的理解是,您可以在片段着色器阶段的渲染过程中执行管道屏障,但前提是它涉及绑定到帧缓冲区的图像。
我必须在每次绘制调用之间调用vkCmdEndRenderPass 然后vkCmdPipelineBarrier 然后vkCmdBeginRenderPass 还是有更好的解决方案?
【问题讨论】:
-
当您执行此同步时,您是否尝试确保在来自后续绘图调用的任何联锁 FS 调用发生之前,来自先前绘图调用的所有命令都已执行?
-
是的,就是这样。我想我也在写入颜色附件这一事实已经确保了颜色写入到相同像素的两个连续绘制调用之间的同步,但我不知道这是否意味着片段着色器等待颜色写入在它开始执行之前完成,或者如果允许片段着色器运行然后阻塞,直到前一个颜色写入完成。如果是后者,那么我想我仍然需要确保在开始第二次绘图调用之前完成所有工作
标签: vulkan