aboutsummaryrefslogtreecommitdiff
path: root/include/wlr
diff options
context:
space:
mode:
authorSimon Ser <contact@emersion.fr>2020-01-10 16:00:21 +0100
committerDrew DeVault <sir@cmpwn.com>2020-03-06 21:32:58 +0100
commit7017fa95b86fe4383d64a8a83ded0a7dcc53eaa2 (patch)
tree60dc005f83d5907a089a6d3ef2f4ed51b3e55ce8 /include/wlr
parent8afc1ed68cfaab0c85dd3252f7680d0a6e9e511e (diff)
output: add adaptive_sync_enabled property
Diffstat (limited to 'include/wlr')
-rw-r--r--include/wlr/types/wlr_output.h19
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`.