From: Jani Nikula <jani.nikula@intel.com>
To: imre.deak@intel.com, intel-gfx@lists.freedesktop.org,
Thomas Zimmermann <tzimmermann@suse.de>,
Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
Maxime Ripard <mripard@kernel.org>
Cc: dri-devel@lists.freedesktop.org, Lyude Paul <lyude@redhat.com>,
Ankit K Nautiyal <ankit.k.nautiyal@intel.com>
Subject: Re: [PATCH 01/11] drm/i915/dp: Fix DSC line buffer depth programming
Date: Wed, 03 Apr 2024 15:10:34 +0300 [thread overview]
Message-ID: <87v84yd4ud.fsf@intel.com> (raw)
In-Reply-To: <ZgVymQ8a9iALSuEi@ideak-desk.fi.intel.com>
On Thu, 28 Mar 2024, Imre Deak <imre.deak@intel.com> wrote:
> On Wed, Mar 20, 2024 at 10:11:41PM +0200, Imre Deak wrote:
>> Fix the calculation of the DSC line buffer depth. This is limited both
>> by the source's and sink's maximum line buffer depth, but the former one
>> was not taken into account. On all Intel platform's the source's maximum
>> buffer depth is 13, so the overall limit is simply the minimum of the
>> source/sink's limit, regardless of the DSC version.
>>
>> This leaves the DSI DSC line buffer depth calculation as-is, trusting
>> VBT.
>>
>> On DSC version 1.2 for sinks reporting a maximum line buffer depth of 16
>> the line buffer depth was incorrectly programmed as 0, leading to a
>> corruption in color gradients / lines on the decompressed screen image.
>>
>> Cc: dri-devel@lists.freedesktop.org
>> Signed-off-by: Imre Deak <imre.deak@intel.com>
>
> Hi Maarten, Thomas, Maxime,
>
> are you ok to merge the DRM DP-DSC/MST changes in patches 1, 7-9, 11 via
> drm-intel-next?
Ping? Ack for merging via drm-intel-next, please?
BR,
Jani.
>
> --Imre
>
>> ---
>> drivers/gpu/drm/i915/display/intel_dp.c | 16 ++++++----------
>> include/drm/display/drm_dsc.h | 3 ---
>> 2 files changed, 6 insertions(+), 13 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
>> index af7ca00e9bc0a..dbe65651bf277 100644
>> --- a/drivers/gpu/drm/i915/display/intel_dp.c
>> +++ b/drivers/gpu/drm/i915/display/intel_dp.c
>> @@ -89,6 +89,9 @@
>> #define DP_DSC_MAX_ENC_THROUGHPUT_0 340000
>> #define DP_DSC_MAX_ENC_THROUGHPUT_1 400000
>>
>> +/* Max DSC line buffer depth supported by HW. */
>> +#define INTEL_DP_DSC_MAX_LINE_BUF_DEPTH 13
>> +
>> /* DP DSC FEC Overhead factor in ppm = 1/(0.972261) = 1.028530 */
>> #define DP_DSC_FEC_OVERHEAD_FACTOR 1028530
>>
>> @@ -1703,7 +1706,6 @@ static int intel_dp_dsc_compute_params(const struct intel_connector *connector,
>> {
>> struct drm_i915_private *i915 = to_i915(connector->base.dev);
>> struct drm_dsc_config *vdsc_cfg = &crtc_state->dsc.config;
>> - u8 line_buf_depth;
>> int ret;
>>
>> /*
>> @@ -1732,20 +1734,14 @@ static int intel_dp_dsc_compute_params(const struct intel_connector *connector,
>> connector->dp.dsc_dpcd[DP_DSC_DEC_COLOR_FORMAT_CAP - DP_DSC_SUPPORT] &
>> DP_DSC_RGB;
>>
>> - line_buf_depth = drm_dp_dsc_sink_line_buf_depth(connector->dp.dsc_dpcd);
>> - if (!line_buf_depth) {
>> + vdsc_cfg->line_buf_depth = min(INTEL_DP_DSC_MAX_LINE_BUF_DEPTH,
>> + drm_dp_dsc_sink_line_buf_depth(connector->dp.dsc_dpcd));
>> + if (!vdsc_cfg->line_buf_depth) {
>> drm_dbg_kms(&i915->drm,
>> "DSC Sink Line Buffer Depth invalid\n");
>> return -EINVAL;
>> }
>>
>> - if (vdsc_cfg->dsc_version_minor == 2)
>> - vdsc_cfg->line_buf_depth = (line_buf_depth == DSC_1_2_MAX_LINEBUF_DEPTH_BITS) ?
>> - DSC_1_2_MAX_LINEBUF_DEPTH_VAL : line_buf_depth;
>> - else
>> - vdsc_cfg->line_buf_depth = (line_buf_depth > DSC_1_1_MAX_LINEBUF_DEPTH_BITS) ?
>> - DSC_1_1_MAX_LINEBUF_DEPTH_BITS : line_buf_depth;
>> -
>> vdsc_cfg->block_pred_enable =
>> connector->dp.dsc_dpcd[DP_DSC_BLK_PREDICTION_SUPPORT - DP_DSC_SUPPORT] &
>> DP_DSC_BLK_PREDICTION_IS_SUPPORTED;
>> diff --git a/include/drm/display/drm_dsc.h b/include/drm/display/drm_dsc.h
>> index bc90273d06a62..bbbe7438473d3 100644
>> --- a/include/drm/display/drm_dsc.h
>> +++ b/include/drm/display/drm_dsc.h
>> @@ -40,9 +40,6 @@
>> #define DSC_PPS_RC_RANGE_MINQP_SHIFT 11
>> #define DSC_PPS_RC_RANGE_MAXQP_SHIFT 6
>> #define DSC_PPS_NATIVE_420_SHIFT 1
>> -#define DSC_1_2_MAX_LINEBUF_DEPTH_BITS 16
>> -#define DSC_1_2_MAX_LINEBUF_DEPTH_VAL 0
>> -#define DSC_1_1_MAX_LINEBUF_DEPTH_BITS 13
>>
>> /**
>> * struct drm_dsc_rc_range_parameters - DSC Rate Control range parameters
>> --
>> 2.43.3
>>
--
Jani Nikula, Intel
next prev parent reply other threads:[~2024-04-03 12:10 UTC|newest]
Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-03-20 20:11 [PATCH 00/11] drm/i915/dp: Few MTL/DSC and a UHBR monitor fix Imre Deak
2024-03-20 20:11 ` [PATCH 01/11] drm/i915/dp: Fix DSC line buffer depth programming Imre Deak
2024-03-26 10:00 ` Nautiyal, Ankit K
2024-03-26 19:50 ` Manasi Navare
2024-03-27 14:46 ` Imre Deak
2024-03-28 13:37 ` Imre Deak
2024-04-03 12:10 ` Jani Nikula [this message]
2024-03-20 20:11 ` [PATCH 02/11] drm/i915/dp_mst: Fix symbol clock when calculating the DSC DPT bpp limit Imre Deak
2024-03-26 10:01 ` Nautiyal, Ankit K
2024-03-26 20:04 ` Manasi Navare
2024-03-26 20:07 ` Manasi Navare
2024-03-20 20:11 ` [PATCH 03/11] drm/i915/dp_mst: Fix BW limit check when calculating DSC DPT bpp Imre Deak
2024-03-26 10:05 ` Nautiyal, Ankit K
2024-03-20 20:11 ` [PATCH 04/11] drm/i915/dp_mst: Account for channel coding efficiency in the DSC DPT bpp limit Imre Deak
2024-03-26 10:06 ` Nautiyal, Ankit K
2024-03-20 20:11 ` [PATCH 05/11] drm/i915/dp_mst: Account with the DSC DPT bpp limit on MTL Imre Deak
2024-03-26 10:17 ` Nautiyal, Ankit K
2024-03-26 10:21 ` Nautiyal, Ankit K
2024-03-26 12:11 ` Imre Deak
2024-03-26 12:59 ` Nautiyal, Ankit K
2024-03-29 18:39 ` Manasi Navare
2024-04-02 12:18 ` Imre Deak
2024-03-20 20:11 ` [PATCH 06/11] drm/i915/dp_mst: Sanitize calculating the DSC DPT bpp limit Imre Deak
2024-03-26 12:54 ` Nautiyal, Ankit K
2024-03-26 20:13 ` Manasi Navare
2024-03-27 14:50 ` Imre Deak
2024-03-20 20:11 ` [PATCH 07/11] drm/dp: Add drm_dp_uhbr_channel_coding_supported() Imre Deak
2024-03-26 12:53 ` Nautiyal, Ankit K
2024-03-26 20:14 ` Manasi Navare
2024-03-20 20:11 ` [PATCH 08/11] drm/dp_mst: Factor out drm_dp_mst_port_is_logical() Imre Deak
2024-03-26 12:52 ` Nautiyal, Ankit K
2024-03-20 20:11 ` [PATCH 09/11] drm/dp_mst: Add drm_dp_mst_aux_for_parent() Imre Deak
2024-03-27 9:00 ` Nautiyal, Ankit K
2024-03-27 14:25 ` Imre Deak
2024-03-28 3:27 ` Nautiyal, Ankit K
2024-03-20 20:11 ` [PATCH 10/11] drm/i915/dp_mst: Make HBLANK expansion quirk work for logical ports Imre Deak
2024-03-27 8:10 ` Nautiyal, Ankit K
2024-03-27 14:19 ` Imre Deak
2024-03-28 3:30 ` Nautiyal, Ankit K
2024-03-20 20:11 ` [PATCH 11/11] drm/i915/dp_mst: Enable HBLANK expansion quirk for UHBR rates Imre Deak
2024-03-27 8:54 ` Nautiyal, Ankit K
2024-03-20 23:51 ` [PATCH 00/11] drm/i915/dp: Few MTL/DSC and a UHBR monitor fix Almahallawy, Khaled
2024-03-21 1:39 ` ✗ Fi.CI.CHECKPATCH: warning for " Patchwork
2024-03-21 1:39 ` ✗ Fi.CI.SPARSE: " Patchwork
2024-03-21 1:54 ` ✓ Fi.CI.BAT: success " Patchwork
2024-03-21 12:39 ` ✗ Fi.CI.IGT: failure " Patchwork
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87v84yd4ud.fsf@intel.com \
--to=jani.nikula@intel.com \
--cc=ankit.k.nautiyal@intel.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=imre.deak@intel.com \
--cc=intel-gfx@lists.freedesktop.org \
--cc=lyude@redhat.com \
--cc=maarten.lankhorst@linux.intel.com \
--cc=mripard@kernel.org \
--cc=tzimmermann@suse.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).