我想知道一个附件是否同时用作输入附件和颜色/ds附件,是否允许从输入附件读取一个抽屉调用,然后将其写入相同的颜色/ds附件?如果下一个from调用也在执行相同的操作,那么从规范中我看到我需要一个vkCmdPipelineBarrier来使下一个绞盘调用获得正确的结果,但不确定相同的drawcall情况。
另一个问题是,我能否在第一次子传递中使用输入附件?就像我把预z传递产生的深度纹理附加到深度附件和输入附件中一样?
发布于 2019-12-18 04:45:59
使用附件作为输入附件和颜色或深度/模板附件都称为,本质上,如果您在两者之间没有管道屏障的情况下读取和写入附件的相同部分,则会得到未定义的结果。因为你不能在抽签中设置管道屏障,所以你运气不好。
如果所有访问都是读的(例如,启用深度测试,但深度写入已禁用),则可以使用反馈循环;如果读写访问不相交的组件(使用颜色写入掩码),则可以使用颜色附件。
对于您的第二个问题,是的,输入附件不必在前面的同一呈现传递中编写。尽管在您的示例中,最好在第一个子传递中执行z预传递,然后在第二个子传递中使用它作为输入附件和只读深度测试。在平铺架构上,这可能节省带宽,因为深度缓冲区永远不必写到内存中。
发布于 2019-12-18 14:33:24
可以通过着色器中的颜色/输入附件对同一图像执行读/修改/写(RMW)操作,只要:
只要这样做有意义,您就可以在任何子传递上使用任何附件作为输入附件。如果您的loadOp说您不想加载数据,那么从具有未定义值的图像中读取数据显然是没有意义的。
https://stackoverflow.com/questions/59385129
复制相似问题