aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Ser <contact@emersion.fr>2022-06-03 16:02:40 +0200
committerIsaac Freund <mail@isaacfreund.com>2022-06-07 13:21:21 +0000
commit1b27d537d13c25c622bf50b8b1670e5a40b944d1 (patch)
tree71fcab1f721933d7259255e4cececc4f3584ff3a
parentbd7b42eb9f182b3eef62a59c9da0ed9f2660440a (diff)
backend/drm: unconditionally set "content type" to graphics
CTA-861-G says that "graphics" is used to indicate non-analog (ie, digital) content. With that bit set, the sink should turn off analog reconstruction and other related filtering.
-rw-r--r--backend/drm/atomic.c4
-rw-r--r--backend/drm/properties.c1
-rw-r--r--include/backend/drm/properties.h1
3 files changed, 6 insertions, 0 deletions
diff --git a/backend/drm/atomic.c b/backend/drm/atomic.c
index 1d4f9df4..82ead96e 100644
--- a/backend/drm/atomic.c
+++ b/backend/drm/atomic.c
@@ -280,6 +280,10 @@ static bool atomic_crtc_commit(struct wlr_drm_connector *conn,
atomic_add(&atom, conn->id, conn->props.link_status,
DRM_MODE_LINK_STATUS_GOOD);
}
+ if (active && conn->props.content_type != 0) {
+ atomic_add(&atom, conn->id, conn->props.content_type,
+ DRM_MODE_CONTENT_TYPE_GRAPHICS);
+ }
atomic_add(&atom, crtc->id, crtc->props.mode_id, mode_id);
atomic_add(&atom, crtc->id, crtc->props.active, active);
if (active) {
diff --git a/backend/drm/properties.c b/backend/drm/properties.c
index f2696593..51fbc80a 100644
--- a/backend/drm/properties.c
+++ b/backend/drm/properties.c
@@ -24,6 +24,7 @@ static const struct prop_info connector_info[] = {
{ "DPMS", INDEX(dpms) },
{ "EDID", INDEX(edid) },
{ "PATH", INDEX(path) },
+ { "content type", INDEX(content_type) },
{ "link-status", INDEX(link_status) },
{ "non-desktop", INDEX(non_desktop) },
{ "panel orientation", INDEX(panel_orientation) },
diff --git a/include/backend/drm/properties.h b/include/backend/drm/properties.h
index 10c1ccd0..f6c6023a 100644
--- a/include/backend/drm/properties.h
+++ b/include/backend/drm/properties.h
@@ -20,6 +20,7 @@ union wlr_drm_connector_props {
uint32_t subconnector; // not guaranteed to exist
uint32_t non_desktop;
uint32_t panel_orientation; // not guaranteed to exist
+ uint32_t content_type; // not guaranteed to exist
// atomic-modesetting only