diff --git a/include/wlr/render/pass.h b/include/wlr/render/pass.h index 66480f7f7..2159bc3df 100644 --- a/include/wlr/render/pass.h +++ b/include/wlr/render/pass.h @@ -33,6 +33,17 @@ struct wlr_buffer_pass_options { /* Color transform to apply to the output of the render pass, * leave NULL to indicate sRGB/no custom transform */ struct wlr_color_transform *color_transform; + + /* Signal a timeline synchronization point when the render pass completes. + * + * When a compositor provides a signal timeline, the renderer may skip + * implicit signal synchronization. + * + * Support for this feature is advertised by features.timeline in + * struct wlr_renderer. + */ + struct wlr_drm_syncobj_timeline *signal_timeline; + uint64_t signal_point; }; /** @@ -88,6 +99,17 @@ struct wlr_render_texture_options { enum wlr_scale_filter_mode filter_mode; /* Blend mode */ enum wlr_render_blend_mode blend_mode; + + /* Wait for a timeline synchronization point before texturing. + * + * When a compositor provides a wait timeline, the renderer may skip + * implicit wait synchronization. + * + * Support for this feature is advertised by features.timeline in + * struct wlr_renderer. + */ + struct wlr_drm_syncobj_timeline *wait_timeline; + uint64_t wait_point; }; /** diff --git a/include/wlr/render/wlr_renderer.h b/include/wlr/render/wlr_renderer.h index bb9a55fcf..4a8ccd398 100644 --- a/include/wlr/render/wlr_renderer.h +++ b/include/wlr/render/wlr_renderer.h @@ -45,6 +45,12 @@ struct wlr_renderer { * Does the renderer support color transforms on its output? */ bool output_color_transform; + /** + * Whether wait/signal timelines are supported. + * + * See struct wlr_drm_syncobj_timeline. + */ + bool timeline; } features; // private state