mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-15 16:28:04 +02:00
pvr: preserve and pass more data for suspending render passes
Suspending render pass jobs have more things than render targets to preserve, e.g. occlusion query related information, atomic / compute overlap enablement information etc. Preserve them too when suspending. When resuming, for boolean properties, or'ing them; for other preserved things assign them. This is for ensuring the last resuming fragment job is compatible with all suspending geometry jobs, as for suspending render passes the fragment job is omitted. The situation of the suspending render pass and the resuming render pass have different query pools is still not supported, and quite difficult to support. 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:
parent
175784d1a8
commit
98d07d5319
4 changed files with 26 additions and 36 deletions
|
|
@ -14,31 +14,3 @@ dEQP-VK.binding_model.unused_invalid_descriptor.write.unused.uniform_buffer,Cras
|
|||
dEQP-VK.graphicsfuzz.cov-two-nested-loops-switch-case-matrix-array-increment,Fail
|
||||
dEQP-VK.graphicsfuzz.stable-binarysearch-tree-false-if-discard-loop,Fail
|
||||
dEQP-VK.memory.concurrent_access.shader_and_host,Crash
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed11,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed11_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed13_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed16_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed18,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed20_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed21_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed36,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed36_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed41_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed44,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed45_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed50,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed50_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed56,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed56_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed69_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed70,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed70_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed71,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed76,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed76_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed7_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed83_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed85_multiview,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed88,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed98,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed98_multiview,Fail
|
||||
|
|
|
|||
|
|
@ -64,7 +64,6 @@ dEQP-VK.pipeline.monolithic.stencil.format.d32_sfloat_s8_uint_separate_layouts.s
|
|||
dEQP-VK.pipeline.monolithic.stencil.nocolor.format.d24_unorm_s8_uint_separate_layouts.states.fail_incc.pass_wrap.dfail_keep.comp_always.any
|
||||
dEQP-VK.pipeline.monolithic.stencil.nocolor.format.d32_sfloat_s8_uint.states.fail_zero.pass_keep.dfail_inv.comp_less.any
|
||||
dEQP-VK.pipeline.monolithic.vertex_input.multiple_attributes.layout_skip.binding_one_to_one.attributes.uvec2.uvec3.mat2
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed16_multiview
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.suballocation.unused_clear_attachments.colorunused_colorused_colorunused_colorunused_stencilonly_d32s8_unused
|
||||
dEQP-VK.renderpasses.renderpass2.dedicated_allocation.formats.a2b10g10r10_uint_pack32.input.load.dont_care.clear_draw
|
||||
dEQP-VK.renderpasses.renderpass2.suballocation.attachment_allocation.roll.87
|
||||
|
|
|
|||
|
|
@ -5,10 +5,3 @@ dEQP-VK.memory.mapping.dedicated_alloc.buffer.full.variable.implicit_unmap
|
|||
dEQP-VK.memory.mapping.dedicated_alloc.buffer.full.variable.implicit_unmap_map2
|
||||
dEQP-VK.memory.mapping.dedicated_alloc.image.full.variable.implicit_unmap
|
||||
dEQP-VK.memory.mapping.dedicated_alloc.image.full.variable.implicit_unmap_map2
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed13_multiview
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed16_multiview
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed21_multiview
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed25_multiview
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed39_multiview
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed41_multiview
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed7_multiview
|
||||
|
|
|
|||
|
|
@ -730,6 +730,10 @@ static VkResult pvr_process_event_cmd(struct pvr_device *device,
|
|||
|
||||
struct pvr_suspended_data {
|
||||
struct pvr_rt_dataset **rts;
|
||||
bool frag_uses_atomic_ops;
|
||||
bool disable_compute_overlap;
|
||||
bool get_vis_results;
|
||||
const struct pvr_query_pool *query_pool;
|
||||
};
|
||||
|
||||
static VkResult pvr_process_cmd_buffer(struct pvr_device *device,
|
||||
|
|
@ -772,12 +776,34 @@ static VkResult pvr_process_cmd_buffer(struct pvr_device *device,
|
|||
|
||||
if (sub_cmd->is_resume) {
|
||||
sub_cmd->gfx.job.view_state.rt_datasets = suspended_data->rts;
|
||||
sub_cmd->gfx.job.frag_uses_atomic_ops |=
|
||||
suspended_data->frag_uses_atomic_ops;
|
||||
sub_cmd->gfx.job.disable_compute_overlap |=
|
||||
suspended_data->disable_compute_overlap;
|
||||
sub_cmd->gfx.job.get_vis_results |= suspended_data->get_vis_results;
|
||||
if (!sub_cmd->gfx.query_pool) {
|
||||
sub_cmd->gfx.query_pool = suspended_data->query_pool;
|
||||
} else if (suspended_data->query_pool &&
|
||||
sub_cmd->gfx.query_pool != suspended_data->query_pool) {
|
||||
pvr_finishme(
|
||||
"Emit a barrier between suspending and resuming jobs with different query pools");
|
||||
}
|
||||
}
|
||||
|
||||
if (sub_cmd->is_suspend) {
|
||||
suspended_data->rts = sub_cmd->gfx.job.view_state.rt_datasets;
|
||||
suspended_data->frag_uses_atomic_ops =
|
||||
sub_cmd->gfx.job.frag_uses_atomic_ops;
|
||||
suspended_data->disable_compute_overlap =
|
||||
sub_cmd->gfx.job.disable_compute_overlap;
|
||||
suspended_data->get_vis_results = sub_cmd->gfx.job.get_vis_results;
|
||||
suspended_data->query_pool = sub_cmd->gfx.query_pool;
|
||||
} else {
|
||||
suspended_data->rts = NULL;
|
||||
suspended_data->frag_uses_atomic_ops = false;
|
||||
suspended_data->disable_compute_overlap = false;
|
||||
suspended_data->get_vis_results = false;
|
||||
suspended_data->query_pool = NULL;
|
||||
}
|
||||
|
||||
assert(sub_cmd->gfx.job.view_state.rt_datasets);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue