From 1c52a944284f665df357184db6fd7130a75822e2 Mon Sep 17 00:00:00 2001 From: Connor Abbott Date: Tue, 14 Oct 2025 21:08:27 -0400 Subject: [PATCH] tu: Don't patch GMEM for input attachments never in GMEM This can happen if we resolve to a resolve attachment and then use that resolve attachment as an input attachment in a later subpass. We don't need to put it in GMEM, but it's still considered "written" because input attachment reads need a dependency after the resolve. MSRTSS input attachment tests effectively created such a scenario after lowering to transient multisample attachments and inserting resolves. Cc: mesa-stable (cherry picked from commit d491a79027b175f2b13536b5db67b471ba58bd28) Conflicts: src/freedreno/vulkan/tu_pass.cc Part-of: --- .pick_status.json | 2 +- src/freedreno/vulkan/tu_pass.cc | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index b7a9d8ebd83..785e342a337 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -2514,7 +2514,7 @@ "description": "tu: Don't patch GMEM for input attachments never in GMEM", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/freedreno/vulkan/tu_pass.cc b/src/freedreno/vulkan/tu_pass.cc index 09f8d6a0f6d..2b0f60dac3f 100644 --- a/src/freedreno/vulkan/tu_pass.cc +++ b/src/freedreno/vulkan/tu_pass.cc @@ -417,7 +417,8 @@ tu_render_pass_patch_input_gmem(struct tu_render_pass *pass) uint32_t a = subpass->input_attachments[j].attachment; if (a == VK_ATTACHMENT_UNUSED) continue; - subpass->input_attachments[j].patch_input_gmem = written[a]; + subpass->input_attachments[j].patch_input_gmem = + written[a] && pass->attachments[a].gmem; } for (unsigned j = 0; j < subpass->color_count; j++) {