Lines Matching refs:query
95 debug_printf("unknown query: %s\n",
97 unreachable("d3d12: unknown query type");
123 debug_printf("unknown query: %s\n",
125 unreachable("d3d12: unknown query type");
135 struct d3d12_query *query = CALLOC_STRUCT(d3d12_query);
138 if (!query)
141 query->type = (pipe_query_type)query_type;
144 query->subqueries[i].d3d12qtype = d3d12_query_type(query_type, i, index);
145 query->subqueries[i].num_queries = 16;
148 * per query for TIME_ELAPSED queries
151 query->subqueries[i].num_queries = 64;
153 query->subqueries[i].num_queries = 1;
155 query->subqueries[i].curr_query = 0;
156 desc.Count = query->subqueries[i].num_queries;
161 query->subqueries[i].query_size = sizeof(D3D12_QUERY_DATA_PIPELINE_STATISTICS);
164 query->subqueries[i].query_size = sizeof(D3D12_QUERY_DATA_SO_STATISTICS);
167 query->subqueries[i].query_size = sizeof(uint64_t);
171 IID_PPV_ARGS(&query->subqueries[i].query_heap)))) {
172 FREE(query);
177 size_t buffer_size = query->subqueries[i].query_size * query->subqueries[i].num_queries;
179 &query->subqueries[i].buffer_offset, &query->subqueries[i].buffer);
181 query->subqueries[i].active = (query_type == PIPE_QUERY_TIMESTAMP);
184 return (struct pipe_query *)query;
191 struct d3d12_query *query = (struct d3d12_query *)q;
192 pipe_resource *predicate = &query->predicate->base.b;
194 for (unsigned i = 0; i < num_sub_queries(query->type); ++i) {
195 query->subqueries[i].query_heap->Release();
196 pipe_resource_reference(&query->subqueries[i].buffer, NULL);
198 FREE(query);
268 debug_printf("unsupported query type: %s\n",
270 unreachable("unexpected query type");
397 * EndQuery, so we need two query slots */
421 struct d3d12_query *query = (struct d3d12_query *)q;
423 assert(query->type != PIPE_QUERY_TIMESTAMP);
425 if (unlikely(query->type == PIPE_QUERY_TIME_ELAPSED))
426 begin_timer_query(ctx, query, true);
428 begin_query(ctx, query, true);
429 list_addtail(&query->active_list, &ctx->active_queries);
451 * and when resolving the query we subtract the latter from the former */
489 struct d3d12_query *query = (struct d3d12_query *)q;
491 end_query(ctx, query);
493 if (query->type != PIPE_QUERY_TIMESTAMP &&
494 query->type != PIPE_QUERY_TIME_ELAPSED)
495 list_delinit(&query->active_list);
506 struct d3d12_query *query = (struct d3d12_query *)q;
508 return accumulate_result(ctx, query, result, false, wait);
514 list_for_each_entry(struct d3d12_query, query, &ctx->active_queries, active_list) {
515 end_query(ctx, query);
522 list_for_each_entry(struct d3d12_query, query, &ctx->active_queries, active_list) {
523 begin_query(ctx, query, false);
534 list_for_each_entry(struct d3d12_query, query, &ctx->active_queries, active_list) {
535 for (unsigned i = 0; i < num_sub_queries(query->type); ++i) {
536 if (query->subqueries[i].active && !subquery_should_be_active(ctx, query, i))
537 end_subquery(ctx, query, i);
538 else if (!query->subqueries[i].active && subquery_should_be_active(ctx, query, i))
539 begin_subquery(ctx, query, i);
563 struct d3d12_query *query = (struct d3d12_query *)pquery;
565 if (query == nullptr) {
571 assert(num_sub_queries(query->type) == 1);
572 if (!query->predicate)
573 query->predicate = d3d12_resource(pipe_buffer_create(pctx->screen, 0,
582 struct d3d12_resource *res = (struct d3d12_resource *)query->subqueries[0].buffer;
585 source_offset += query->subqueries[0].buffer_offset;
587 d3d12_transition_resource_state(ctx, query->predicate, D3D12_RESOURCE_STATE_COPY_DEST, D3D12_TRANSITION_FLAG_NONE);
589 ctx->cmdlist->CopyBufferRegion(d3d12_resource_resource(query->predicate), 0,
593 d3d12_transition_resource_state(ctx, query->predicate, D3D12_RESOURCE_STATE_PREDICATION, D3D12_TRANSITION_FLAG_NONE);
596 ctx->current_predication = query->predicate;