From c41997f29f83705419d698d08d2d35b480bc5764 Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Wed, 26 Oct 2022 17:59:31 +0200 Subject: [PATCH] radv: fix suspending/resuming pipeline statistics queries with GDS This probably doesn't fix anything in practice because GDS is only used for the number of generated primitives by GS and meta operations don't use GS. Signed-off-by: Samuel Pitoiset Reviewed-by: Bas Nieuwenhuizen Part-of: --- src/amd/vulkan/radv_meta.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/amd/vulkan/radv_meta.c b/src/amd/vulkan/radv_meta.c index f345e5cfa09..610b089e64d 100644 --- a/src/amd/vulkan/radv_meta.c +++ b/src/amd/vulkan/radv_meta.c @@ -41,6 +41,9 @@ radv_suspend_queries(struct radv_meta_saved_state *state, struct radv_cmd_buffer if (cmd_buffer->state.active_pipeline_queries > 0) { cmd_buffer->state.flush_bits &= ~RADV_CMD_FLAG_START_PIPELINE_STATS; cmd_buffer->state.flush_bits |= RADV_CMD_FLAG_STOP_PIPELINE_STATS; + + state->active_pipeline_gds_queries = cmd_buffer->state.active_pipeline_gds_queries; + cmd_buffer->state.active_pipeline_gds_queries = 0; } /* Occlusion queries. */ @@ -56,9 +59,7 @@ radv_suspend_queries(struct radv_meta_saved_state *state, struct radv_cmd_buffer /* Save the number of active GDS queries and reset it to make sure internal operations won't * increment the counters via GDS. */ - state->active_pipeline_gds_queries = cmd_buffer->state.active_pipeline_gds_queries; state->active_prims_gen_gds_queries = cmd_buffer->state.active_prims_gen_gds_queries; - cmd_buffer->state.active_pipeline_gds_queries = 0; cmd_buffer->state.active_prims_gen_gds_queries = 0; } } @@ -70,6 +71,8 @@ radv_resume_queries(const struct radv_meta_saved_state *state, struct radv_cmd_b if (cmd_buffer->state.active_pipeline_queries > 0) { cmd_buffer->state.flush_bits &= ~RADV_CMD_FLAG_STOP_PIPELINE_STATS; cmd_buffer->state.flush_bits |= RADV_CMD_FLAG_START_PIPELINE_STATS; + + cmd_buffer->state.active_pipeline_gds_queries = state->active_pipeline_gds_queries; } /* Occlusion queries. */ @@ -83,7 +86,6 @@ radv_resume_queries(const struct radv_meta_saved_state *state, struct radv_cmd_b radv_emit_streamout_enable(cmd_buffer); /* Restore the number of active GDS queries to resume counting. */ - cmd_buffer->state.active_pipeline_gds_queries = state->active_pipeline_gds_queries; cmd_buffer->state.active_prims_gen_gds_queries = state->active_prims_gen_gds_queries; } }