From 861cdbc014cb8f57f2ed6a28c69c0c8a0968ccfe Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Thu, 31 Aug 2023 18:15:25 -0500 Subject: [PATCH] Set Colorspace connector property in RK backend --- src/video/rk.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/video/rk.c b/src/video/rk.c index 0edf25a..a1a9067 100644 --- a/src/video/rk.c +++ b/src/video/rk.c @@ -55,6 +55,14 @@ #define DRM_FORMAT_NV15 fourcc_code('N', 'V', '1', '5') #endif +// Values for "Colorspace" connector property +#ifndef DRM_MODE_COLORIMETRY_DEFAULT +#define DRM_MODE_COLORIMETRY_DEFAULT 0 +#endif +#ifndef DRM_MODE_COLORIMETRY_BT2020_RGB +#define DRM_MODE_COLORIMETRY_BT2020_RGB 9 +#endif + // HDR structs copied from linux include/linux/hdmi.h for older libdrm versions struct rk_hdr_metadata_infoframe { @@ -301,6 +309,7 @@ void *frame_thread(void *param) { // Set atomic properties on the connector set_atomic_property(drm_request, conn_id, conn_props, "allm_enable", 1); // HDMI ALLM (Game Mode) + set_atomic_property(drm_request, conn_id, conn_props, "Colorspace", last_hdr_state ? DRM_MODE_COLORIMETRY_BT2020_RGB : DRM_MODE_COLORIMETRY_DEFAULT); } else { // regular frame received @@ -591,6 +600,7 @@ void rk_cleanup() { drmModeAtomicSetCursor(drm_request, 0); set_atomic_property(drm_request, conn_id, conn_props, "HDR_OUTPUT_METADATA", 0); set_atomic_property(drm_request, conn_id, conn_props, "allm_enable", 0); + set_atomic_property(drm_request, conn_id, conn_props, "Colorspace", DRM_MODE_COLORIMETRY_DEFAULT); drmModeAtomicCommit(fd, drm_request, DRM_MODE_ATOMIC_ALLOW_MODESET, NULL); if (hdr_metadata_blob_id) {