diff --git a/backend/drm/atomic.c b/backend/drm/atomic.c index 4c95a3bba..34562e366 100644 --- a/backend/drm/atomic.c +++ b/backend/drm/atomic.c @@ -302,8 +302,7 @@ static bool atomic_crtc_commit(struct wlr_drm_connector *conn, &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)) { @@ -378,9 +377,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 a8f618cfb..4f22117b6 100644 --- a/backend/drm/legacy.c +++ b/backend/drm/legacy.c @@ -125,9 +125,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 80410f43f..85519c0ee 100644 --- a/backend/drm/libliftoff.c +++ b/backend/drm/libliftoff.c @@ -329,8 +329,7 @@ static bool crtc_commit(struct wlr_drm_connector *conn, &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) && drm_connector_supports_vrr(conn)) { @@ -456,9 +455,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 d16b0dbc5..8333d4ad8 100644 --- a/backend/wayland/output.c +++ b/backend/wayland/output.c @@ -261,7 +261,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) { return false; @@ -742,7 +742,7 @@ struct wlr_output *wlr_wl_output_create(struct wlr_backend *wlr_backend) { wlr_output_update_custom_mode(wlr_output, 1280, 720, 0); - 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 517ea85be..459ca3218 100644 --- a/backend/x11/output.c +++ b/backend/x11/output.c @@ -124,7 +124,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) { return false; @@ -586,7 +586,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 5ed292087..20821ab5d 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, @@ -145,7 +140,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; @@ -620,7 +615,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 86c044748..3421ac94b 100644 --- a/types/output/output.c +++ b/types/output/output.c @@ -553,12 +553,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 b6dfb93d8..3c282e907 100644 --- a/types/wlr_output_management_v1.c +++ b/types/wlr_output_management_v1.c @@ -137,8 +137,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; }