diff options
author | Simon Ser <contact@emersion.fr> | 2020-01-10 16:00:21 +0100 |
---|---|---|
committer | Drew DeVault <sir@cmpwn.com> | 2020-03-06 21:32:58 +0100 |
commit | 7017fa95b86fe4383d64a8a83ded0a7dcc53eaa2 (patch) | |
tree | 60dc005f83d5907a089a6d3ef2f4ed51b3e55ce8 /include/wlr | |
parent | 8afc1ed68cfaab0c85dd3252f7680d0a6e9e511e (diff) |
output: add adaptive_sync_enabled property
Diffstat (limited to 'include/wlr')
-rw-r--r-- | include/wlr/types/wlr_output.h | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/include/wlr/types/wlr_output.h b/include/wlr/types/wlr_output.h index 0ee6ded6..436bcac3 100644 --- a/include/wlr/types/wlr_output.h +++ b/include/wlr/types/wlr_output.h @@ -46,6 +46,12 @@ struct wlr_output_cursor { } events; }; +enum wlr_output_adaptive_sync_status { + WLR_OUTPUT_ADAPTIVE_SYNC_DISABLED, + WLR_OUTPUT_ADAPTIVE_SYNC_ENABLED, + WLR_OUTPUT_ADAPTIVE_SYNC_UNKNOWN, // requested, but maybe disabled +}; + enum wlr_output_state_field { WLR_OUTPUT_STATE_BUFFER = 1 << 0, WLR_OUTPUT_STATE_DAMAGE = 1 << 1, @@ -53,6 +59,7 @@ enum wlr_output_state_field { WLR_OUTPUT_STATE_ENABLED = 1 << 3, WLR_OUTPUT_STATE_SCALE = 1 << 4, WLR_OUTPUT_STATE_TRANSFORM = 1 << 5, + WLR_OUTPUT_STATE_ADAPTIVE_SYNC_ENABLED = 1 << 6, }; enum wlr_output_state_buffer_type { @@ -74,6 +81,7 @@ struct wlr_output_state { bool enabled; float scale; enum wl_output_transform transform; + bool adaptive_sync_enabled; // only valid if WLR_OUTPUT_STATE_BUFFER enum wlr_output_state_buffer_type buffer_type; @@ -126,6 +134,7 @@ struct wlr_output { float scale; enum wl_output_subpixel subpixel; enum wl_output_transform transform; + enum wlr_output_adaptive_sync_status adaptive_sync_status; bool needs_frame; // damage for cursors and fullscreen surface, in output-local coordinates @@ -247,6 +256,16 @@ void wlr_output_set_custom_mode(struct wlr_output *output, int32_t width, void wlr_output_set_transform(struct wlr_output *output, enum wl_output_transform transform); /** + * Enables or disables adaptive sync (ie. variable refresh rate) on this + * output. This is just a hint, the backend is free to ignore this setting. + * + * When enabled, compositors can submit frames a little bit later than the + * deadline without dropping a frame. + * + * Adaptive sync is double-buffered state, see `wlr_output_commit`. + */ +void wlr_output_enable_adaptive_sync(struct wlr_output *output, bool enabled); +/** * Sets a scale for the output. * * Scale is double-buffered state, see `wlr_output_commit`. |