diff options
Diffstat (limited to 'include/wlr')
| -rw-r--r-- | include/wlr/render/interface.h | 12 | ||||
| -rw-r--r-- | include/wlr/render/wlr_renderer.h | 30 | ||||
| -rw-r--r-- | include/wlr/types/wlr_output.h | 3 | 
3 files changed, 41 insertions, 4 deletions
diff --git a/include/wlr/render/interface.h b/include/wlr/render/interface.h index 709ae481..c352efe1 100644 --- a/include/wlr/render/interface.h +++ b/include/wlr/render/interface.h @@ -49,7 +49,8 @@ struct wlr_renderer_impl {  	struct wlr_texture *(*texture_from_buffer)(struct wlr_renderer *renderer,  		struct wlr_buffer *buffer);  	struct wlr_render_pass *(*begin_buffer_pass)(struct wlr_renderer *renderer, -		struct wlr_buffer *buffer); +		struct wlr_buffer *buffer, struct wlr_buffer_pass_options *options); +	struct wlr_render_timer *(*render_timer_create)(struct wlr_renderer *renderer);  };  void wlr_renderer_init(struct wlr_renderer *renderer, @@ -79,6 +80,15 @@ struct wlr_render_pass_impl {  		const struct wlr_render_rect_options *options);  }; +struct wlr_render_timer { +	const struct wlr_render_timer_impl *impl; +}; + +struct wlr_render_timer_impl { +	int (*get_duration_ns)(struct wlr_render_timer *timer); +	void (*destroy)(struct wlr_render_timer *timer); +}; +  void wlr_render_texture_options_get_src_box(const struct wlr_render_texture_options *options,  	struct wlr_fbox *box);  void wlr_render_texture_options_get_dst_box(const struct wlr_render_texture_options *options, diff --git a/include/wlr/render/wlr_renderer.h b/include/wlr/render/wlr_renderer.h index 33668067..a150930c 100644 --- a/include/wlr/render/wlr_renderer.h +++ b/include/wlr/render/wlr_renderer.h @@ -162,13 +162,22 @@ void wlr_renderer_destroy(struct wlr_renderer *renderer);  struct wlr_render_pass;  /** + * An object that can be queried after a render to get the duration of the render. + */ +struct wlr_render_timer; + +struct wlr_buffer_pass_options { +	struct wlr_render_timer *timer; +}; + +/**   * Begin a new render pass with the supplied destination buffer.   *   * Callers must call wlr_render_pass_submit() once they are done with the   * render pass.   */ -struct wlr_render_pass *wlr_renderer_begin_buffer_pass( -	struct wlr_renderer *renderer, struct wlr_buffer *buffer); +struct wlr_render_pass *wlr_renderer_begin_buffer_pass(struct wlr_renderer *renderer, +	struct wlr_buffer *buffer, struct wlr_buffer_pass_options *options);  /**   * Submit the render pass. @@ -235,4 +244,21 @@ struct wlr_render_rect_options {  void wlr_render_pass_add_rect(struct wlr_render_pass *render_pass,  	const struct wlr_render_rect_options *options); +/** + * Allocate and initialise a new render timer. + */ +struct wlr_render_timer *wlr_render_timer_create(struct wlr_renderer *renderer); + +/** + * Get the render duration in nanoseconds from the timer. + * + * Returns -1 if the duration is unavailable. + */ +int wlr_render_timer_get_duration_ns(struct wlr_render_timer *timer); + +/** + * Destroy the render timer. + */ +void wlr_render_timer_destroy(struct wlr_render_timer *timer); +  #endif diff --git a/include/wlr/types/wlr_output.h b/include/wlr/types/wlr_output.h index be8253af..e096a3ce 100644 --- a/include/wlr/types/wlr_output.h +++ b/include/wlr/types/wlr_output.h @@ -14,6 +14,7 @@  #include <time.h>  #include <wayland-server-protocol.h>  #include <wayland-util.h> +#include <wlr/render/wlr_renderer.h>  #include <wlr/types/wlr_buffer.h>  #include <wlr/util/addon.h> @@ -590,7 +591,7 @@ bool wlr_output_configure_primary_swapchain(struct wlr_output *output,   * Same as wlr_output_attach_render(), but returns a struct wlr_render_pass.   */  struct wlr_render_pass *wlr_output_begin_render_pass(struct wlr_output *output, -	struct wlr_output_state *state, int *buffer_age); +	struct wlr_output_state *state, int *buffer_age, struct wlr_render_timer *timer);  /**  | 
