connector/kms: Detect variable refresh rate capability
The "vrr_capable" property indicates whether variable refresh rate is supported for a connector. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1154>
This commit is contained in:
parent
d5f68c8140
commit
b7128b1d12
@ -40,6 +40,7 @@ typedef enum _MetaKmsConnectorProp
|
|||||||
META_KMS_CONNECTOR_PROP_COLORSPACE,
|
META_KMS_CONNECTOR_PROP_COLORSPACE,
|
||||||
META_KMS_CONNECTOR_PROP_HDR_OUTPUT_METADATA,
|
META_KMS_CONNECTOR_PROP_HDR_OUTPUT_METADATA,
|
||||||
META_KMS_CONNECTOR_PROP_BROADCAST_RGB,
|
META_KMS_CONNECTOR_PROP_BROADCAST_RGB,
|
||||||
|
META_KMS_CONNECTOR_PROP_VRR_CAPABLE,
|
||||||
META_KMS_CONNECTOR_N_PROPS
|
META_KMS_CONNECTOR_N_PROPS
|
||||||
} MetaKmsConnectorProp;
|
} MetaKmsConnectorProp;
|
||||||
|
|
||||||
|
@ -397,6 +397,10 @@ state_set_properties (MetaKmsConnectorState *state,
|
|||||||
prop = &props[META_KMS_CONNECTOR_PROP_UNDERSCAN];
|
prop = &props[META_KMS_CONNECTOR_PROP_UNDERSCAN];
|
||||||
if (prop->prop_id)
|
if (prop->prop_id)
|
||||||
state->underscan.supported = TRUE;
|
state->underscan.supported = TRUE;
|
||||||
|
|
||||||
|
prop = &props[META_KMS_CONNECTOR_PROP_VRR_CAPABLE];
|
||||||
|
if (prop->prop_id)
|
||||||
|
state->vrr_capable = !!prop->value;
|
||||||
}
|
}
|
||||||
|
|
||||||
static CoglSubpixelOrder
|
static CoglSubpixelOrder
|
||||||
@ -829,6 +833,7 @@ meta_kms_connector_state_new (void)
|
|||||||
state = g_new0 (MetaKmsConnectorState, 1);
|
state = g_new0 (MetaKmsConnectorState, 1);
|
||||||
state->suggested_x = -1;
|
state->suggested_x = -1;
|
||||||
state->suggested_y = -1;
|
state->suggested_y = -1;
|
||||||
|
state->vrr_capable = FALSE;
|
||||||
|
|
||||||
return state;
|
return state;
|
||||||
}
|
}
|
||||||
@ -1007,6 +1012,9 @@ meta_kms_connector_state_changes (MetaKmsConnectorState *state,
|
|||||||
state->broadcast_rgb.supported != new_state->broadcast_rgb.supported)
|
state->broadcast_rgb.supported != new_state->broadcast_rgb.supported)
|
||||||
return META_KMS_RESOURCE_CHANGE_FULL;
|
return META_KMS_RESOURCE_CHANGE_FULL;
|
||||||
|
|
||||||
|
if (state->vrr_capable != new_state->vrr_capable)
|
||||||
|
return META_KMS_RESOURCE_CHANGE_FULL;
|
||||||
|
|
||||||
if (state->privacy_screen_state != new_state->privacy_screen_state)
|
if (state->privacy_screen_state != new_state->privacy_screen_state)
|
||||||
return META_KMS_RESOURCE_CHANGE_PRIVACY_SCREEN;
|
return META_KMS_RESOURCE_CHANGE_PRIVACY_SCREEN;
|
||||||
|
|
||||||
@ -1357,6 +1365,11 @@ init_properties (MetaKmsConnector *connector,
|
|||||||
.num_enum_values = META_KMS_CONNECTOR_BROADCAST_RGB_N_PROPS,
|
.num_enum_values = META_KMS_CONNECTOR_BROADCAST_RGB_N_PROPS,
|
||||||
.default_value = META_KMS_CONNECTOR_BROADCAST_RGB_UNKNOWN,
|
.default_value = META_KMS_CONNECTOR_BROADCAST_RGB_UNKNOWN,
|
||||||
},
|
},
|
||||||
|
[META_KMS_CONNECTOR_PROP_VRR_CAPABLE] =
|
||||||
|
{
|
||||||
|
.name = "vrr_capable",
|
||||||
|
.type = DRM_MODE_PROP_RANGE,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
.dpms_enum = {
|
.dpms_enum = {
|
||||||
[META_KMS_CONNECTOR_DPMS_ON] =
|
[META_KMS_CONNECTOR_DPMS_ON] =
|
||||||
|
@ -83,6 +83,8 @@ typedef struct _MetaKmsConnectorState
|
|||||||
struct {
|
struct {
|
||||||
gboolean supported;
|
gboolean supported;
|
||||||
} underscan;
|
} underscan;
|
||||||
|
|
||||||
|
gboolean vrr_capable;
|
||||||
} MetaKmsConnectorState;
|
} MetaKmsConnectorState;
|
||||||
|
|
||||||
META_EXPORT_TEST
|
META_EXPORT_TEST
|
||||||
|
Loading…
Reference in New Issue
Block a user