diff --git a/backend/drm/atomic.c b/backend/drm/atomic.c index c190a9fd3..266e5dc92 100644 --- a/backend/drm/atomic.c +++ b/backend/drm/atomic.c @@ -311,8 +311,7 @@ static bool atomic_crtc_commit(struct wlr_drm_connector *conn, state->primary_fb->wlr_buf->height, &state->base->damage, &fb_damage_clips); } - bool prev_vrr_enabled = - output->adaptive_sync_status == WLR_OUTPUT_ADAPTIVE_SYNC_ENABLED; + bool prev_vrr_enabled = output->adaptive_sync_enabled; bool vrr_enabled = prev_vrr_enabled; if ((state->base->committed & WLR_OUTPUT_STATE_ADAPTIVE_SYNC_ENABLED)) { if (!drm_connector_supports_vrr(conn)) { @@ -387,9 +386,7 @@ static bool atomic_crtc_commit(struct wlr_drm_connector *conn, commit_blob(drm, &crtc->gamma_lut, gamma_lut); if (vrr_enabled != prev_vrr_enabled) { - output->adaptive_sync_status = vrr_enabled ? - WLR_OUTPUT_ADAPTIVE_SYNC_ENABLED : - WLR_OUTPUT_ADAPTIVE_SYNC_DISABLED; + output->adaptive_sync_enabled = vrr_enabled; wlr_drm_conn_log(conn, WLR_DEBUG, "VRR %s", vrr_enabled ? "enabled" : "disabled"); } diff --git a/backend/drm/legacy.c b/backend/drm/legacy.c index 1e62f61f7..49597638a 100644 --- a/backend/drm/legacy.c +++ b/backend/drm/legacy.c @@ -126,9 +126,7 @@ static bool legacy_crtc_commit(struct wlr_drm_connector *conn, "drmModeObjectSetProperty(VRR_ENABLED) failed"); return false; } - output->adaptive_sync_status = state->base->adaptive_sync_enabled ? - WLR_OUTPUT_ADAPTIVE_SYNC_ENABLED : - WLR_OUTPUT_ADAPTIVE_SYNC_DISABLED; + output->adaptive_sync_enabled = state->base->adaptive_sync_enabled; wlr_drm_conn_log(conn, WLR_DEBUG, "VRR %s", state->base->adaptive_sync_enabled ? "enabled" : "disabled"); } diff --git a/backend/drm/libliftoff.c b/backend/drm/libliftoff.c index 79f839549..624805e93 100644 --- a/backend/drm/libliftoff.c +++ b/backend/drm/libliftoff.c @@ -355,8 +355,7 @@ static bool crtc_commit(struct wlr_drm_connector *conn, *ptr = primary_fb_damage_clips; } - bool prev_vrr_enabled = - output->adaptive_sync_status == WLR_OUTPUT_ADAPTIVE_SYNC_ENABLED; + bool prev_vrr_enabled = output->adaptive_sync_enabled; bool vrr_enabled = prev_vrr_enabled; if ((state->base->committed & WLR_OUTPUT_STATE_ADAPTIVE_SYNC_ENABLED) && drm_connector_supports_vrr(conn)) { @@ -483,9 +482,7 @@ out: commit_blob(drm, &crtc->gamma_lut, gamma_lut); if (vrr_enabled != prev_vrr_enabled) { - output->adaptive_sync_status = vrr_enabled ? - WLR_OUTPUT_ADAPTIVE_SYNC_ENABLED : - WLR_OUTPUT_ADAPTIVE_SYNC_DISABLED; + output->adaptive_sync_enabled = vrr_enabled; wlr_drm_conn_log(conn, WLR_DEBUG, "VRR %s", vrr_enabled ? "enabled" : "disabled"); } diff --git a/backend/wayland/output.c b/backend/wayland/output.c index 2d3e32696..112eea65e 100644 --- a/backend/wayland/output.c +++ b/backend/wayland/output.c @@ -278,7 +278,7 @@ static bool output_test(struct wlr_output *wlr_output, // Adaptive sync is effectively always enabled when using the Wayland // backend. This is not something we have control over, so we set the state // to enabled on creating the output and never allow changing it. - assert(wlr_output->adaptive_sync_status == WLR_OUTPUT_ADAPTIVE_SYNC_ENABLED); + assert(wlr_output->adaptive_sync_enabled); if (state->committed & WLR_OUTPUT_STATE_ADAPTIVE_SYNC_ENABLED) { if (!state->adaptive_sync_enabled) { wlr_log(WLR_DEBUG, "Disabling adaptive sync is not supported"); @@ -777,7 +777,7 @@ static struct wlr_wl_output *output_create(struct wlr_wl_backend *backend, backend->event_loop, &state); wlr_output_state_finish(&state); - wlr_output->adaptive_sync_status = WLR_OUTPUT_ADAPTIVE_SYNC_ENABLED; + wlr_output->adaptive_sync_enabled = true; size_t output_num = ++last_output_num; diff --git a/backend/x11/output.c b/backend/x11/output.c index 51a8459d1..a42e43cd4 100644 --- a/backend/x11/output.c +++ b/backend/x11/output.c @@ -133,7 +133,7 @@ static bool output_test(struct wlr_output *wlr_output, // _VARIABLE_REFRESH window property like mesa automatically does. We don't // have any control beyond that, so we set the state to enabled on creating // the output and never allow changing it (just like the Wayland backend). - assert(wlr_output->adaptive_sync_status == WLR_OUTPUT_ADAPTIVE_SYNC_ENABLED); + assert(wlr_output->adaptive_sync_enabled); if (state->committed & WLR_OUTPUT_STATE_ADAPTIVE_SYNC_ENABLED) { if (!state->adaptive_sync_enabled) { wlr_log(WLR_DEBUG, "Disabling adaptive sync is not supported"); @@ -637,7 +637,7 @@ struct wlr_output *wlr_x11_output_create(struct wlr_backend *backend) { xcb_change_property(x11->xcb, XCB_PROP_MODE_REPLACE, output->win, x11->atoms.variable_refresh, XCB_ATOM_CARDINAL, 32, 1, &enabled); - wlr_output->adaptive_sync_status = WLR_OUTPUT_ADAPTIVE_SYNC_ENABLED; + wlr_output->adaptive_sync_enabled = true; wlr_x11_output_set_title(wlr_output, NULL); diff --git a/include/wlr/types/wlr_output.h b/include/wlr/types/wlr_output.h index 865bc5e5c..47380b5d6 100644 --- a/include/wlr/types/wlr_output.h +++ b/include/wlr/types/wlr_output.h @@ -48,11 +48,6 @@ struct wlr_output_cursor { struct wl_list link; }; -enum wlr_output_adaptive_sync_status { - WLR_OUTPUT_ADAPTIVE_SYNC_DISABLED, - WLR_OUTPUT_ADAPTIVE_SYNC_ENABLED, -}; - enum wlr_output_state_field { WLR_OUTPUT_STATE_BUFFER = 1 << 0, WLR_OUTPUT_STATE_DAMAGE = 1 << 1, @@ -146,7 +141,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 adaptive_sync_enabled; uint32_t render_format; bool needs_frame; @@ -459,7 +454,7 @@ void wlr_output_state_set_transform(struct wlr_output_state *state, enum wl_output_transform transform); /** * Enables or disable adaptive sync for an output (ie. variable refresh rate). - * Compositors can inspect `wlr_output.adaptive_sync_status` to query the + * Compositors can inspect `wlr_output.adaptive_sync_enabled` to query the * effective status. Backends that don't support adaptive sync will reject the * output commit. * diff --git a/types/output/output.c b/types/output/output.c index 4376da991..1f5c7bb6c 100644 --- a/types/output/output.c +++ b/types/output/output.c @@ -532,12 +532,9 @@ static uint32_t output_compare_state(struct wlr_output *output, output->transform == state->transform) { fields |= WLR_OUTPUT_STATE_TRANSFORM; } - if (state->committed & WLR_OUTPUT_STATE_ADAPTIVE_SYNC_ENABLED) { - bool enabled = - output->adaptive_sync_status != WLR_OUTPUT_ADAPTIVE_SYNC_DISABLED; - if (enabled == state->adaptive_sync_enabled) { - fields |= WLR_OUTPUT_STATE_ADAPTIVE_SYNC_ENABLED; - } + if (state->committed & WLR_OUTPUT_STATE_ADAPTIVE_SYNC_ENABLED && + output->adaptive_sync_enabled != state->adaptive_sync_enabled) { + fields |= WLR_OUTPUT_STATE_ADAPTIVE_SYNC_ENABLED; } if ((state->committed & WLR_OUTPUT_STATE_RENDER_FORMAT) && output->render_format == state->render_format) { diff --git a/types/wlr_output_management_v1.c b/types/wlr_output_management_v1.c index b90d227e5..c6129bbdc 100644 --- a/types/wlr_output_management_v1.c +++ b/types/wlr_output_management_v1.c @@ -159,8 +159,7 @@ struct wlr_output_configuration_head_v1 * config_head->state.custom_mode.refresh = output->refresh; config_head->state.transform = output->transform; config_head->state.scale = output->scale; - config_head->state.adaptive_sync_enabled = - output->adaptive_sync_status == WLR_OUTPUT_ADAPTIVE_SYNC_ENABLED; + config_head->state.adaptive_sync_enabled = output->adaptive_sync_enabled; return config_head; }