_WRITE_BIT 目标访问掩码是否暗示 _READ_BIT 访问范围?

Do the _WRITE_BIT destination access masks imply _READ_BIT access scope?

我认为问题很明确,但如果答案是否定的,我将描述我遇到的难题:

最小设置,因此单个渲染通道和单个子通道。两个附件:颜色和深度,渲染一个立方体。深度附件布局(初始、中间、最终)为:

所以有一个自动布局转换。我知道因为我的 .loadOp = VK_ATTACHMENT_LOAD_OP_CLEAR,如果我不让它可见,我会收到写后写警告。所以我将使用这个 subpass 依赖项:

constexpr VkSubpassDependency in_dependency{
    .srcSubpass = VK_SUBPASS_EXTERNAL,
    .dstSubpass = 0,
    .srcStageMask = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
    .dstStageMask = VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT,
    .srcAccessMask = 0,
    .dstAccessMask = VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT
};

这针对早期的片段测试,因为这是深度 att 得到明确加载的地方。但是:难道我不需要在我的 .dstAccessMask 中包含 _READ_BIT 吗?同步验证似乎并不关心,但我想我会关心,除非我错过了一些关于暗示读取可见性的写入可见性的规则?

如果有这样的事情,指向规范的指针会很好。

WRITE不包括READ。这只是相关操作的问题。

正在清除图像uses the WRITE access mode。它不使用 READ 访问模式。所以就清理而言没有进一步的危险。

图像清除后,子通道就可以开始执行了。由于 subpass 执行发生在清除操作之后,因此不需要任何进一步的依赖。