X-Git-Url: https://git.cworth.org/git?p=fips;a=blobdiff_plain;f=metrics.h;h=7baa9cb5aeb25cc460c29ec7b782f5d2bf96f4b4;hp=26de580d517066856133971fb5ac7641fb7559be;hb=3d421696b9e6cc28f590204fb290f775330e78e8;hpb=43fa296375ee35d811b7fed4537312ce9d08feac diff --git a/metrics.h b/metrics.h index 26de580..7baa9cb 100644 --- a/metrics.h +++ b/metrics.h @@ -50,70 +50,27 @@ 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. */ +metrics_t * +metrics_create (void); - /* 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. *