From d902e687320a95ce581045c0b600f362f5e65f4c Mon Sep 17 00:00:00 2001 From: Iago Toral Quiroga Date: Fri, 10 Jan 2020 11:56:37 +0100 Subject: [PATCH] v3dv: rewrite the attachment needs clearing condition Part-of: --- src/broadcom/vulkan/v3dv_cmd_buffer.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/broadcom/vulkan/v3dv_cmd_buffer.c b/src/broadcom/vulkan/v3dv_cmd_buffer.c index c96fc04e829..1378cef4149 100644 --- a/src/broadcom/vulkan/v3dv_cmd_buffer.c +++ b/src/broadcom/vulkan/v3dv_cmd_buffer.c @@ -774,10 +774,15 @@ emit_stores(struct v3dv_cmd_buffer *cmd_buffer, if (attachment->desc.storeOp != VK_ATTACHMENT_STORE_OP_STORE) continue; + const struct v3dv_cmd_buffer_attachment_state *attachment_state = + &state->attachments[attachment_idx]; + /* Only clear once on the first subpass that uses the attachment */ + assert(state->job->first_subpass >= attachment_state->first_subpass); bool needs_clear = - attachment->desc.loadOp == VK_ATTACHMENT_LOAD_OP_CLEAR && - state->attachments[attachment_idx].first_subpass == state->job->first_subpass; + state->job->first_subpass == attachment_state->first_subpass && + attachment->desc.loadOp == VK_ATTACHMENT_LOAD_OP_CLEAR; + store_general(cmd_buffer, cl, attachment_idx, layer, RENDER_TARGET_0 + i, needs_clear); has_stores = true;