If the `prefer_sink_yuv420` flag is set via debugfs and the sink supports
YCbCr 4:2:0 output for the current mode, prefer YCbCr 4:2:0 over
the default RGB when computing the sink format.

This enables explicit testing and validation of 4:2:0 output handling
via the debugfs interface, particularly useful in IGT tests targeting
scaling and color.

Signed-off-by: Dibin Moolakadan Subrahmanian 
<dibin.moolakadan.subrahman...@intel.com>
---
 drivers/gpu/drm/i915/display/intel_dp.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/intel_dp.c 
b/drivers/gpu/drm/i915/display/intel_dp.c
index 625036c47bdf..8b593a6a0c7c 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -3055,6 +3055,15 @@ intel_dp_compute_output_format(struct intel_encoder 
*encoder,
                crtc_state->sink_format = intel_dp_sink_format(connector, 
adjusted_mode);
        }
 
+       /* Check if prefer_sink_yuv420 is enabled and sink supports it, then 
override RGB */
+       if (connector->prefer_sink_yuv420 &&
+           drm_mode_is_420_also(info, adjusted_mode) &&
+           connector->base.ycbcr_420_allowed) {
+               crtc_state->sink_format = INTEL_OUTPUT_FORMAT_YCBCR420;
+               drm_dbg_kms(display->drm, "prefer_sink_yuv420 enabled, selected 
format %d\n",
+                           crtc_state->sink_format);
+       }
+
        crtc_state->output_format = intel_dp_output_format(connector, 
crtc_state->sink_format);
 
        ret = intel_dp_compute_link_config(encoder, crtc_state, conn_state,
-- 
2.43.0

Reply via email to