freedreno: add some hw query traces
authorRob Clark <robdclark@gmail.com>
Wed, 20 Jul 2016 18:50:14 +0000 (14:50 -0400)
committerRob Clark <robdclark@gmail.com>
Sat, 30 Jul 2016 13:23:42 +0000 (09:23 -0400)
Signed-off-by: Rob Clark <robdclark@gmail.com>
src/gallium/drivers/freedreno/freedreno_query_hw.c

index 481c66d392529df9ab10ddc59737295d49de9843..e5ef51a0b98803c693ddb57104b9536bb2884cc2 100644 (file)
@@ -104,6 +104,7 @@ resume_query(struct fd_batch *batch, struct fd_hw_query *hq,
                struct fd_ringbuffer *ring)
 {
        int idx = pidx(hq->provider->query_type);
+       DBG("%p", hq);
        assert(idx >= 0);   /* query never would have been created otherwise */
        assert(!hq->period);
        batch->active_providers |= (1 << idx);
@@ -119,6 +120,7 @@ pause_query(struct fd_batch *batch, struct fd_hw_query *hq,
                struct fd_ringbuffer *ring)
 {
        int idx = pidx(hq->provider->query_type);
+       DBG("%p", hq);
        assert(idx >= 0);   /* query never would have been created otherwise */
        assert(hq->period && !hq->period->end);
        assert(batch->active_providers & (1 << idx));
@@ -144,6 +146,8 @@ fd_hw_destroy_query(struct fd_context *ctx, struct fd_query *q)
 {
        struct fd_hw_query *hq = fd_hw_query(q);
 
+       DBG("%p: active=%d", q, q->active);
+
        destroy_periods(ctx, hq);
        list_del(&hq->list);
 
@@ -156,6 +160,8 @@ fd_hw_begin_query(struct fd_context *ctx, struct fd_query *q)
        struct fd_batch *batch = ctx->batch;
        struct fd_hw_query *hq = fd_hw_query(q);
 
+       DBG("%p: active=%d", q, q->active);
+
        if (q->active)
                return false;
 
@@ -179,16 +185,22 @@ fd_hw_end_query(struct fd_context *ctx, struct fd_query *q)
 {
        struct fd_batch *batch = ctx->batch;
        struct fd_hw_query *hq = fd_hw_query(q);
+
        /* there are a couple special cases, which don't have
         * a matching ->begin_query():
         */
        if (skip_begin_query(q->type) && !q->active) {
                fd_hw_begin_query(ctx, q);
        }
+
+       DBG("%p: active=%d", q, q->active);
+
        if (!q->active)
                return;
+
        if (batch && is_active(hq, batch->stage))
                pause_query(batch, hq, batch->draw);
+
        q->active = false;
        /* remove from active list: */
        list_delinit(&hq->list);
@@ -208,6 +220,8 @@ fd_hw_get_query_result(struct fd_context *ctx, struct fd_query *q,
        const struct fd_hw_sample_provider *p = hq->provider;
        struct fd_hw_sample_period *period;
 
+       DBG("%p: wait=%d, active=%d", q, wait, q->active);
+
        if (q->active)
                return false;
 
@@ -308,6 +322,8 @@ fd_hw_create_query(struct fd_context *ctx, unsigned query_type)
        if (!hq)
                return NULL;
 
+       DBG("%p: query_type=%u", hq, query_type);
+
        hq->provider = ctx->sample_providers[idx];
 
        list_inithead(&hq->periods);