From: "Nautiyal, Ankit K" <ankit.k.nautiyal@intel.com>
To: <imre.deak@intel.com>
Cc: <intel-gfx@lists.freedesktop.org>,
<intel-xe@lists.freedesktop.org>, <suraj.kandpal@intel.com>,
<jani.nikula@linux.intel.com>
Subject: Re: [PATCH 5/7] drm/i915/dp: Refactor pipe_bpp limits with dsc
Date: Fri, 15 Nov 2024 13:43:32 +0530 [thread overview]
Message-ID: <712c03fe-90c9-4a76-a3bf-c4402f8ea6fb@intel.com> (raw)
In-Reply-To: <ZxEA9KDEWys913p5@ideak-desk.fi.intel.com>
On 10/17/2024 5:50 PM, Imre Deak wrote:
> On Thu, Oct 03, 2024 at 04:13:41PM +0530, Ankit Nautiyal wrote:
>> With DSC there are additional limits for pipe_bpp. Currently these are
>> scattered in different places.
>> Instead set the limits->pipe.max/min_bpp in one place and use them
>> wherever required.
>>
>> Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
>> ---
>> drivers/gpu/drm/i915/display/intel_dp.c | 43 ++++++++++---------------
>> 1 file changed, 17 insertions(+), 26 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
>> index 46f3b680afe9..55ee438a4fec 100644
>> --- a/drivers/gpu/drm/i915/display/intel_dp.c
>> +++ b/drivers/gpu/drm/i915/display/intel_dp.c
>> @@ -2166,21 +2166,11 @@ int intel_dp_dsc_min_src_input_bpc(struct intel_display *display)
>> }
>>
>> static
>> -bool is_dsc_pipe_bpp_sufficient(struct drm_i915_private *i915,
>> - struct link_config_limits *limits,
>> +bool is_dsc_pipe_bpp_sufficient(struct link_config_limits *limits,
>> int pipe_bpp)
>> {
>> - struct intel_display *display = to_intel_display(&i915->drm);
>> - int dsc_max_bpc, dsc_min_bpc, dsc_max_pipe_bpp, dsc_min_pipe_bpp;
>> -
>> - dsc_max_bpc = intel_dp_dsc_max_src_input_bpc(display);
>> - dsc_min_bpc = intel_dp_dsc_min_src_input_bpc(display);
>> -
>> - dsc_max_pipe_bpp = min(dsc_max_bpc * 3, limits->pipe.max_bpp);
>> - dsc_min_pipe_bpp = max(dsc_min_bpc * 3, limits->pipe.min_bpp);
>> -
>> - return pipe_bpp >= dsc_min_pipe_bpp &&
>> - pipe_bpp <= dsc_max_pipe_bpp;
>> + return pipe_bpp >= limits->pipe.min_bpp &&
>> + pipe_bpp <= limits->pipe.max_bpp;
>> }
>>
>> static
>> @@ -2195,7 +2185,7 @@ int intel_dp_force_dsc_pipe_bpp(struct intel_dp *intel_dp,
>>
>> forced_bpp = intel_dp->force_dsc_bpc * 3;
>>
>> - if (is_dsc_pipe_bpp_sufficient(i915, limits, forced_bpp)) {
>> + if (is_dsc_pipe_bpp_sufficient(limits, forced_bpp)) {
>> drm_dbg_kms(&i915->drm, "Input DSC BPC forced to %d\n", intel_dp->force_dsc_bpc);
>> return forced_bpp;
>> }
>> @@ -2212,11 +2202,10 @@ static int intel_dp_dsc_compute_pipe_bpp(struct intel_dp *intel_dp,
>> struct link_config_limits *limits,
>> int timeslots)
>> {
>> - struct intel_display *display = to_intel_display(intel_dp);
>> const struct intel_connector *connector =
>> to_intel_connector(conn_state->connector);
>> - int dsc_max_bpc, dsc_max_bpp;
>> - int dsc_min_bpc, dsc_min_bpp;
>> + int dsc_max_bpp;
>> + int dsc_min_bpp;
>> u8 dsc_bpc[3] = {};
>> int forced_bpp, pipe_bpp;
>> int num_bpc, i, ret;
>> @@ -2232,14 +2221,8 @@ static int intel_dp_dsc_compute_pipe_bpp(struct intel_dp *intel_dp,
>> }
>> }
>>
>> - dsc_max_bpc = intel_dp_dsc_max_src_input_bpc(display);
>> - if (!dsc_max_bpc)
>> - return -EINVAL;
>> -
>> - dsc_max_bpp = min(dsc_max_bpc * 3, limits->pipe.max_bpp);
>> -
>> - dsc_min_bpc = intel_dp_dsc_min_src_input_bpc(display);
>> - dsc_min_bpp = max(dsc_min_bpc * 3, limits->pipe.min_bpp);
>> + dsc_max_bpp = limits->pipe.max_bpp;
>> + dsc_min_bpp = limits->pipe.min_bpp;
>>
>> /*
>> * Get the maximum DSC bpc that will be supported by any valid
>> @@ -2284,7 +2267,7 @@ static int intel_edp_dsc_compute_pipe_bpp(struct intel_dp *intel_dp,
>>
>> /* For eDP use max bpp that can be supported with DSC. */
>> pipe_bpp = intel_dp_dsc_compute_max_bpp(connector, max_bpc);
>> - if (!is_dsc_pipe_bpp_sufficient(i915, limits, pipe_bpp)) {
>> + if (!is_dsc_pipe_bpp_sufficient(limits, pipe_bpp)) {
>> drm_dbg_kms(&i915->drm,
>> "Computed BPC is not in DSC BPC limits\n");
>> return -EINVAL;
>> @@ -2502,6 +2485,14 @@ intel_dp_compute_config_limits(struct intel_dp *intel_dp,
>> limits->pipe.min_bpp = intel_dp_min_bpp(crtc_state->output_format);
>> limits->pipe.max_bpp = intel_dp_max_bpp(intel_dp, crtc_state,
>> respect_downstream_limits);
>> + if (dsc) {
>> + struct intel_display *display = to_intel_display(intel_dp);
>> + int dsc_min_bpc = intel_dp_dsc_min_src_input_bpc(display);
>> + int dsc_max_bpc = intel_dp_dsc_max_src_input_bpc(display);
>> +
>> + limits->pipe.max_bpp = min(limits->pipe.max_bpp, dsc_max_bpc * 3);
>> + limits->pipe.min_bpp = max(limits->pipe.min_bpp, dsc_min_bpc * 3);
>> + }
> Then intel_dp_mst_compute_config_limits() would also need to do the
> same.
The function mst_stream_compute_config_limits() is calling this
function, so that should be covered.
Regards,
Ankit
>
>>
>> if (intel_dp->use_max_params) {
>> /*
>> --
>> 2.45.2
>>
next prev parent reply other threads:[~2024-11-15 8:13 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-10-03 10:43 [PATCH 0/7] DP DSC min/max src bpc fixes Ankit Nautiyal
2024-10-03 10:43 ` [PATCH 1/7] drm/i915/dp: Use HAS_DSC macro in intel_dp_dsc_max_src_input_bpc Ankit Nautiyal
2024-10-03 11:04 ` Kandpal, Suraj
2024-10-17 12:13 ` Imre Deak
2024-11-15 8:10 ` Nautiyal, Ankit K
2024-10-03 10:43 ` [PATCH 2/7] drm/i915/dp: Return int from dsc_max/min_src_input_bpc helpers Ankit Nautiyal
2024-10-03 10:43 ` [PATCH 3/7] drm/i915/dp_mst: Use helpers to get dsc min/max input bpc Ankit Nautiyal
2024-10-03 10:43 ` [PATCH 4/7] drm/i915/dp: Drop max_requested_bpc for dsc pipe_min/max bpp Ankit Nautiyal
2024-10-13 15:35 ` Kandpal, Suraj
2024-10-03 10:43 ` [PATCH 5/7] drm/i915/dp: Refactor pipe_bpp limits with dsc Ankit Nautiyal
2024-10-13 15:37 ` Kandpal, Suraj
2024-10-17 12:20 ` Imre Deak
2024-11-15 8:13 ` Nautiyal, Ankit K [this message]
2024-11-15 8:25 ` Nautiyal, Ankit K
2024-10-03 10:43 ` [PATCH 6/7] drm/i915/dp: Use clamp for pipe_bpp limits with DSC Ankit Nautiyal
2024-10-13 15:39 ` Kandpal, Suraj
2024-10-03 10:43 ` [PATCH 7/7] drm/i915/dp: Set the DSC link limits intel_dp_compute_config_link_bpp_limits Ankit Nautiyal
2024-10-13 15:46 ` Kandpal, Suraj
2024-10-15 6:15 ` Kandpal, Suraj
2024-10-17 12:42 ` Imre Deak
2024-11-15 8:28 ` Nautiyal, Ankit K
2024-10-03 10:49 ` ✓ CI.Patch_applied: success for DP DSC min/max src bpc fixes Patchwork
2024-10-03 10:49 ` ✓ CI.checkpatch: " Patchwork
2024-10-03 10:50 ` ✓ CI.KUnit: " Patchwork
2024-10-03 11:03 ` ✓ CI.Build: " Patchwork
2024-10-03 11:05 ` ✓ CI.Hooks: " Patchwork
2024-10-03 11:07 ` ✗ CI.checksparse: warning " Patchwork
2024-10-03 11:19 ` ✗ Fi.CI.CHECKPATCH: warning for DP DSC min/max src bpc fixes (rev8) Patchwork
2024-10-03 11:27 ` ✓ Fi.CI.BAT: success " Patchwork
2024-10-03 11:31 ` ✓ CI.BAT: success for DP DSC min/max src bpc fixes Patchwork
2024-10-03 12:30 ` ✗ CI.FULL: failure " Patchwork
2024-10-07 21:17 ` ✗ Fi.CI.IGT: failure for DP DSC min/max src bpc fixes (rev8) 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=712c03fe-90c9-4a76-a3bf-c4402f8ea6fb@intel.com \
--to=ankit.k.nautiyal@intel.com \
--cc=imre.deak@intel.com \
--cc=intel-gfx@lists.freedesktop.org \
--cc=intel-xe@lists.freedesktop.org \
--cc=jani.nikula@linux.intel.com \
--cc=suraj.kandpal@intel.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.