zink: fix texture barriers for real this time
according to spec, this is supposed to handle fragment shader fetch from previous draw output, not color output readback from previous color output write Reviewed-by: Dave Airlie <airlied@redhat.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10706>
This commit is contained in:
parent
4ebae25e17
commit
25ab2347f8
|
@ -1947,11 +1947,11 @@ zink_texture_barrier(struct pipe_context *pctx, unsigned flags)
|
||||||
dmb.sType = VK_STRUCTURE_TYPE_MEMORY_BARRIER;
|
dmb.sType = VK_STRUCTURE_TYPE_MEMORY_BARRIER;
|
||||||
dmb.pNext = NULL;
|
dmb.pNext = NULL;
|
||||||
dmb.srcAccessMask = VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT;
|
dmb.srcAccessMask = VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT;
|
||||||
dmb.dstAccessMask = VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT;
|
dmb.dstAccessMask = VK_ACCESS_SHADER_READ_BIT;
|
||||||
vkCmdPipelineBarrier(
|
vkCmdPipelineBarrier(
|
||||||
ctx->batch.state->cmdbuf,
|
ctx->batch.state->cmdbuf,
|
||||||
VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT | VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT,
|
VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT | VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT,
|
||||||
VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT | VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT,
|
VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT,
|
||||||
0,
|
0,
|
||||||
1, &dmb,
|
1, &dmb,
|
||||||
0, NULL,
|
0, NULL,
|
||||||
|
@ -1959,17 +1959,17 @@ zink_texture_barrier(struct pipe_context *pctx, unsigned flags)
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
bmb.srcAccessMask |= VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT;
|
bmb.srcAccessMask |= VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT;
|
||||||
bmb.dstAccessMask |= VK_ACCESS_COLOR_ATTACHMENT_READ_BIT;
|
bmb.dstAccessMask |= VK_ACCESS_SHADER_READ_BIT;
|
||||||
}
|
}
|
||||||
if (ctx->framebuffer->state.num_attachments > 1) {
|
if (ctx->framebuffer->state.num_attachments > 1) {
|
||||||
bmb.srcAccessMask |= VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT;
|
bmb.srcAccessMask |= VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT;
|
||||||
bmb.dstAccessMask |= VK_ACCESS_COLOR_ATTACHMENT_READ_BIT;
|
bmb.dstAccessMask |= VK_ACCESS_SHADER_READ_BIT;
|
||||||
}
|
}
|
||||||
if (bmb.srcAccessMask)
|
if (bmb.srcAccessMask)
|
||||||
vkCmdPipelineBarrier(
|
vkCmdPipelineBarrier(
|
||||||
ctx->batch.state->cmdbuf,
|
ctx->batch.state->cmdbuf,
|
||||||
VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT,
|
VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT,
|
||||||
VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT,
|
VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT,
|
||||||
0,
|
0,
|
||||||
1, &bmb,
|
1, &bmb,
|
||||||
0, NULL,
|
0, NULL,
|
||||||
|
|
Loading…
Reference in New Issue