diff options
author | Niklas Haas <git@nand.wakku.to> | 2016-06-05 21:55:30 +0200 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2016-06-07 12:16:15 +0200 |
commit | 8ceb935bd8e1062ff83287c00cca0b7428a7dfba (patch) | |
tree | 0183f856b6262ae8b65d65bdf0caa466c03985f3 /video/out/opengl/utils.h | |
parent | 88b584656d9752573cc4320c845a6d31b5877140 (diff) | |
download | mpv-8ceb935bd8e1062ff83287c00cca0b7428a7dfba.tar.bz2 mpv-8ceb935bd8e1062ff83287c00cca0b7428a7dfba.tar.xz |
vo_opengl: add time queries
To avoid blocking the CPU, we use 8 time objects and rotate through
them, only blocking until the last possible moment (before we need
access to them on the next iteration through the ring buffer). I tested
it out on my machine and 4 query objects were enough to guarantee
block-free querying, but the extra margin shouldn't hurt.
Frame render times are just output at the end of each frame, via MP_DBG.
This might be improved in the future. (In particular, I want to expose
these numbers as properties so that users get some more visible feedback
about render times)
Currently, we measure pass_render_frame and pass_draw_to_screen
separately because the former might be called multiple times due to
interpolation. Doing it this way gives more faithful numbers. Same goes
for frame upload times.
Diffstat (limited to 'video/out/opengl/utils.h')
-rw-r--r-- | video/out/opengl/utils.h | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/video/out/opengl/utils.h b/video/out/opengl/utils.h index 85d3413831..33e66cd3de 100644 --- a/video/out/opengl/utils.h +++ b/video/out/opengl/utils.h @@ -172,4 +172,16 @@ void gl_sc_enable_extension(struct gl_shader_cache *sc, char *name); void gl_sc_gen_shader_and_reset(struct gl_shader_cache *sc); void gl_sc_reset(struct gl_shader_cache *sc); +struct gl_timer; + +struct gl_timer *gl_timer_create(GL *gl); +void gl_timer_free(struct gl_timer *timer); +void gl_timer_start(struct gl_timer *timer); +void gl_timer_stop(struct gl_timer *timer); + +int gl_timer_sample_count(struct gl_timer *timer); +uint64_t gl_timer_last_us(struct gl_timer *timer); +uint64_t gl_timer_avg_us(struct gl_timer *timer); +uint64_t gl_timer_peak_us(struct gl_timer *timer); + #endif |