exec_list_make_empty(&perf_ctx->free_sample_buffers);
}
+
+/******************************************************************************/
+
+/**
+ * Emit MI_STORE_REGISTER_MEM commands to capture all of the
+ * pipeline statistics for the performance query object.
+ */
+void
+gen_perf_snapshot_statistics_registers(void *context,
+ struct gen_perf_config *perf,
+ struct gen_perf_query_object *obj,
+ uint32_t offset_in_bytes)
+{
+ const struct gen_perf_query_info *query = obj->queryinfo;
+ const int n_counters = query->n_counters;
+
+ for (int i = 0; i < n_counters; i++) {
+ const struct gen_perf_query_counter *counter = &query->counters[i];
+
+ assert(counter->data_type == GEN_PERF_COUNTER_DATA_TYPE_UINT64);
+
+ perf->vtbl.store_register_mem64(context, obj->pipeline_stats.bo,
+ counter->pipeline_stat.reg,
+ offset_in_bytes + i * sizeof(uint64_t));
+ }
+}
void gen_perf_reap_old_sample_buffers(struct gen_perf_context *perf_ctx);
void gen_perf_free_sample_bufs(struct gen_perf_context *perf_ctx);
+void gen_perf_snapshot_statistics_registers(void *context,
+ struct gen_perf_config *perf,
+ struct gen_perf_query_object *obj,
+ uint32_t offset_in_bytes);
#endif /* GEN_PERF_H */
*raw_max = counter->raw_max;
}
-/******************************************************************************/
-
-/**
- * Emit MI_STORE_REGISTER_MEM commands to capture all of the
- * pipeline statistics for the performance query object.
- */
-static void
-snapshot_statistics_registers(struct brw_context *brw,
- struct gen_perf_query_object *obj,
- uint32_t offset_in_bytes)
-{
- const struct gen_perf_query_info *query = obj->queryinfo;
- const int n_counters = query->n_counters;
-
- for (int i = 0; i < n_counters; i++) {
- const struct gen_perf_query_counter *counter = &query->counters[i];
-
- assert(counter->data_type == GEN_PERF_COUNTER_DATA_TYPE_UINT64);
-
- brw->perf_ctx.perf->vtbl.store_register_mem64(brw, obj->pipeline_stats.bo,
- counter->pipeline_stat.reg,
- offset_in_bytes + i * sizeof(uint64_t));
- }
-}
-
/**
* Add a query to the global list of "unaccumulated queries."
*
STATS_BO_SIZE);
/* Take starting snapshots. */
- snapshot_statistics_registers(brw, obj, 0);
+ gen_perf_snapshot_statistics_registers(brw, perf_cfg, obj, 0);
++brw->perf_ctx.n_active_pipeline_stats_queries;
break;
break;
case GEN_PERF_QUERY_TYPE_PIPELINE:
- snapshot_statistics_registers(brw, obj,
- STATS_BO_END_OFFSET_BYTES);
+ gen_perf_snapshot_statistics_registers(brw, perf_cfg, obj,
+ STATS_BO_END_OFFSET_BYTES);
--brw->perf_ctx.n_active_pipeline_stats_queries;
break;