From e0bc251ef8918dd4fe89604941d8d5a0c482aae7 Mon Sep 17 00:00:00 2001 From: Christian Gmeiner Date: Fri, 19 Jul 2019 12:57:11 +0200 Subject: [PATCH] etnaviv: extend result(..) to return if data is ready For the upcoming conversion of perfmon queries to the acc query framework we need a way to tell that the data is not ready. Signed-off-by: Christian Gmeiner Part-of: --- src/gallium/drivers/etnaviv/etnaviv_query_acc.c | 12 ++++++++---- src/gallium/drivers/etnaviv/etnaviv_query_acc.h | 4 ++-- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/gallium/drivers/etnaviv/etnaviv_query_acc.c b/src/gallium/drivers/etnaviv/etnaviv_query_acc.c index f156363e951..094c7c84125 100644 --- a/src/gallium/drivers/etnaviv/etnaviv_query_acc.c +++ b/src/gallium/drivers/etnaviv/etnaviv_query_acc.c @@ -85,7 +85,7 @@ occlusion_suspend(struct etna_acc_query *aq, struct etna_context *ctx) resource_written(ctx, aq->prsc); } -static void +static bool occlusion_result(struct etna_acc_query *aq, void *buf, union pipe_query_result *result) { @@ -99,6 +99,8 @@ occlusion_result(struct etna_acc_query *aq, void *buf, result->u64 = sum; else result->b = !!sum; + + return true; } static void @@ -214,12 +216,14 @@ etna_acc_get_query_result(struct etna_context *ctx, struct etna_query *q, return false; void *ptr = etna_bo_map(rsc->bo); - p->result(aq, ptr, result); - aq->samples = 0; + bool success = p->result(aq, ptr, result); + + if (success) + aq->samples = 0; etna_bo_cpu_fini(rsc->bo); - return true; + return success; } static const struct etna_query_funcs acc_query_funcs = { diff --git a/src/gallium/drivers/etnaviv/etnaviv_query_acc.h b/src/gallium/drivers/etnaviv/etnaviv_query_acc.h index b22b2214728..8dd4bae5b71 100644 --- a/src/gallium/drivers/etnaviv/etnaviv_query_acc.h +++ b/src/gallium/drivers/etnaviv/etnaviv_query_acc.h @@ -39,8 +39,8 @@ struct etna_acc_sample_provider { void (*resume)(struct etna_acc_query *aq, struct etna_context *ctx); void (*suspend)(struct etna_acc_query *aq, struct etna_context *ctx); - void (*result)(struct etna_acc_query *aq, void *buf, - union pipe_query_result *result); + bool (*result)(struct etna_acc_query *aq, void *buf, + union pipe_query_result *result); }; struct etna_acc_query { -- 2.30.2