#ifndef YASL_TIMING_H #define YASL_TIMING_H #include #ifdef __cplusplus extern "C" { #endif struct yasl_resize_stats { uint64_t count; double avg_us; double max_us; long minflt; }; /* Describes last_present_ns, not merely availability of an extension. */ enum yasl_timing_source { YASL_TIMING_UNKNOWN = 0, YASL_TIMING_SUBMISSION, /* CPU submission time; not scanout confirmation */ YASL_TIMING_FRAME_CALLBACK, /* compositor pacing callback, not scanout */ YASL_TIMING_PRESENTATION, /* compositor-confirmed presentation */ }; struct yasl_timing { double refresh_ns; uint64_t last_present_ns; uint64_t next_present_ns; uint64_t frames_skipped; enum yasl_timing_source source; struct yasl_resize_stats resize; }; #ifdef __cplusplus } #endif #endif /* YASL_TIMING_H */