From 7e56e4a030709bfde3baa2ced246ff5d67943a6c Mon Sep 17 00:00:00 2001 From: Icenowy Zheng Date: Mon, 13 Apr 2026 00:35:41 +0800 Subject: [PATCH] pvr: stop to derive rt datasets based on geometry_terminate As we're going to kick frag for suspending rendering passes to mitigate frag job inconsistency between suspending rendering passes and resuming render passes, deriving render target datasets based on geometry_terminate property will be incorrect. Stop to use geometry_terminate to decide whether to remember render target datasets, instead use is_suspend directly. In addition, is_resume is now also used instead of checking whether suspended render taget datasets is available. This will help when either the suspending render pass or the resuming render pass have multiple graphics sub_cmds. Backport-to: 26.0 Signed-off-by: Icenowy Zheng Reviewed-by: Nick Hamilton Part-of: --- src/imagination/vulkan/pvr_arch_queue.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/imagination/vulkan/pvr_arch_queue.c b/src/imagination/vulkan/pvr_arch_queue.c index ae18a26cce5..54258e94a7e 100644 --- a/src/imagination/vulkan/pvr_arch_queue.c +++ b/src/imagination/vulkan/pvr_arch_queue.c @@ -766,14 +766,14 @@ static VkResult pvr_process_cmd_buffer(struct pvr_device *device, break; } - if (*suspended_rts) { + if (sub_cmd->is_resume) { sub_cmd->gfx.job.view_state.rt_datasets = *suspended_rts; + } - if (sub_cmd->gfx.job.geometry_terminate) - *suspended_rts = NULL; - - } else if (!sub_cmd->gfx.job.geometry_terminate) { + if (sub_cmd->is_suspend) { *suspended_rts = sub_cmd->gfx.job.view_state.rt_datasets; + } else { + *suspended_rts = NULL; } assert(sub_cmd->gfx.job.view_state.rt_datasets);