X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=metrics.h;h=7baa9cb5aeb25cc460c29ec7b782f5d2bf96f4b4;hb=71d810f3f518b41b4d9f7d9b0c9bf00d02fdcb3f;hp=45fef33cabc93ae38d788be3950459d29970bede;hpb=7980e4108be1dff9b074aa91b97c8d787df41d83;p=fips diff --git a/metrics.h b/metrics.h index 45fef33..7baa9cb 100644 --- a/metrics.h +++ b/metrics.h @@ -50,6 +50,28 @@ typedef enum METRICS_OP_SHADER } metrics_op_t; +typedef struct metrics metrics_t; + +/* Create a new metrics_t object for tracking metrics. */ +metrics_t * +metrics_create (void); + +/* 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_fini (metrics_t *metrics); + +/* Destroy a metrics_t object. + * + * After this call, the metrics_t* value is and must not be used + * further. */ +void +metrics_destroy (metrics_t *metrics); + /* Start accumulating GPU time. * * The time accumulated will be accounted against the @@ -92,4 +114,18 @@ metrics_get_current_op (void); void metrics_end_frame (void); +/* Process outstanding metrics requests, accumulating results. + * + * This function is called automatically by metrics_end_frame. + * + * During a frame, it may be important to call this function to avoid + * too many oustanding timer/performance-monitor queries. At the same + * time, it's important not to call this function too frequently, + * since collection of metrics information will result in flushes of + * the OpenGL pipeline which can interfere with the behavior being + * measured. + */ +void +metrics_collect_available (void); + #endif