From: Jani Nikula <jani.nikula@linux.intel.com>
To: Ankit Nautiyal <ankit.k.nautiyal@intel.com>,
intel-gfx@lists.freedesktop.org
Cc: intel-xe@lists.freedesktop.org, suraj.kandpal@intel.com,
imre.deak@intel.com
Subject: Re: [PATCH 01/14] drm/i915/dp: Refactor FEC support check in intel_dp_supports_dsc
Date: Tue, 17 Dec 2024 12:43:39 +0200 [thread overview]
Message-ID: <874j32si78.fsf@intel.com> (raw)
In-Reply-To: <20241217093244.3938132-2-ankit.k.nautiyal@intel.com>
On Tue, 17 Dec 2024, Ankit Nautiyal <ankit.k.nautiyal@intel.com> wrote:
> Forward Error Correction is required for DP if we are using DSC but
> is optional for eDP.
>
> Currently the helper intel_dp_supports_dsc checks if fec_enable is set for
> DP or not. The helper is called after fec_enable is set in crtc_state.
>
> Instead of this a better approach would be to:
> first, call intel_dp_supports_dsc to check for DSC support
> (along with FEC requirement for DP) and then set fec_enable for DP
> (if not already set) in crtc_state.
>
> To achieve this, remove the check for fec_enable in the helper and instead
> check for FEC support for DP. With this change the helper
> intel_dp_supports_dsc can be called earlier and return early if DSC is
> not supported. The structure intel_dp is added to the helper to get the
> FEC support for DP.
>
> v2: Pass intel_dp to adjust_limits_for_dsc_hblank_expansion_quirk
> instead of deriving it from connector. (Jani)
>
> Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
> Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_dp.c | 8 +++++---
> drivers/gpu/drm/i915/display/intel_dp.h | 3 ++-
> drivers/gpu/drm/i915/display/intel_dp_mst.c | 10 ++++++----
> 3 files changed, 13 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
> index fba3af338280..908b9887f89b 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp.c
> @@ -1627,13 +1627,15 @@ bool intel_dp_supports_fec(struct intel_dp *intel_dp,
> drm_dp_sink_supports_fec(connector->dp.fec_capability);
> }
>
> -bool intel_dp_supports_dsc(const struct intel_connector *connector,
> +bool intel_dp_supports_dsc(struct intel_dp *intel_dp,
> + const struct intel_connector *connector,
> const struct intel_crtc_state *crtc_state)
> {
> if (!intel_dp_has_dsc(connector))
> return false;
>
> - if (intel_crtc_has_type(crtc_state, INTEL_OUTPUT_DP) && !crtc_state->fec_enable)
> + if (intel_crtc_has_type(crtc_state, INTEL_OUTPUT_DP) &&
> + !intel_dp_supports_fec(intel_dp, connector, crtc_state))
> return false;
Unrelated side note, I wonder if we should start using
intel_dp_link_foo() naming for things that imply intel_dp_source_foo()
&& intel_dp_sink_foo(). I find myself too often double checking if
things like intel_dp_supports_something() actually means the source or
the combination of source and sink (i.e. link).
Anyway,
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
>
> return intel_dsc_source_support(crtc_state);
> @@ -2373,7 +2375,7 @@ int intel_dp_dsc_compute_config(struct intel_dp *intel_dp,
> intel_dp_supports_fec(intel_dp, connector, pipe_config) &&
> !intel_dp_is_uhbr(pipe_config));
>
> - if (!intel_dp_supports_dsc(connector, pipe_config))
> + if (!intel_dp_supports_dsc(intel_dp, connector, pipe_config))
> return -EINVAL;
>
> if (!intel_dp_dsc_supports_format(connector, pipe_config->output_format))
> diff --git a/drivers/gpu/drm/i915/display/intel_dp.h b/drivers/gpu/drm/i915/display/intel_dp.h
> index a1fd21c3b792..03dde9756bdc 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp.h
> +++ b/drivers/gpu/drm/i915/display/intel_dp.h
> @@ -170,7 +170,8 @@ bool intel_dp_supports_fec(struct intel_dp *intel_dp,
> const struct intel_connector *connector,
> const struct intel_crtc_state *pipe_config);
>
> -bool intel_dp_supports_dsc(const struct intel_connector *connector,
> +bool intel_dp_supports_dsc(struct intel_dp *intel_dp,
> + const struct intel_connector *connector,
> const struct intel_crtc_state *crtc_state);
>
> u32 intel_dp_dsc_nearest_valid_bpp(struct intel_display *display, u32 bpp, u32 pipe_bpp);
> diff --git a/drivers/gpu/drm/i915/display/intel_dp_mst.c b/drivers/gpu/drm/i915/display/intel_dp_mst.c
> index 326ff20a5a49..4217350eefb0 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp_mst.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c
> @@ -519,7 +519,8 @@ hblank_expansion_quirk_needs_dsc(const struct intel_connector *connector,
> }
>
> static bool
> -adjust_limits_for_dsc_hblank_expansion_quirk(const struct intel_connector *connector,
> +adjust_limits_for_dsc_hblank_expansion_quirk(struct intel_dp *intel_dp,
> + const struct intel_connector *connector,
> const struct intel_crtc_state *crtc_state,
> struct link_config_limits *limits,
> bool dsc)
> @@ -532,7 +533,7 @@ adjust_limits_for_dsc_hblank_expansion_quirk(const struct intel_connector *conne
> return true;
>
> if (!dsc) {
> - if (intel_dp_supports_dsc(connector, crtc_state)) {
> + if (intel_dp_supports_dsc(intel_dp, connector, crtc_state)) {
> drm_dbg_kms(display->drm,
> "[CRTC:%d:%s][CONNECTOR:%d:%s] DSC needed by hblank expansion quirk\n",
> crtc->base.base.id, crtc->base.name,
> @@ -588,7 +589,8 @@ mst_stream_compute_config_limits(struct intel_dp *intel_dp,
> limits))
> return false;
>
> - return adjust_limits_for_dsc_hblank_expansion_quirk(connector,
> + return adjust_limits_for_dsc_hblank_expansion_quirk(intel_dp,
> + connector,
> crtc_state,
> limits,
> dsc);
> @@ -651,7 +653,7 @@ static int mst_stream_compute_config(struct intel_encoder *encoder,
> str_yes_no(ret), str_yes_no(joiner_needs_dsc),
> str_yes_no(intel_dp->force_dsc_en));
>
> - if (!intel_dp_supports_dsc(connector, pipe_config))
> + if (!intel_dp_supports_dsc(intel_dp, connector, pipe_config))
> return -EINVAL;
>
> if (!mst_stream_compute_config_limits(intel_dp, connector,
--
Jani Nikula, Intel
next prev parent reply other threads:[~2024-12-17 10:43 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-12-17 9:32 [PATCH 00/14] DP DSC min/max src bpc fixes Ankit Nautiyal
2024-12-17 9:32 ` [PATCH 01/14] drm/i915/dp: Refactor FEC support check in intel_dp_supports_dsc Ankit Nautiyal
2024-12-17 10:43 ` Jani Nikula [this message]
2024-12-17 9:32 ` [PATCH 02/14] drm/i915/dp: Return early if DSC not supported Ankit Nautiyal
2024-12-17 10:55 ` Jani Nikula
2024-12-17 11:02 ` Jani Nikula
2024-12-24 10:08 ` Nautiyal, Ankit K
2024-12-17 9:32 ` [PATCH 03/14] drm/i915/dp: Separate out helper for compute fec_enable Ankit Nautiyal
2024-12-17 10:57 ` Jani Nikula
2024-12-17 9:32 ` [PATCH 04/14] drm/i915/dp: Drop check for FEC in intel_dp_fec_compute_config Ankit Nautiyal
2024-12-17 10:57 ` Jani Nikula
2024-12-17 9:32 ` [PATCH 05/14] drm/i915/dp: Remove HAS_DSC macro for intel_dp_dsc_max_src_input_bpc Ankit Nautiyal
2024-12-17 9:32 ` [PATCH 06/14] drm/i915/dp: Return int from dsc_max/min_src_input_bpc helpers Ankit Nautiyal
2024-12-17 9:32 ` [PATCH 07/14] drm/i915/dp_mst: Use helpers to get dsc min/max input bpc Ankit Nautiyal
2024-12-17 9:32 ` [PATCH 08/14] drm/i915/dp: Drop max_requested_bpc for dsc pipe_min/max bpp Ankit Nautiyal
2024-12-17 9:32 ` [PATCH 09/14] drm/i915/dp: Refactor pipe_bpp limits with dsc Ankit Nautiyal
2024-12-17 9:32 ` [PATCH 10/14] drm/i915/dp_mst: Use pipe_bpp->limits.{max/min}_bpp for dsc Ankit Nautiyal
2024-12-18 4:06 ` Kandpal, Suraj
2024-12-17 9:32 ` [PATCH 11/14] drm/i915/dp: Use clamp for pipe_bpp limits with DSC Ankit Nautiyal
2024-12-17 9:32 ` [PATCH 12/14] drm/i915/dp: Make dsc helpers accept const crtc_state pointers Ankit Nautiyal
2024-12-17 9:32 ` [PATCH 13/14] drm/i915/dp: Set the DSC link limits in intel_dp_compute_config_link_bpp_limits Ankit Nautiyal
2024-12-17 9:32 ` [PATCH 14/14] drm/i915/dp_mst: Use link.{min/max}_bpp_x16 Ankit Nautiyal
2024-12-18 4:06 ` Kandpal, Suraj
2024-12-17 12:28 ` ✗ Fi.CI.SPARSE: warning for DP DSC min/max src bpc fixes (rev11) Patchwork
2024-12-17 12:41 ` ✓ i915.CI.BAT: success " Patchwork
2024-12-17 13:08 ` ✓ CI.Patch_applied: success for DP DSC min/max src bpc fixes (rev4) Patchwork
2024-12-17 13:09 ` ✓ CI.checkpatch: " Patchwork
2024-12-17 13:10 ` ✓ CI.KUnit: " Patchwork
2024-12-17 13:29 ` ✓ CI.Build: " Patchwork
2024-12-17 13:31 ` ✓ CI.Hooks: " Patchwork
2024-12-17 13:33 ` ✗ CI.checksparse: warning " Patchwork
2024-12-17 19:19 ` ✗ i915.CI.Full: failure for DP DSC min/max src bpc fixes (rev11) Patchwork
2024-12-18 5:25 ` ✓ CI.BAT: success for DP DSC min/max src bpc fixes (rev4) Patchwork
2024-12-18 16:58 ` ✓ i915.CI.Full: success for DP DSC min/max src bpc fixes (rev11) Patchwork
2024-12-24 10:11 ` [PATCH 00/14] DP DSC min/max src bpc fixes Nautiyal, Ankit K
-- strict thread matches above, loose matches on Subject: below --
2024-12-04 9:26 Ankit Nautiyal
2024-12-04 9:26 ` [PATCH 01/14] drm/i915/dp: Refactor FEC support check in intel_dp_supports_dsc Ankit Nautiyal
2024-12-11 4:47 ` Kandpal, Suraj
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=874j32si78.fsf@intel.com \
--to=jani.nikula@linux.intel.com \
--cc=ankit.k.nautiyal@intel.com \
--cc=imre.deak@intel.com \
--cc=intel-gfx@lists.freedesktop.org \
--cc=intel-xe@lists.freedesktop.org \
--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.