Lines Matching full:query
115 struct virgl_query *query = virgl_query(q); in virgl_render_condition() local
118 handle = query->handle; in virgl_render_condition()
126 struct virgl_query *query; in virgl_create_query() local
128 query = CALLOC_STRUCT(virgl_query); in virgl_create_query()
129 if (!query) in virgl_create_query()
132 query->type = query_type; in virgl_create_query()
134 if (query->type == PIPE_QUERY_GPU_FINISHED) in virgl_create_query()
135 return (struct pipe_query *)query; in virgl_create_query()
137 query->buf = (struct virgl_resource *) in virgl_create_query()
140 if (!query->buf) { in virgl_create_query()
141 FREE(query); in virgl_create_query()
145 query->handle = virgl_object_assign_handle(); in virgl_create_query()
146 query->result_size = (query_type == PIPE_QUERY_TIMESTAMP || in virgl_create_query()
150 query->pipeline_stats = index; in virgl_create_query()
154 query->pipeline_stats = ~0; in virgl_create_query()
157 util_range_add(&query->buf->b, &query->buf->valid_buffer_range, 0, in virgl_create_query()
159 virgl_resource_dirty(query->buf, 0); in virgl_create_query()
161 virgl_encoder_create_query(vctx, query->handle, in virgl_create_query()
162 pipe_to_virgl_query(query_type), index, query->buf, 0); in virgl_create_query()
164 return (struct pipe_query *)query; in virgl_create_query()
171 struct virgl_query *query = virgl_query(q); in virgl_destroy_query() local
173 if (query->type == PIPE_QUERY_GPU_FINISHED) { in virgl_destroy_query()
174 ctx->screen->fence_reference(ctx->screen, &query->fence, NULL); in virgl_destroy_query()
176 virgl_encode_delete_object(vctx, query->handle, VIRGL_OBJECT_QUERY); in virgl_destroy_query()
177 pipe_resource_reference((struct pipe_resource **)&query->buf, NULL); in virgl_destroy_query()
180 FREE(query); in virgl_destroy_query()
187 struct virgl_query *query = virgl_query(q); in virgl_begin_query() local
189 virgl_encoder_begin_query(vctx, query->handle); in virgl_begin_query()
199 struct virgl_query *query = virgl_query(q); in virgl_end_query() local
202 if (query->type == PIPE_QUERY_GPU_FINISHED) { in virgl_end_query()
203 ctx->flush(ctx, &query->fence, PIPE_FLUSH_DEFERRED); in virgl_end_query()
207 host_state = vs->vws->resource_map(vs->vws, query->buf->hw_res); in virgl_end_query()
212 query->ready = false; in virgl_end_query()
214 virgl_encoder_end_query(vctx, query->handle); in virgl_end_query()
217 virgl_encoder_get_query_result(vctx, query->handle, 0); in virgl_end_query()
218 vs->vws->emit_res(vs->vws, vctx->cbuf, query->buf->hw_res, false); in virgl_end_query()
228 struct virgl_query *query = virgl_query(q); in virgl_get_query_result() local
230 if (query->type == PIPE_QUERY_GPU_FINISHED) { in virgl_get_query_result()
233 result->b = screen->fence_finish(screen, ctx, query->fence, wait ? OS_TIMEOUT_INFINITE : 0); in virgl_get_query_result()
237 if (!query->ready) { in virgl_get_query_result()
243 if (vs->vws->res_is_referenced(vs->vws, vctx->cbuf, query->buf->hw_res)) in virgl_get_query_result()
247 vs->vws->resource_wait(vs->vws, query->buf->hw_res); in virgl_get_query_result()
248 else if (vs->vws->resource_is_busy(vs->vws, query->buf->hw_res)) in virgl_get_query_result()
251 host_state = vs->vws->resource_map(vs->vws, query->buf->hw_res); in virgl_get_query_result()
268 host_state = pipe_buffer_map(ctx, &query->buf->b, in virgl_get_query_result()
272 if (query->result_size == 8) in virgl_get_query_result()
273 query->result = host_state->result; in virgl_get_query_result()
275 query->result = (uint32_t) host_state->result; in virgl_get_query_result()
280 query->ready = true; in virgl_get_query_result()
283 switch (query->pipeline_stats) { in virgl_get_query_result()
284 case PIPE_STAT_QUERY_IA_VERTICES: result->pipeline_statistics.ia_vertices = query->result; break; in virgl_get_query_result()
285 …case PIPE_STAT_QUERY_IA_PRIMITIVES: result->pipeline_statistics.ia_primitives = query->result; bre… in virgl_get_query_result()
286 …case PIPE_STAT_QUERY_VS_INVOCATIONS: result->pipeline_statistics.vs_invocations = query->result; b… in virgl_get_query_result()
287 …case PIPE_STAT_QUERY_GS_INVOCATIONS: result->pipeline_statistics.gs_invocations = query->result; b… in virgl_get_query_result()
288 …case PIPE_STAT_QUERY_GS_PRIMITIVES: result->pipeline_statistics.gs_primitives = query->result; bre… in virgl_get_query_result()
289 …case PIPE_STAT_QUERY_PS_INVOCATIONS: result->pipeline_statistics.ps_invocations = query->result; b… in virgl_get_query_result()
290 …case PIPE_STAT_QUERY_HS_INVOCATIONS: result->pipeline_statistics.hs_invocations = query->result; b… in virgl_get_query_result()
291 …case PIPE_STAT_QUERY_CS_INVOCATIONS: result->pipeline_statistics.cs_invocations = query->result; b… in virgl_get_query_result()
292 …case PIPE_STAT_QUERY_C_INVOCATIONS: result->pipeline_statistics.c_invocations = query->result; bre… in virgl_get_query_result()
293 …case PIPE_STAT_QUERY_C_PRIMITIVES: result->pipeline_statistics.c_primitives = query->result; break; in virgl_get_query_result()
294 …case PIPE_STAT_QUERY_DS_INVOCATIONS: result->pipeline_statistics.ds_invocations = query->result; b… in virgl_get_query_result()
296 result->u64 = query->result; in virgl_get_query_result()
317 struct virgl_query *query = virgl_query(q); in virgl_get_query_result_resource() local
321 …virgl_encode_get_query_result_qbo(vctx, query->handle, qbo, (flags & PIPE_QUERY_WAIT), result_type… in virgl_get_query_result_resource()