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 <zhengxingda@iscas.ac.cn>
Reviewed-by: Nick Hamilton <nick.hamilton@imgtec.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41002>
This commit is contained in:
Icenowy Zheng 2026-04-13 00:35:41 +08:00 committed by Marge Bot
parent d7f79b34c7
commit 7e56e4a030

View file

@ -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);