backend/drm: Use cached vrr support flag

We do not expect the connector support to change throughout the lifetime
of the link on this connector, so use the value we initially probed.
This commit is contained in:
Kenny Levinsen 2024-06-18 11:33:02 +02:00 committed by Kirill Primak
parent f10327f915
commit bedc890935
4 changed files with 5 additions and 30 deletions

View file

@ -276,7 +276,7 @@ bool drm_atomic_connector_prepare(struct wlr_drm_connector_state *state, bool mo
output->adaptive_sync_status == WLR_OUTPUT_ADAPTIVE_SYNC_ENABLED;
bool vrr_enabled = prev_vrr_enabled;
if ((state->base->committed & WLR_OUTPUT_STATE_ADAPTIVE_SYNC_ENABLED)) {
if (state->base->adaptive_sync_enabled && !drm_connector_supports_vrr(conn)) {
if (state->base->adaptive_sync_enabled && !output->adaptive_sync_supported) {
return false;
}
vrr_enabled = state->base->adaptive_sync_enabled;

View file

@ -721,32 +721,6 @@ static bool drm_connector_set_pending_layer_fbs(struct wlr_drm_connector *conn,
static bool drm_connector_alloc_crtc(struct wlr_drm_connector *conn);
bool drm_connector_supports_vrr(struct wlr_drm_connector *conn) {
struct wlr_drm_backend *drm = conn->backend;
struct wlr_drm_crtc *crtc = conn->crtc;
if (!crtc) {
return false;
}
uint64_t vrr_capable;
if (conn->props.vrr_capable == 0 ||
!get_drm_prop(drm->fd, conn->id, conn->props.vrr_capable,
&vrr_capable) || !vrr_capable) {
wlr_drm_conn_log(conn, WLR_DEBUG, "Failed to enable adaptive sync: "
"connector doesn't support VRR");
return false;
}
if (crtc->props.vrr_enabled == 0) {
wlr_drm_conn_log(conn, WLR_DEBUG, "Failed to enable adaptive sync: "
"CRTC %"PRIu32" doesn't support VRR", crtc->id);
return false;
}
return true;
}
static bool drm_connector_prepare(struct wlr_drm_connector_state *conn_state, bool test_only) {
const struct wlr_output_state *state = conn_state->base;
struct wlr_drm_connector *conn = conn_state->connector;
@ -770,7 +744,9 @@ static bool drm_connector_prepare(struct wlr_drm_connector_state *conn_state, bo
if ((state->committed & WLR_OUTPUT_STATE_ADAPTIVE_SYNC_ENABLED) &&
state->adaptive_sync_enabled &&
!drm_connector_supports_vrr(conn)) {
!output->adaptive_sync_supported) {
wlr_drm_conn_log(conn, WLR_DEBUG,
"Can't enable adaptive sync: connector doesn't support VRR");
return false;
}

View file

@ -110,7 +110,7 @@ static bool legacy_crtc_commit(const struct wlr_drm_connector_state *state,
}
if (state->base->committed & WLR_OUTPUT_STATE_ADAPTIVE_SYNC_ENABLED) {
if (state->base->adaptive_sync_enabled && !drm_connector_supports_vrr(conn)) {
if (state->base->adaptive_sync_enabled && !output->adaptive_sync_supported) {
return false;
}
if (crtc->props.vrr_enabled != 0 &&