static boolean fd_get_query_result(struct pipe_context *pctx, struct pipe_query *pq, boolean wait, union pipe_query_result *result) { struct fd_query *q = fd_query(pq); if (q->active) return false; util_query_clear_result(result, q->type); return q->funcs->get_query_result(fd_context(pctx), q, wait, result); }
static boolean etna_sw_get_query_result(struct etna_context *ctx, struct etna_query *q, boolean wait, union pipe_query_result *result) { struct etna_sw_query *sq = etna_sw_query(q); if (q->active) return false; util_query_clear_result(result, q->type); result->u64 = sq->end_value - sq->begin_value; return true; }
static boolean fd_sw_get_query_result(struct fd_context *ctx, struct fd_query *q, boolean wait, union pipe_query_result *result) { struct fd_sw_query *sq = fd_sw_query(q); if (q->active) return false; util_query_clear_result(result, q->type); result->u64 = sq->end_value - sq->begin_value; if (is_rate_query(q)) { double fps = (result->u64 * 1000000) / (double)(sq->end_time - sq->begin_time); result->u64 = (uint64_t)fps; } return true; }