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);
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));
{
struct fd_hw_query *hq = fd_hw_query(q);
+ DBG("%p: active=%d", q, q->active);
+
destroy_periods(ctx, hq);
list_del(&hq->list);
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;
{
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);
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;
if (!hq)
return NULL;
+ DBG("%p: query_type=%u", hq, query_type);
+
hq->provider = ctx->sample_providers[idx];
list_inithead(&hq->periods);