mirror of
https://gitlab.freedesktop.org/wlroots/wlroots.git
synced 2025-10-29 05:40:12 -04:00
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:
parent
f10327f915
commit
bedc890935
4 changed files with 5 additions and 30 deletions
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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 &&
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue