freedreno: rework accumulated query result vfunc
authorRob Clark <robdclark@gmail.com>
Thu, 28 Jun 2018 12:14:10 +0000 (08:14 -0400)
committerRob Clark <robdclark@gmail.com>
Wed, 18 Jul 2018 14:19:03 +0000 (10:19 -0400)
Take the query object, rather than the ctx.  The ctx ptr isn't hugely
useful but for back queries we will need the query object to properly
get the results.

Signed-off-by: Rob Clark <robdclark@gmail.com>
src/gallium/drivers/freedreno/a5xx/fd5_query.c
src/gallium/drivers/freedreno/freedreno_query_acc.c
src/gallium/drivers/freedreno/freedreno_query_acc.h

index 87417f1f96eef937c9edc3eb58af495208788852..946076235bb43e184a8072f838c13f724443dd27 100644 (file)
@@ -111,7 +111,7 @@ occlusion_pause(struct fd_acc_query *aq, struct fd_batch *batch)
 }
 
 static void
-occlusion_counter_result(struct fd_context *ctx, void *buf,
+occlusion_counter_result(struct fd_acc_query *aq, void *buf,
                union pipe_query_result *result)
 {
        struct fd5_query_sample *sp = buf;
@@ -119,7 +119,7 @@ occlusion_counter_result(struct fd_context *ctx, void *buf,
 }
 
 static void
-occlusion_predicate_result(struct fd_context *ctx, void *buf,
+occlusion_predicate_result(struct fd_acc_query *aq, void *buf,
                union pipe_query_result *result)
 {
        struct fd5_query_sample *sp = buf;
@@ -196,7 +196,7 @@ timestamp_pause(struct fd_acc_query *aq, struct fd_batch *batch)
 }
 
 static uint64_t
-ticks_to_ns(struct fd_context *ctx, uint32_t ts)
+ticks_to_ns(uint32_t ts)
 {
        /* This is based on the 19.2MHz always-on rbbm timer.
         *
@@ -206,19 +206,19 @@ ticks_to_ns(struct fd_context *ctx, uint32_t ts)
 }
 
 static void
-time_elapsed_accumulate_result(struct fd_context *ctx, void *buf,
+time_elapsed_accumulate_result(struct fd_acc_query *aq, void *buf,
                union pipe_query_result *result)
 {
        struct fd5_query_sample *sp = buf;
-       result->u64 = ticks_to_ns(ctx, sp->result);
+       result->u64 = ticks_to_ns(sp->result);
 }
 
 static void
-timestamp_accumulate_result(struct fd_context *ctx, void *buf,
+timestamp_accumulate_result(struct fd_acc_query *aq, void *buf,
                union pipe_query_result *result)
 {
        struct fd5_query_sample *sp = buf;
-       result->u64 = ticks_to_ns(ctx, sp->result);
+       result->u64 = ticks_to_ns(sp->result);
 }
 
 static const struct fd_acc_sample_provider time_elapsed = {
index 2cb1a4ddbfad304d92f743eb134a1c9592f1e7b6..a8e28026a84e348ecad225d6fbe2b50627d3a468 100644 (file)
@@ -157,7 +157,7 @@ fd_acc_get_query_result(struct fd_context *ctx, struct fd_query *q,
        fd_bo_cpu_prep(rsc->bo, ctx->pipe, DRM_FREEDRENO_PREP_READ);
 
        void *ptr = fd_bo_map(rsc->bo);
-       p->result(ctx, ptr, result);
+       p->result(aq, ptr, result);
        fd_bo_cpu_fini(rsc->bo);
 
        return true;
index f8dfabc5e8e349171fedeb830f7f21fceb7d7916..8c4415fe73699ecd6132ed84e7a5ca8bbf3ac13f 100644 (file)
@@ -67,7 +67,7 @@ struct fd_acc_sample_provider {
        void (*resume)(struct fd_acc_query *aq, struct fd_batch *batch);
        void (*pause)(struct fd_acc_query *aq, struct fd_batch *batch);
 
-       void (*result)(struct fd_context *ctx, void *buf,
+       void (*result)(struct fd_acc_query *aq, void *buf,
                        union pipe_query_result *result);
 };