diff --git a/libweston/backend-drm/drm-kms-enums.h b/libweston/backend-drm/drm-kms-enums.h index 955a3ae15..436d28d82 100644 --- a/libweston/backend-drm/drm-kms-enums.h +++ b/libweston/backend-drm/drm-kms-enums.h @@ -124,6 +124,7 @@ enum wdrm_connector_property { WDRM_CONNECTOR_CONTENT_TYPE, WDRM_CONNECTOR_COLORSPACE, WDRM_CONNECTOR_VRR_CAPABLE, + WDRM_CONNECTOR_LINK_BPC, WDRM_CONNECTOR__COUNT }; diff --git a/libweston/backend-drm/drm.c b/libweston/backend-drm/drm.c index 2fe541718..3c1486e1a 100644 --- a/libweston/backend-drm/drm.c +++ b/libweston/backend-drm/drm.c @@ -3792,6 +3792,19 @@ drm_connector_find_property_by_id(struct drm_connector *connector, return prop; } +static void +weston_head_verify_bpc_status(struct drm_head *head) +{ + unsigned int link_bpc; + + link_bpc = drm_property_get_value(&head->connector.props[WDRM_CONNECTOR_LINK_BPC], + head->connector.props_drm, 0); + + if (head->inherited_max_bpc != link_bpc) + weston_log("WARNING: max bpc was set to %u but current link bpc " + "set to %u\n", head->inherited_max_bpc, link_bpc); +} + static void drm_backend_update_conn_props(struct drm_backend *b, struct drm_device *device, @@ -3819,6 +3832,9 @@ drm_backend_update_conn_props(struct drm_backend *b, weston_head_set_content_protection_status(&head->base, drm_head_get_current_protection(head)); } + + if (conn_prop == WDRM_CONNECTOR_LINK_BPC) + weston_head_verify_bpc_status(head); } static int diff --git a/libweston/backend-drm/kms.c b/libweston/backend-drm/kms.c index 40eef7ceb..c8258f8b1 100644 --- a/libweston/backend-drm/kms.c +++ b/libweston/backend-drm/kms.c @@ -252,6 +252,7 @@ const struct drm_property_info connector_props[] = { [WDRM_CONNECTOR_VRR_CAPABLE] = { .name = "vrr_capable", }, + [WDRM_CONNECTOR_LINK_BPC] = { .name = "link bpc", }, }; const struct drm_property_info crtc_props[] = {