radv: suspend/resume XFB queries with NGG for meta operations

XFB queries enable primitives generated queries with NGG and meta
operations shouldn't be counted.

Reproduced on GFX10.3 by forcing NGG streamout.

Cc: 22.3 mesa-stable
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19785>
(cherry picked from commit 62356e71f4)
This commit is contained in:
Samuel Pitoiset 2022-11-16 15:49:24 +01:00 committed by Eric Engestrom
parent bbcde41cb2
commit 7964efaa97
3 changed files with 14 additions and 1 deletions

View file

@ -13,7 +13,7 @@
"description": "radv: suspend/resume XFB queries with NGG for meta operations",
"nominated": true,
"nomination_type": 0,
"resolution": 0,
"resolution": 1,
"main_sha": null,
"because_sha": null
},

View file

@ -62,6 +62,12 @@ radv_suspend_queries(struct radv_meta_saved_state *state, struct radv_cmd_buffer
state->active_prims_gen_gds_queries = cmd_buffer->state.active_prims_gen_gds_queries;
cmd_buffer->state.active_prims_gen_gds_queries = 0;
}
/* Transform feedback queries (NGG). */
if (cmd_buffer->state.active_prims_xfb_gds_queries) {
state->active_prims_xfb_gds_queries = cmd_buffer->state.active_prims_xfb_gds_queries;
cmd_buffer->state.active_prims_xfb_gds_queries = 0;
}
}
static void
@ -90,6 +96,11 @@ radv_resume_queries(const struct radv_meta_saved_state *state, struct radv_cmd_b
if (state->active_prims_gen_gds_queries) {
cmd_buffer->state.active_prims_gen_gds_queries = state->active_prims_gen_gds_queries;
}
/* Transform feedback queries (NGG). */
if (state->active_prims_xfb_gds_queries) {
cmd_buffer->state.active_prims_xfb_gds_queries = state->active_prims_xfb_gds_queries;
}
}
void
@ -106,6 +117,7 @@ radv_meta_save(struct radv_meta_saved_state *state, struct radv_cmd_buffer *cmd_
state->flags = flags;
state->active_prims_gen_gds_queries = 0;
state->active_prims_xfb_gds_queries = 0;
if (state->flags & RADV_META_SAVE_GRAPHICS_PIPELINE) {
assert(!(state->flags & RADV_META_SAVE_COMPUTE_PIPELINE));

View file

@ -56,6 +56,7 @@ struct radv_meta_saved_state {
unsigned active_pipeline_gds_queries;
unsigned active_prims_gen_gds_queries;
unsigned active_prims_xfb_gds_queries;
bool predicating;
};