tu: Store gmem attachments after custom resolve in dyn RP

For dynamic renderpass we created a fake second subpass,
which would is used by CmdBeginCustomResolveEXT, however
CmdBeginCustomResolveEXT doesn't trigger tile stores, but
attachments didn't know they should be stored after fake
custom resolve subpass.

Fixes: 520e3f3a47 ("tu: Implement VK_EXT_custom_resolve")

Signed-off-by: Danylo Piliaiev <dpiliaiev@igalia.com>
(cherry picked from commit 67c54c4465)

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/40359>
This commit is contained in:
Danylo Piliaiev 2026-03-05 18:48:02 +01:00 committed by Eric Engestrom
parent 8355670805
commit ace5f6c88d
2 changed files with 9 additions and 1 deletions

View file

@ -1794,7 +1794,7 @@
"description": "tu: Store gmem attachments after custom resolve in dyn RP",
"nominated": true,
"nomination_type": 2,
"resolution": 0,
"resolution": 1,
"main_sha": null,
"because_sha": "520e3f3a4732e66bbb2cdfe3b2a72a321ce9c04e",
"notes": null

View file

@ -1696,6 +1696,14 @@ tu_setup_dynamic_render_pass(struct tu_cmd_buffer *cmd_buffer,
resolve_subpass->fsr_attachment_texel_size =
subpass->fsr_attachment_texel_size;
resolve_subpass->fsr_attachment = subpass->fsr_attachment;
/* We don't do stores on vkCmdBeginCustomResolveEXT, so move them
* after custom resolve.
*/
for (uint32_t i = 0; i < pass->user_attachment_count; i++) {
struct tu_render_pass_attachment *att = &pass->attachments[i];
att->last_subpass_idx = 1;
}
}
if (TU_DEBUG(FDM) && !tu_render_pass_disable_fdm(device, pass))