X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=metrics.h;h=230d668422cc702ee61b8c0da6fe0096e19bf4ce;hb=778d86ef913e3c4fa3618232c6f34f0655e92dd2;hp=26de580d517066856133971fb5ac7641fb7559be;hpb=43fa296375ee35d811b7fed4537312ce9d08feac;p=fips diff --git a/metrics.h b/metrics.h index 26de580..230d668 100644 --- a/metrics.h +++ b/metrics.h @@ -22,6 +22,8 @@ #ifndef METRICS_H #define METRICS_H +#include "metrics-info.h" + typedef enum { METRICS_OP_ACCUM, @@ -50,70 +52,28 @@ typedef enum METRICS_OP_SHADER } metrics_op_t; -/* Timer query */ -typedef struct timer_query -{ - unsigned id; - - metrics_op_t op; - struct timer_query *next; -} timer_query_t; - -/* Performance-monitor query */ -typedef struct monitor -{ - unsigned id; - - metrics_op_t op; - struct monitor *next; -} monitor_t; - -typedef struct op_metrics -{ - /* This happens to also be the index into the - * ctx->op_metrics array currently - */ - metrics_op_t op; - double time_ns; - - double **counters; -} op_metrics_t; - -typedef struct metrics -{ - metrics_op_t op; +typedef struct metrics metrics_t; - /* GL_TIME_ELAPSED query for which glEndQuery has not yet - * been called. */ - unsigned timer_begun_id; +/* Create a new metrics_t object for tracking metrics, given the + * pre-initialized metrics_info_t* describing available counters. */ +metrics_t * +metrics_create (metrics_info_t *info); - /* GL_TIME_ELAPSED queries for which glEndQuery has been - * called, (but results have not yet been queried). */ - timer_query_t *timer_head; - timer_query_t *timer_tail; - - /* Performance monitor for which glEndPerfMonitorAMD has not - * yet been called. */ - unsigned monitor_begun_id; - - /* Performance monitors for which glEndPerfMonitorAMD has - * been called, (but results have not yet been queried). */ - monitor_t *monitor_head; - monitor_t *monitor_tail; - - int monitors_in_flight; - - unsigned num_op_metrics; - op_metrics_t *op_metrics; -} metrics_t; - -/* Initialize a metrics_t object for tracking metrics. */ +/* Free all internal resources of a metrics_t + * + * All outstanding metrics counters are discarded. + * + * The metrics_t object remains valid and may be used again. + */ void -metrics_init (metrics_t *metrics); +metrics_fini (metrics_t *metrics); -/* Cleanup a metrics_t object that's no longer needed. */ +/* Destroy a metrics_t object. + * + * After this call, the metrics_t* value is and must not be used + * further. */ void -metrics_fini (metrics_t *metrics); +metrics_destroy (metrics_t *metrics); /* Start accumulating GPU time. *