From 0c3b1a4c186f43cfaa5328bf3198476d6077d582 Mon Sep 17 00:00:00 2001 From: Connor Abbott Date: Fri, 24 Oct 2025 18:23:19 -0400 Subject: [PATCH] tu: Rename tu_render_pass_attachment::clear_views to used_views It's not just used for clears, it was already used for loads and it needs to be used for stores too so clear_views was a confusing name. Cc: mesa-stable Part-of: (cherry picked from commit 6c3ed74ed27c8fb42c00c0c5c657d9197bc8a71d) --- .pick_status.json | 2 +- src/freedreno/vulkan/tu_clear_blit.cc | 12 ++++++------ src/freedreno/vulkan/tu_pass.cc | 6 +++--- src/freedreno/vulkan/tu_pass.h | 7 ++++++- 4 files changed, 16 insertions(+), 11 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 4dc81c2702a..2fcffb5d30b 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1044,7 +1044,7 @@ "description": "tu: Rename tu_render_pass_attachment::clear_views to used_views", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/freedreno/vulkan/tu_clear_blit.cc b/src/freedreno/vulkan/tu_clear_blit.cc index 9a189a66b10..0c5b2dbd116 100644 --- a/src/freedreno/vulkan/tu_clear_blit.cc +++ b/src/freedreno/vulkan/tu_clear_blit.cc @@ -4619,7 +4619,7 @@ clear_sysmem_attachment(struct tu_cmd_buffer *cmd, enum pipe_format format = vk_format_to_pipe_format(vk_format); const struct tu_framebuffer *fb = cmd->state.framebuffer; const struct tu_image_view *iview = cmd->state.attachments[a]; - const uint32_t clear_views = cmd->state.pass->attachments[a].clear_views; + const uint32_t used_views = cmd->state.pass->attachments[a].used_views; const struct blit_ops *ops = &r2d_ops; const VkClearValue *value = &cmd->state.clear_values[a]; if (cmd->state.pass->attachments[a].samples > 1) @@ -4634,7 +4634,7 @@ clear_sysmem_attachment(struct tu_cmd_buffer *cmd, cmd->state.render_area.extent); ops->clear_value(cmd, cs, format, value); - for_each_layer(i, clear_views, fb->layers) { + for_each_layer(i, used_views, fb->layers) { if (separate_ds) { if (vk_format == VK_FORMAT_D32_SFLOAT) { ops->dst_depth(cs, iview, i); @@ -4715,7 +4715,7 @@ tu_clear_gmem_attachment(struct tu_cmd_buffer *cmd, tu_emit_clear_gmem_attachment(cmd, cs, resolve_group, a, 0, cmd->state.framebuffer->layers, - attachment->clear_views, + attachment->used_views, attachment->clear_mask, &cmd->state.clear_values[a], NULL); } @@ -4736,7 +4736,7 @@ tu7_generic_clear_attachment(struct tu_cmd_buffer *cmd, iview->view.ubwc_enabled, att->samples); enum pipe_format format = vk_format_to_pipe_format(att->format); - for_each_layer(i, att->clear_views, cmd->state.framebuffer->layers) { + for_each_layer(i, att->used_views, cmd->state.framebuffer->layers) { uint32_t layer = i + 0; uint32_t mask = aspect_write_mask_generic_clear(format, att->clear_mask); @@ -4817,7 +4817,7 @@ tu_emit_blit(struct tu_cmd_buffer *cmd, uint32_t buffer_id = tu_resolve_group_include_buffer(resolve_group, format); event_blit_setup(cs, buffer_id, attachment, blit_event_type, clear_mask); - for_each_layer(i, attachment->clear_views, cmd->state.framebuffer->layers) { + for_each_layer(i, attachment->used_views, cmd->state.framebuffer->layers) { event_blit_dst_view blt_view = blt_view_from_tu_view(iview, i); event_blit_run(cmd, cs, attachment, &blt_view, separate_stencil); } @@ -4926,7 +4926,7 @@ load_3d_blit(struct tu_cmd_buffer *cmd, /* Wait for CACHE_INVALIDATE to land */ tu_cs_emit_wfi(cs); - for_each_layer(i, att->clear_views, cmd->state.framebuffer->layers) { + for_each_layer(i, att->used_views, cmd->state.framebuffer->layers) { if (cmd->state.pass->has_fdm) { struct apply_load_coords_state state = { .view = i, diff --git a/src/freedreno/vulkan/tu_pass.cc b/src/freedreno/vulkan/tu_pass.cc index c91a4ef5908..9706b090684 100644 --- a/src/freedreno/vulkan/tu_pass.cc +++ b/src/freedreno/vulkan/tu_pass.cc @@ -885,7 +885,7 @@ tu_subpass_use_attachment(struct tu_render_pass *pass, int i, uint32_t a, const att->gmem = true; update_samples(subpass, pCreateInfo->pAttachments[a].samples); - att->clear_views |= subpass->multiview_mask; + att->used_views |= subpass->multiview_mask; /* Loads and clears are emitted at the start of the subpass that needs them. */ att->first_subpass_idx = MIN2(i, att->first_subpass_idx); @@ -1237,7 +1237,7 @@ tu_setup_dynamic_render_pass(struct tu_cmd_buffer *cmd_buffer, VK_FROM_HANDLE(tu_image_view, view, att_info->imageView); tu_setup_dynamic_attachment(att, view); att->gmem = true; - att->clear_views = info->viewMask; + att->used_views = info->viewMask; attachment_set_ops(device, att, att_info->loadOp, VK_ATTACHMENT_LOAD_OP_DONT_CARE, att_info->storeOp, VK_ATTACHMENT_STORE_OP_DONT_CARE); @@ -1281,7 +1281,7 @@ tu_setup_dynamic_render_pass(struct tu_cmd_buffer *cmd_buffer, struct tu_render_pass_attachment *att = &pass->attachments[a]; tu_setup_dynamic_attachment(att, view); att->gmem = true; - att->clear_views = info->viewMask; + att->used_views = info->viewMask; subpass->depth_stencil_attachment.attachment = a++; subpass->input_attachments[0].attachment = subpass->depth_stencil_attachment.attachment; diff --git a/src/freedreno/vulkan/tu_pass.h b/src/freedreno/vulkan/tu_pass.h index 612c5e5402e..8a564b96414 100644 --- a/src/freedreno/vulkan/tu_pass.h +++ b/src/freedreno/vulkan/tu_pass.h @@ -94,7 +94,12 @@ struct tu_render_pass_attachment VkSampleCountFlagBits samples; uint32_t cpp; VkImageAspectFlags clear_mask; - uint32_t clear_views; + + /* All views that are used with the attachment in all subpasses. Used to + * determine which views to apply loadOp/storeOp to. + */ + uint32_t used_views; + bool load; bool store; bool gmem;