From 0096bf87b840b778f208f172922fdc8994ffa6dc Mon Sep 17 00:00:00 2001 From: Devin Bayer Date: Sat, 10 Jul 2021 20:52:29 +0200 Subject: [PATCH] set "Broadcast RGB" = "Full" for all connections --- backend/drm/atomic.c | 9 +++++++++ backend/drm/properties.c | 1 + include/backend/drm/properties.h | 1 + 3 files changed, 11 insertions(+) diff --git a/backend/drm/atomic.c b/backend/drm/atomic.c index 35dca7d4d..0942c3925 100644 --- a/backend/drm/atomic.c +++ b/backend/drm/atomic.c @@ -7,6 +7,11 @@ #include "backend/drm/iface.h" #include "backend/drm/util.h" +// connection property "Broadcast RGB" = "Full" +#ifndef DRM_MODE_COLOR_RANGE_FULL +#define DRM_MODE_COLOR_RANGE_FULL 1 +#endif + struct atomic { drmModeAtomicReq *req; bool failed; @@ -220,6 +225,10 @@ static bool atomic_crtc_commit(struct wlr_drm_connector *conn, struct atomic atom; atomic_begin(&atom); + if (conn->props.broadcast_rgb) { + atomic_add(&atom, conn->id, conn->props.broadcast_rgb, + DRM_MODE_COLOR_RANGE_FULL); + } atomic_add(&atom, conn->id, conn->props.crtc_id, active ? crtc->id : 0); if (modeset && active && conn->props.link_status != 0) { atomic_add(&atom, conn->id, conn->props.link_status, diff --git a/backend/drm/properties.c b/backend/drm/properties.c index 5581a130b..a9f3135ba 100644 --- a/backend/drm/properties.c +++ b/backend/drm/properties.c @@ -20,6 +20,7 @@ struct prop_info { static const struct prop_info connector_info[] = { #define INDEX(name) (offsetof(union wlr_drm_connector_props, name) / sizeof(uint32_t)) + { "Broadcast RGB", INDEX(broadcast_rgb) }, { "CRTC_ID", INDEX(crtc_id) }, { "DPMS", INDEX(dpms) }, { "EDID", INDEX(edid) }, diff --git a/include/backend/drm/properties.h b/include/backend/drm/properties.h index 9e1fe0b6e..16af69849 100644 --- a/include/backend/drm/properties.h +++ b/include/backend/drm/properties.h @@ -17,6 +17,7 @@ union wlr_drm_connector_props { uint32_t link_status; // not guaranteed to exist uint32_t path; uint32_t vrr_capable; // not guaranteed to exist + uint32_t broadcast_rgb; // not guaranteed to exist uint32_t subconnector; // not guaranteed to exist // atomic-modesetting only