+ context_t *ctx = current_context;
+
+ if (ctx == NULL)
+ return;
+
+ metrics_destroy (ctx->metrics);
+}
+
+void
+context_counter_start (void)
+{
+ metrics_counter_start (current_context->metrics);
+}
+
+void
+context_counter_stop (void)
+{
+ metrics_counter_stop (current_context->metrics);
+}
+
+void
+context_set_current_op (metrics_op_t op)
+{
+ metrics_set_current_op (current_context->metrics, op);
+}
+
+metrics_op_t
+context_get_current_op (void)
+{
+ return metrics_get_current_op (current_context->metrics);
+}
+
+void
+context_end_frame (void)
+{
+ return metrics_end_frame (current_context->metrics);
+}
+
+/* Is the given extension available? */
+static bool
+check_extension (const char *extension)
+{
+ int i, num_extensions;
+ const char *available;
+
+ glGetIntegerv (GL_NUM_EXTENSIONS, &num_extensions);
+
+ for (i = 0; i < num_extensions; i++) {
+ available = (char *) glGetStringi (GL_EXTENSIONS, i);
+ if (strcmp (extension, available) == 0) {
+ return true;
+ }
+ }
+
+ return false;