Lines Matching refs:rctx

92 static bool r600_query_sw_begin(struct r600_common_context *rctx,
103 query->begin_result = rctx->num_draw_calls;
106 query->begin_result = rctx->num_decompress_calls;
109 query->begin_result = rctx->num_mrt_draw_calls;
112 query->begin_result = rctx->num_prim_restart_calls;
115 query->begin_result = rctx->num_spill_draw_calls;
118 query->begin_result = rctx->num_compute_calls;
121 query->begin_result = rctx->num_spill_compute_calls;
124 query->begin_result = rctx->num_dma_calls;
127 query->begin_result = rctx->num_cp_dma_calls;
130 query->begin_result = rctx->num_vs_flushes;
133 query->begin_result = rctx->num_ps_flushes;
136 query->begin_result = rctx->num_cs_flushes;
139 query->begin_result = rctx->num_cb_cache_flushes;
142 query->begin_result = rctx->num_db_cache_flushes;
145 query->begin_result = rctx->num_resident_handles;
148 query->begin_result = rctx->tc ? rctx->tc->num_offloaded_slots : 0;
151 query->begin_result = rctx->tc ? rctx->tc->num_direct_slots : 0;
154 query->begin_result = rctx->tc ? rctx->tc->num_syncs : 0;
176 query->begin_result = rctx->ws->query_value(rctx->ws, ws_id);
181 query->begin_result = rctx->ws->query_value(rctx->ws, ws_id);
182 query->begin_time = rctx->ws->query_value(rctx->ws,
187 query->begin_result = rctx->ws->query_value(rctx->ws, ws_id);
192 rctx->tc ? util_queue_get_thread_time_nano(&rctx->tc->queue, 0) : 0;
216 query->begin_result = r600_begin_counter(rctx->screen,
220 query->begin_result = p_atomic_read(&rctx->screen->num_compilations);
223 query->begin_result = p_atomic_read(&rctx->screen->num_shaders_created);
227 p_atomic_read(&rctx->screen->num_shader_cache_hits);
242 static bool r600_query_sw_end(struct r600_common_context *rctx,
252 rctx->b.flush(&rctx->b, &query->fence, PIPE_FLUSH_DEFERRED);
255 query->end_result = rctx->num_draw_calls;
258 query->end_result = rctx->num_decompress_calls;
261 query->end_result = rctx->num_mrt_draw_calls;
264 query->end_result = rctx->num_prim_restart_calls;
267 query->end_result = rctx->num_spill_draw_calls;
270 query->end_result = rctx->num_compute_calls;
273 query->end_result = rctx->num_spill_compute_calls;
276 query->end_result = rctx->num_dma_calls;
279 query->end_result = rctx->num_cp_dma_calls;
282 query->end_result = rctx->num_vs_flushes;
285 query->end_result = rctx->num_ps_flushes;
288 query->end_result = rctx->num_cs_flushes;
291 query->end_result = rctx->num_cb_cache_flushes;
294 query->end_result = rctx->num_db_cache_flushes;
297 query->end_result = rctx->num_resident_handles;
300 query->end_result = rctx->tc ? rctx->tc->num_offloaded_slots : 0;
303 query->end_result = rctx->tc ? rctx->tc->num_direct_slots : 0;
306 query->end_result = rctx->tc ? rctx->tc->num_syncs : 0;
326 query->end_result = rctx->ws->query_value(rctx->ws, ws_id);
331 query->end_result = rctx->ws->query_value(rctx->ws, ws_id);
332 query->end_time = rctx->ws->query_value(rctx->ws,
337 query->end_result = rctx->ws->query_value(rctx->ws, ws_id);
342 rctx->tc ? util_queue_get_thread_time_nano(&rctx->tc->queue, 0) : 0;
366 query->end_result = r600_end_counter(rctx->screen,
372 query->end_result = p_atomic_read(&rctx->screen->num_compilations);
375 query->end_result = p_atomic_read(&rctx->screen->num_shaders_created);
379 p_atomic_read(&rctx->screen->num_shader_cache_hits);
394 static bool r600_query_sw_get_result(struct r600_common_context *rctx,
405 (uint64_t)rctx->screen->info.clock_crystal_freq * 1000;
409 struct pipe_screen *screen = rctx->b.screen;
410 struct pipe_context *ctx = rquery->b.flushed ? NULL : &rctx->b;
430 result->u32 = rctx->screen->info.num_cu;
433 result->u32 = rctx->screen->info.max_render_backends;
439 result->u32 = rctx->screen->info.max_se;
561 static void r600_query_hw_get_result_resource(struct r600_common_context *rctx,
677 static void r600_update_occlusion_query_state(struct r600_common_context *rctx,
683 bool old_enable = rctx->num_occlusion_queries != 0;
685 rctx->num_perfect_occlusion_queries != 0;
688 rctx->num_occlusion_queries += diff;
689 assert(rctx->num_occlusion_queries >= 0);
692 rctx->num_perfect_occlusion_queries += diff;
693 assert(rctx->num_perfect_occlusion_queries >= 0);
696 enable = rctx->num_occlusion_queries != 0;
697 perfect_enable = rctx->num_perfect_occlusion_queries != 0;
700 struct r600_context *ctx = (struct r600_context*)rctx;
991 struct r600_common_context *rctx = (struct r600_common_context *)ctx;
994 rquery->ops->destroy(rctx->screen, rquery);
1000 struct r600_common_context *rctx = (struct r600_common_context *)ctx;
1003 return rquery->ops->begin(rctx, rquery);
1006 void r600_query_hw_reset_buffers(struct r600_common_context *rctx,
1023 if (r600_rings_is_buffer_referenced(rctx, query->buffer.buf->buf, RADEON_USAGE_READWRITE) ||
1024 !rctx->ws->buffer_wait(rctx->ws, query->buffer.buf->buf, 0, RADEON_USAGE_READWRITE)) {
1026 query->buffer.buf = r600_new_query_buffer(rctx->screen, query);
1028 if (!query->ops->prepare_buffer(rctx->screen, query, query->buffer.buf))
1033 bool r600_query_hw_begin(struct r600_common_context *rctx,
1044 r600_query_hw_reset_buffers(rctx, query);
1046 r600_query_hw_emit_start(rctx, query);
1050 list_addtail(&query->list, &rctx->active_queries);
1056 struct r600_common_context *rctx = (struct r600_common_context *)ctx;
1059 return rquery->ops->end(rctx, rquery);
1062 bool r600_query_hw_end(struct r600_common_context *rctx,
1068 r600_query_hw_reset_buffers(rctx, query);
1070 r600_query_hw_emit_stop(rctx, query);
1081 static void r600_get_hw_query_params(struct r600_common_context *rctx,
1085 unsigned max_rbs = rctx->screen->info.max_render_backends;
1302 struct r600_common_context *rctx = (struct r600_common_context *)ctx;
1305 return rquery->ops->get_result(rctx, rquery, wait, result);
1316 struct r600_common_context *rctx = (struct r600_common_context *)ctx;
1319 rquery->ops->get_result_resource(rctx, rquery, flags, result_type, index,
1329 bool r600_query_hw_get_result(struct r600_common_context *rctx,
1333 struct r600_common_screen *rscreen = rctx->screen;
1346 map = rctx->ws->buffer_map(rctx->ws, qbuf->buf->buf, NULL, usage);
1348 map = r600_buffer_map_sync_with_rings(rctx, qbuf->buf, usage);
1402 static void r600_create_query_result_shader(struct r600_common_context *rctx)
1577 rctx->screen->info.clock_crystal_freq);
1587 rctx->query_result_shader = rctx->b.create_compute_state(&rctx->b, &state);
1590 static void r600_restore_qbo_state(struct r600_common_context *rctx,
1593 rctx->b.bind_compute_state(&rctx->b, st->saved_compute);
1594 rctx->b.set_constant_buffer(&rctx->b, PIPE_SHADER_COMPUTE, 0, true, &st->saved_const0);
1595 rctx->b.set_shader_buffers(&rctx->b, PIPE_SHADER_COMPUTE, 0, 3, st->saved_ssbo, ~0);
1600 static void r600_query_hw_get_result_resource(struct r600_common_context *rctx,
1630 if (!rctx->query_result_shader) {
1631 r600_create_query_result_shader(rctx);
1632 if (!rctx->query_result_shader)
1637 u_suballocator_alloc(&rctx->allocator_zeroed_memory, 16, 256,
1643 rctx->save_qbo_state(&rctx->b, &saved_state);
1645 r600_get_hw_query_params(rctx, query, index >= 0 ? index : 0, &params);
1661 rctx->b.bind_compute_state(&rctx->b, rctx->query_result_shader);
1695 rctx->flags |= rctx->screen->barrier_flags.cp_to_L2;
1727 rctx->b.set_constant_buffer(&rctx->b, PIPE_SHADER_COMPUTE, 0, false, &constant_buffer);
1729 rctx->b.set_shader_buffers(&rctx->b, PIPE_SHADER_COMPUTE, 0, 3, ssbo, ~0);
1741 r600_gfx_wait_fence(rctx, qbuf->buf, va, 0x80000000, 0x80000000);
1744 rctx->b.launch_grid(&rctx->b, &grid);
1745 rctx->flags |= rctx->screen->barrier_flags.compute_to_L2;
1748 r600_restore_qbo_state(rctx, &saved_state);
1757 struct r600_common_context *rctx = (struct r600_common_context *)ctx;
1760 struct r600_atom *atom = &rctx->render_cond_atom;
1772 rctx->render_cond = query;
1773 rctx->render_cond_invert = condition;
1774 rctx->render_cond_mode = mode;
1776 rctx->set_atom_dirty(rctx, atom, query != NULL);
2109 void r600_query_init(struct r600_common_context *rctx)
2111 rctx->b.create_query = r600_create_query;
2112 rctx->b.create_batch_query = r600_create_batch_query;
2113 rctx->b.destroy_query = r600_destroy_query;
2114 rctx->b.begin_query = r600_begin_query;
2115 rctx->b.end_query = r600_end_query;
2116 rctx->b.get_query_result = r600_get_query_result;
2117 rctx->b.get_query_result_resource = r600_get_query_result_resource;
2118 rctx->render_cond_atom.emit = r600_emit_query_predication;
2120 if (((struct r600_common_screen*)rctx->b.screen)->info.max_render_backends > 0)
2121 rctx->b.render_condition = r600_render_condition;
2123 list_inithead(&rctx->active_queries);