_WRITE_BIT 目标访问掩码是否暗示 _READ_BIT 访问范围?
Do the _WRITE_BIT destination access masks imply _READ_BIT access scope?
我认为问题很明确,但如果答案是否定的,我将描述我遇到的难题:
最小设置,因此单个渲染通道和单个子通道。两个附件:颜色和深度,渲染一个立方体。深度附件布局(初始、中间、最终)为:
VK_IMAGE_LAYOUT_UNDEFINED
VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL
VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL
所以有一个自动布局转换。我知道因为我的 .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 执行发生在清除操作之后,因此不需要任何进一步的依赖。
我认为问题很明确,但如果答案是否定的,我将描述我遇到的难题:
最小设置,因此单个渲染通道和单个子通道。两个附件:颜色和深度,渲染一个立方体。深度附件布局(初始、中间、最终)为:
VK_IMAGE_LAYOUT_UNDEFINED
VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL
VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL
所以有一个自动布局转换。我知道因为我的 .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 执行发生在清除操作之后,因此不需要任何进一步的依赖。