From 4374e685d46122ac59ccdd201c3be785e7f3558d Mon Sep 17 00:00:00 2001 From: Yaroslav Bolyukin Date: Sun, 30 Oct 2022 19:04:26 +0100 Subject: [PATCH 2/2] drm/amd: use fixed dsc bits-per-pixel from edid VESA vendor header from DisplayID spec may contain fixed bit per pixel rate, it should be respected by drm driver Signed-off-by: Yaroslav Bolyukin Signed-off-by: Lach --- drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c index ef026143dc1c..d068c6db91ce 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c @@ -6430,6 +6430,11 @@ static void fill_stream_properties_from_drm_display_mode( stream->output_color_space = get_output_color_space(timing_out, connector_state); stream->content_type = get_output_content_type(connector_state); + + /* DisplayID Type VII pass-through timings. */ + if (mode_in->dsc_passthrough_timings_support && info->dp_dsc_bpp != 0) { + stream->timing.dsc_fixed_bits_per_pixel_x16 = info->dp_dsc_bpp; + } } static void fill_audio_info(struct audio_info *audio_info, @@ -6976,6 +6981,13 @@ create_stream_for_sink(struct drm_connector *connector, &mode, preferred_mode, scale); preferred_refresh = drm_mode_vrefresh(preferred_mode); + + /* + * HACK: In case of multiple supported modes, we should look at the matching mode to decide this flag. + * But what is matching mode, how should it be decided? + * Assuming that only preferred mode would have this flag. + */ + mode.dsc_passthrough_timings_support = preferred_mode->dsc_passthrough_timings_support; } } -- 2.51.0