X-Git-Url: https://git.cworth.org/git?p=fips;a=blobdiff_plain;f=context.h;h=cbfd6b48f0dbc315f824a28255f8ddf7960c48c3;hp=ded22027f075892a12df33ab5f109d33c09f3c37;hb=79edc7574c353a7ae8d2455ecc3a94aa956b3c8e;hpb=bc106316b96ce7bfdbec3ee54ba37e49f156dea5 diff --git a/context.h b/context.h index ded2202..cbfd6b4 100644 --- a/context.h +++ b/context.h @@ -22,9 +22,12 @@ #ifndef CONTEXT_H #define CONTEXT_H +#include "metrics.h" +#include "metrics-info.h" + #include "fips-dispatch.h" -/* Inidcate that a new context has come into use. +/* Indicate that a new context has come into use. * * Here, 'system_context_id' is a pointer to a system context (such as * a GLXContext) which fips can use to map to persistent contex_t @@ -41,4 +44,46 @@ context_enter (fips_api_t api, void *system_context_id); void context_leave (void); +/* Start accumulating GPU time. + * + * The time accumulated will be accounted against the + * current operation (as set with context_set_current_op). + */ +void +context_counter_start (void); + +/* Stop accumulating GPU time (stops the most-recently started counter) */ +void +context_counter_stop (void); + +/* Set a metrics_op_t value to indicate what kind of operation is + * being performed. + * + * The metrics-tracking code will account for timings by accumulating + * measured counter values into a separate counter for each + * metrics_op_t value, (so that the report can describe which + * operations are the most expensive). + * + * In addition, for the value METRICS_OP_SHADER, each specific shader + * program can be distinguished. To accomplish this, pass a value of + * METRICS_OP_SHADER + shader_program_number to this function. + */ +void +context_set_current_op (metrics_op_t op); + +/* Return the current metrics_op_t value, (the value most-recently-set + * with a call to context_set_current_op). + */ +metrics_op_t +context_get_current_op (void); + +/* Should be called at the end of every function wrapper for a + * function that ends a frame, (glXSwapBuffers and similar). + * + * This function performs whatever bookkeeping is necessary to + * generate a timing report, then emits that report. + */ +void +context_end_frame (void); + #endif