pvr: Fix barrier insertion on merged subpasses

The driver can merge subpasses within a render pass into a single
hw render. While doing so it makes the assumption that the subpasses
in an hw render will all be submitted in a single job.

On vkCmdPipelineBarrier() the driver was previously incorrectly
inserting an event sub-cmd on a merged subpass, breaking that
assumption leading to incorrect values for input attachments.

Signed-off-by: Soroush Kashani <soroush.kashani@imgtec.com>
Reviewed-by: Frank Binns <frank.binns@imgtec.com>
Fixes: 6d672e0336 ("pvr: Add initial vkCmdPipelineBarrier skeleton.")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23693>
(cherry picked from commit 4071b8e7f3)
This commit is contained in:
SoroushIMG 2023-06-15 13:53:56 +01:00 committed by Eric Engestrom
parent 9d31e05b8a
commit 753abf8b45
2 changed files with 3 additions and 3 deletions

View file

@ -1930,7 +1930,7 @@
"description": "pvr: Fix barrier insertion on merged subpasses",
"nominated": true,
"nomination_type": 1,
"resolution": 0,
"resolution": 1,
"main_sha": null,
"because_sha": "6d672e0336836bdbf3d444f7febc74f5c91e7de1"
},

View file

@ -7298,9 +7298,9 @@ void pvr_CmdPipelineBarrier2(VkCommandBuffer commandBuffer,
switch (src_stage_mask) {
case PVR_PIPELINE_STAGE_FRAG_BIT:
is_barrier_needed = true;
is_barrier_needed = !render_pass;
if (!render_pass)
if (is_barrier_needed)
break;
assert(current_sub_cmd->type == PVR_SUB_CMD_TYPE_GRAPHICS);