From 7ef61c1f1008f26a53db5fdfdb39ea1968c40284 Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Fri, 27 Mar 2020 10:54:19 -0700 Subject: [PATCH] freedreno: Count blits in GL_TIME_ELAPSED and perf counter queries. Fixes 0 gpu time reported for glBlitFramebuffer in apitrace replay --pgpu. Part-of: --- src/gallium/drivers/freedreno/a2xx/fd2_query.c | 2 +- src/gallium/drivers/freedreno/a4xx/fd4_query.c | 2 +- src/gallium/drivers/freedreno/a5xx/fd5_query.c | 4 ++-- src/gallium/drivers/freedreno/a6xx/fd6_blitter.c | 2 ++ src/gallium/drivers/freedreno/a6xx/fd6_query.c | 4 ++-- 5 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/gallium/drivers/freedreno/a2xx/fd2_query.c b/src/gallium/drivers/freedreno/a2xx/fd2_query.c index dc6f88ba788..b51903fcf97 100644 --- a/src/gallium/drivers/freedreno/a2xx/fd2_query.c +++ b/src/gallium/drivers/freedreno/a2xx/fd2_query.c @@ -151,7 +151,7 @@ perfcntr_accumulate_result(struct fd_acc_query *aq, void *buf, static const struct fd_acc_sample_provider perfcntr = { .query_type = FD_QUERY_FIRST_PERFCNTR, - .active = FD_STAGE_DRAW | FD_STAGE_CLEAR, + .active = FD_STAGE_ALL, .resume = perfcntr_resume, .pause = perfcntr_pause, .result = perfcntr_accumulate_result, diff --git a/src/gallium/drivers/freedreno/a4xx/fd4_query.c b/src/gallium/drivers/freedreno/a4xx/fd4_query.c index 1f1ce8e8771..ba225af82fc 100644 --- a/src/gallium/drivers/freedreno/a4xx/fd4_query.c +++ b/src/gallium/drivers/freedreno/a4xx/fd4_query.c @@ -259,7 +259,7 @@ static const struct fd_hw_sample_provider occlusion_predicate_conservative = { static const struct fd_hw_sample_provider time_elapsed = { .query_type = PIPE_QUERY_TIME_ELAPSED, - .active = FD_STAGE_DRAW | FD_STAGE_CLEAR, + .active = FD_STAGE_ALL, .enable = time_elapsed_enable, .get_sample = time_elapsed_get_sample, .accumulate_result = time_elapsed_accumulate_result, diff --git a/src/gallium/drivers/freedreno/a5xx/fd5_query.c b/src/gallium/drivers/freedreno/a5xx/fd5_query.c index 28f296d57cf..6cf9e2d6140 100644 --- a/src/gallium/drivers/freedreno/a5xx/fd5_query.c +++ b/src/gallium/drivers/freedreno/a5xx/fd5_query.c @@ -229,7 +229,7 @@ timestamp_accumulate_result(struct fd_acc_query *aq, void *buf, static const struct fd_acc_sample_provider time_elapsed = { .query_type = PIPE_QUERY_TIME_ELAPSED, - .active = FD_STAGE_DRAW | FD_STAGE_CLEAR, + .active = FD_STAGE_ALL, .size = sizeof(struct fd5_query_sample), .resume = timestamp_resume, .pause = timestamp_pause, @@ -366,7 +366,7 @@ perfcntr_accumulate_result(struct fd_acc_query *aq, void *buf, static const struct fd_acc_sample_provider perfcntr = { .query_type = FD_QUERY_FIRST_PERFCNTR, - .active = FD_STAGE_DRAW | FD_STAGE_CLEAR, + .active = FD_STAGE_ALL, .resume = perfcntr_resume, .pause = perfcntr_pause, .result = perfcntr_accumulate_result, diff --git a/src/gallium/drivers/freedreno/a6xx/fd6_blitter.c b/src/gallium/drivers/freedreno/a6xx/fd6_blitter.c index 24f4e46b89d..757e7117f75 100644 --- a/src/gallium/drivers/freedreno/a6xx/fd6_blitter.c +++ b/src/gallium/drivers/freedreno/a6xx/fd6_blitter.c @@ -646,6 +646,8 @@ handle_rgba_blit(struct fd_context *ctx, const struct pipe_blit_info *info) mtx_unlock(&ctx->screen->lock); + fd_batch_set_stage(batch, FD_STAGE_BLIT); + emit_setup(batch); if ((info->src.resource->target == PIPE_BUFFER) && diff --git a/src/gallium/drivers/freedreno/a6xx/fd6_query.c b/src/gallium/drivers/freedreno/a6xx/fd6_query.c index f58fff7b4ba..374b6f06054 100644 --- a/src/gallium/drivers/freedreno/a6xx/fd6_query.c +++ b/src/gallium/drivers/freedreno/a6xx/fd6_query.c @@ -229,7 +229,7 @@ timestamp_accumulate_result(struct fd_acc_query *aq, void *buf, static const struct fd_acc_sample_provider time_elapsed = { .query_type = PIPE_QUERY_TIME_ELAPSED, - .active = FD_STAGE_DRAW | FD_STAGE_CLEAR, + .active = FD_STAGE_ALL, .size = sizeof(struct fd6_query_sample), .resume = timestamp_resume, .pause = timestamp_pause, @@ -547,7 +547,7 @@ perfcntr_accumulate_result(struct fd_acc_query *aq, void *buf, static const struct fd_acc_sample_provider perfcntr = { .query_type = FD_QUERY_FIRST_PERFCNTR, - .active = FD_STAGE_DRAW | FD_STAGE_CLEAR, + .active = FD_STAGE_ALL, .resume = perfcntr_resume, .pause = perfcntr_pause, .result = perfcntr_accumulate_result, -- 2.30.2