Message ID | 20240911131349.933814-8-ankit.k.nautiyal@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Ultrajoiner basic functionality series | expand |
On Wed, Sep 11, 2024 at 06:43:37PM +0530, Ankit Nautiyal wrote: > In preparation of ultrajoiner, use number of joined pipes in the > intel_dp_joiner_needs_dsc helper, instead of joiner flag. > > Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com> > --- > drivers/gpu/drm/i915/display/intel_dp.c | 9 +++++---- > drivers/gpu/drm/i915/display/intel_dp.h | 3 ++- > drivers/gpu/drm/i915/display/intel_dp_mst.c | 5 +++-- > 3 files changed, 10 insertions(+), 7 deletions(-) > > diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c > index 65044f63d1f5..6c503b5968d2 100644 > --- a/drivers/gpu/drm/i915/display/intel_dp.c > +++ b/drivers/gpu/drm/i915/display/intel_dp.c > @@ -1412,7 +1412,7 @@ intel_dp_mode_valid(struct drm_connector *_connector, > dsc = dsc_max_compressed_bpp && dsc_slice_count; > } > > - if (intel_dp_joiner_needs_dsc(dev_priv, joiner) && !dsc) > + if (intel_dp_joiner_needs_dsc(dev_priv, num_joined_pipes) && !dsc) > return MODE_CLOCK_HIGH; > > if (mode_rate > max_rate && !dsc) > @@ -2520,14 +2520,15 @@ int intel_dp_config_required_rate(const struct intel_crtc_state *crtc_state) > return intel_dp_link_required(adjusted_mode->crtc_clock, bpp); > } > > -bool intel_dp_joiner_needs_dsc(struct drm_i915_private *i915, bool use_joiner) > +bool intel_dp_joiner_needs_dsc(struct drm_i915_private *i915, > + int num_joined_pipes) > { > /* > * Pipe joiner needs compression up to display 12 due to bandwidth > * limitation. DG2 onwards pipe joiner can be enabled without > * compression. > */ > - return DISPLAY_VER(i915) < 13 && use_joiner; > + return DISPLAY_VER(i915) < 13 && (num_joined_pipes == 2); Pointless parens. > } > > static int > @@ -2558,7 +2559,7 @@ intel_dp_compute_link_config(struct intel_encoder *encoder, > if (num_joined_pipes == 2) > pipe_config->joiner_pipes = GENMASK(crtc->pipe + 1, crtc->pipe); > > - joiner_needs_dsc = intel_dp_joiner_needs_dsc(i915, pipe_config->joiner_pipes); > + joiner_needs_dsc = intel_dp_joiner_needs_dsc(i915, num_joined_pipes); > > dsc_needed = joiner_needs_dsc || intel_dp->force_dsc_en || > !intel_dp_compute_config_limits(intel_dp, pipe_config, > diff --git a/drivers/gpu/drm/i915/display/intel_dp.h b/drivers/gpu/drm/i915/display/intel_dp.h > index bc9a82d82df2..cc08a309eb78 100644 > --- a/drivers/gpu/drm/i915/display/intel_dp.h > +++ b/drivers/gpu/drm/i915/display/intel_dp.h > @@ -123,7 +123,8 @@ int intel_dp_effective_data_rate(int pixel_clock, int bpp_x16, > int bw_overhead); > int intel_dp_max_link_data_rate(struct intel_dp *intel_dp, > int max_dprx_rate, int max_dprx_lanes); > -bool intel_dp_joiner_needs_dsc(struct drm_i915_private *i915, bool use_joiner); > +bool intel_dp_joiner_needs_dsc(struct drm_i915_private *i915, > + int num_joined_pipes); > bool intel_dp_has_joiner(struct intel_dp *intel_dp); > bool intel_dp_needs_vsc_sdp(const struct intel_crtc_state *crtc_state, > const struct drm_connector_state *conn_state); > diff --git a/drivers/gpu/drm/i915/display/intel_dp_mst.c b/drivers/gpu/drm/i915/display/intel_dp_mst.c > index 383b3e38df52..fb067749f3a0 100644 > --- a/drivers/gpu/drm/i915/display/intel_dp_mst.c > +++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c > @@ -588,7 +588,7 @@ static int intel_dp_mst_compute_config(struct intel_encoder *encoder, > pipe_config->output_format = INTEL_OUTPUT_FORMAT_RGB; > pipe_config->has_pch_encoder = false; > > - joiner_needs_dsc = intel_dp_joiner_needs_dsc(dev_priv, pipe_config->joiner_pipes); > + joiner_needs_dsc = intel_dp_joiner_needs_dsc(dev_priv, num_joined_pipes); > > dsc_needed = joiner_needs_dsc || intel_dp->force_dsc_en || > !intel_dp_mst_compute_config_limits(intel_dp, > @@ -1472,6 +1472,7 @@ intel_dp_mst_mode_valid_ctx(struct drm_connector *connector, > mode->hdisplay, target_clock); > if (num_joined_pipes == 2) { > joiner = true; > + num_joined_pipes = 2; > max_dotclk *= 2; > } > > @@ -1512,7 +1513,7 @@ intel_dp_mst_mode_valid_ctx(struct drm_connector *connector, > dsc = dsc_max_compressed_bpp && dsc_slice_count; > } > > - if (intel_dp_joiner_needs_dsc(dev_priv, joiner) && !dsc) { > + if (intel_dp_joiner_needs_dsc(dev_priv, num_joined_pipes) && !dsc) { > *status = MODE_CLOCK_HIGH; > return 0; > } > -- > 2.45.2
On 9/12/2024 1:47 AM, Ville Syrjälä wrote: > On Wed, Sep 11, 2024 at 06:43:37PM +0530, Ankit Nautiyal wrote: >> In preparation of ultrajoiner, use number of joined pipes in the >> intel_dp_joiner_needs_dsc helper, instead of joiner flag. >> >> Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com> >> --- >> drivers/gpu/drm/i915/display/intel_dp.c | 9 +++++---- >> drivers/gpu/drm/i915/display/intel_dp.h | 3 ++- >> drivers/gpu/drm/i915/display/intel_dp_mst.c | 5 +++-- >> 3 files changed, 10 insertions(+), 7 deletions(-) >> >> diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c >> index 65044f63d1f5..6c503b5968d2 100644 >> --- a/drivers/gpu/drm/i915/display/intel_dp.c >> +++ b/drivers/gpu/drm/i915/display/intel_dp.c >> @@ -1412,7 +1412,7 @@ intel_dp_mode_valid(struct drm_connector *_connector, >> dsc = dsc_max_compressed_bpp && dsc_slice_count; >> } >> >> - if (intel_dp_joiner_needs_dsc(dev_priv, joiner) && !dsc) >> + if (intel_dp_joiner_needs_dsc(dev_priv, num_joined_pipes) && !dsc) >> return MODE_CLOCK_HIGH; >> >> if (mode_rate > max_rate && !dsc) >> @@ -2520,14 +2520,15 @@ int intel_dp_config_required_rate(const struct intel_crtc_state *crtc_state) >> return intel_dp_link_required(adjusted_mode->crtc_clock, bpp); >> } >> >> -bool intel_dp_joiner_needs_dsc(struct drm_i915_private *i915, bool use_joiner) >> +bool intel_dp_joiner_needs_dsc(struct drm_i915_private *i915, >> + int num_joined_pipes) >> { >> /* >> * Pipe joiner needs compression up to display 12 due to bandwidth >> * limitation. DG2 onwards pipe joiner can be enabled without >> * compression. >> */ >> - return DISPLAY_VER(i915) < 13 && use_joiner; >> + return DISPLAY_VER(i915) < 13 && (num_joined_pipes == 2); > Pointless parens. Noted. Will remove these. Besides this, I am wondering if I should change the variable num_joined_pipes to num_pipes or num_pipes_used? So its values 1, 2, 4 make more sense? Regards, Ankit > >> } >> >> static int >> @@ -2558,7 +2559,7 @@ intel_dp_compute_link_config(struct intel_encoder *encoder, >> if (num_joined_pipes == 2) >> pipe_config->joiner_pipes = GENMASK(crtc->pipe + 1, crtc->pipe); >> >> - joiner_needs_dsc = intel_dp_joiner_needs_dsc(i915, pipe_config->joiner_pipes); >> + joiner_needs_dsc = intel_dp_joiner_needs_dsc(i915, num_joined_pipes); >> >> dsc_needed = joiner_needs_dsc || intel_dp->force_dsc_en || >> !intel_dp_compute_config_limits(intel_dp, pipe_config, >> diff --git a/drivers/gpu/drm/i915/display/intel_dp.h b/drivers/gpu/drm/i915/display/intel_dp.h >> index bc9a82d82df2..cc08a309eb78 100644 >> --- a/drivers/gpu/drm/i915/display/intel_dp.h >> +++ b/drivers/gpu/drm/i915/display/intel_dp.h >> @@ -123,7 +123,8 @@ int intel_dp_effective_data_rate(int pixel_clock, int bpp_x16, >> int bw_overhead); >> int intel_dp_max_link_data_rate(struct intel_dp *intel_dp, >> int max_dprx_rate, int max_dprx_lanes); >> -bool intel_dp_joiner_needs_dsc(struct drm_i915_private *i915, bool use_joiner); >> +bool intel_dp_joiner_needs_dsc(struct drm_i915_private *i915, >> + int num_joined_pipes); >> bool intel_dp_has_joiner(struct intel_dp *intel_dp); >> bool intel_dp_needs_vsc_sdp(const struct intel_crtc_state *crtc_state, >> const struct drm_connector_state *conn_state); >> diff --git a/drivers/gpu/drm/i915/display/intel_dp_mst.c b/drivers/gpu/drm/i915/display/intel_dp_mst.c >> index 383b3e38df52..fb067749f3a0 100644 >> --- a/drivers/gpu/drm/i915/display/intel_dp_mst.c >> +++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c >> @@ -588,7 +588,7 @@ static int intel_dp_mst_compute_config(struct intel_encoder *encoder, >> pipe_config->output_format = INTEL_OUTPUT_FORMAT_RGB; >> pipe_config->has_pch_encoder = false; >> >> - joiner_needs_dsc = intel_dp_joiner_needs_dsc(dev_priv, pipe_config->joiner_pipes); >> + joiner_needs_dsc = intel_dp_joiner_needs_dsc(dev_priv, num_joined_pipes); >> >> dsc_needed = joiner_needs_dsc || intel_dp->force_dsc_en || >> !intel_dp_mst_compute_config_limits(intel_dp, >> @@ -1472,6 +1472,7 @@ intel_dp_mst_mode_valid_ctx(struct drm_connector *connector, >> mode->hdisplay, target_clock); >> if (num_joined_pipes == 2) { >> joiner = true; >> + num_joined_pipes = 2; >> max_dotclk *= 2; >> } >> >> @@ -1512,7 +1513,7 @@ intel_dp_mst_mode_valid_ctx(struct drm_connector *connector, >> dsc = dsc_max_compressed_bpp && dsc_slice_count; >> } >> >> - if (intel_dp_joiner_needs_dsc(dev_priv, joiner) && !dsc) { >> + if (intel_dp_joiner_needs_dsc(dev_priv, num_joined_pipes) && !dsc) { >> *status = MODE_CLOCK_HIGH; >> return 0; >> } >> -- >> 2.45.2
On Thu, Sep 12, 2024 at 03:50:34PM +0530, Nautiyal, Ankit K wrote: > > On 9/12/2024 1:47 AM, Ville Syrjälä wrote: > > On Wed, Sep 11, 2024 at 06:43:37PM +0530, Ankit Nautiyal wrote: > >> In preparation of ultrajoiner, use number of joined pipes in the > >> intel_dp_joiner_needs_dsc helper, instead of joiner flag. > >> > >> Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com> > >> --- > >> drivers/gpu/drm/i915/display/intel_dp.c | 9 +++++---- > >> drivers/gpu/drm/i915/display/intel_dp.h | 3 ++- > >> drivers/gpu/drm/i915/display/intel_dp_mst.c | 5 +++-- > >> 3 files changed, 10 insertions(+), 7 deletions(-) > >> > >> diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c > >> index 65044f63d1f5..6c503b5968d2 100644 > >> --- a/drivers/gpu/drm/i915/display/intel_dp.c > >> +++ b/drivers/gpu/drm/i915/display/intel_dp.c > >> @@ -1412,7 +1412,7 @@ intel_dp_mode_valid(struct drm_connector *_connector, > >> dsc = dsc_max_compressed_bpp && dsc_slice_count; > >> } > >> > >> - if (intel_dp_joiner_needs_dsc(dev_priv, joiner) && !dsc) > >> + if (intel_dp_joiner_needs_dsc(dev_priv, num_joined_pipes) && !dsc) > >> return MODE_CLOCK_HIGH; > >> > >> if (mode_rate > max_rate && !dsc) > >> @@ -2520,14 +2520,15 @@ int intel_dp_config_required_rate(const struct intel_crtc_state *crtc_state) > >> return intel_dp_link_required(adjusted_mode->crtc_clock, bpp); > >> } > >> > >> -bool intel_dp_joiner_needs_dsc(struct drm_i915_private *i915, bool use_joiner) > >> +bool intel_dp_joiner_needs_dsc(struct drm_i915_private *i915, > >> + int num_joined_pipes) > >> { > >> /* > >> * Pipe joiner needs compression up to display 12 due to bandwidth > >> * limitation. DG2 onwards pipe joiner can be enabled without > >> * compression. > >> */ > >> - return DISPLAY_VER(i915) < 13 && use_joiner; > >> + return DISPLAY_VER(i915) < 13 && (num_joined_pipes == 2); > > Pointless parens. > > Noted. Will remove these. > > Besides this, I am wondering if I should change the variable > num_joined_pipes to num_pipes or num_pipes_used? So its values 1, 2, 4 > make more sense? I think 'num_joined_pipes' might be the best since it reminds the casual reader that this can have something do with joining, as opposed to just about the number of pipes generally available on the platform/etc.
On 9/12/2024 4:28 PM, Ville Syrjälä wrote: > On Thu, Sep 12, 2024 at 03:50:34PM +0530, Nautiyal, Ankit K wrote: >> On 9/12/2024 1:47 AM, Ville Syrjälä wrote: >>> On Wed, Sep 11, 2024 at 06:43:37PM +0530, Ankit Nautiyal wrote: >>>> In preparation of ultrajoiner, use number of joined pipes in the >>>> intel_dp_joiner_needs_dsc helper, instead of joiner flag. >>>> >>>> Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com> >>>> --- >>>> drivers/gpu/drm/i915/display/intel_dp.c | 9 +++++---- >>>> drivers/gpu/drm/i915/display/intel_dp.h | 3 ++- >>>> drivers/gpu/drm/i915/display/intel_dp_mst.c | 5 +++-- >>>> 3 files changed, 10 insertions(+), 7 deletions(-) >>>> >>>> diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c >>>> index 65044f63d1f5..6c503b5968d2 100644 >>>> --- a/drivers/gpu/drm/i915/display/intel_dp.c >>>> +++ b/drivers/gpu/drm/i915/display/intel_dp.c >>>> @@ -1412,7 +1412,7 @@ intel_dp_mode_valid(struct drm_connector *_connector, >>>> dsc = dsc_max_compressed_bpp && dsc_slice_count; >>>> } >>>> >>>> - if (intel_dp_joiner_needs_dsc(dev_priv, joiner) && !dsc) >>>> + if (intel_dp_joiner_needs_dsc(dev_priv, num_joined_pipes) && !dsc) >>>> return MODE_CLOCK_HIGH; >>>> >>>> if (mode_rate > max_rate && !dsc) >>>> @@ -2520,14 +2520,15 @@ int intel_dp_config_required_rate(const struct intel_crtc_state *crtc_state) >>>> return intel_dp_link_required(adjusted_mode->crtc_clock, bpp); >>>> } >>>> >>>> -bool intel_dp_joiner_needs_dsc(struct drm_i915_private *i915, bool use_joiner) >>>> +bool intel_dp_joiner_needs_dsc(struct drm_i915_private *i915, >>>> + int num_joined_pipes) >>>> { >>>> /* >>>> * Pipe joiner needs compression up to display 12 due to bandwidth >>>> * limitation. DG2 onwards pipe joiner can be enabled without >>>> * compression. >>>> */ >>>> - return DISPLAY_VER(i915) < 13 && use_joiner; >>>> + return DISPLAY_VER(i915) < 13 && (num_joined_pipes == 2); >>> Pointless parens. >> Noted. Will remove these. >> >> Besides this, I am wondering if I should change the variable >> num_joined_pipes to num_pipes or num_pipes_used? So its values 1, 2, 4 >> make more sense? > I think 'num_joined_pipes' might be the best since it reminds the > casual reader that this can have something do with joining, as > opposed to just about the number of pipes generally available on > the platform/etc. Got it! Thanks again! Regards, Ankit >
diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c index 65044f63d1f5..6c503b5968d2 100644 --- a/drivers/gpu/drm/i915/display/intel_dp.c +++ b/drivers/gpu/drm/i915/display/intel_dp.c @@ -1412,7 +1412,7 @@ intel_dp_mode_valid(struct drm_connector *_connector, dsc = dsc_max_compressed_bpp && dsc_slice_count; } - if (intel_dp_joiner_needs_dsc(dev_priv, joiner) && !dsc) + if (intel_dp_joiner_needs_dsc(dev_priv, num_joined_pipes) && !dsc) return MODE_CLOCK_HIGH; if (mode_rate > max_rate && !dsc) @@ -2520,14 +2520,15 @@ int intel_dp_config_required_rate(const struct intel_crtc_state *crtc_state) return intel_dp_link_required(adjusted_mode->crtc_clock, bpp); } -bool intel_dp_joiner_needs_dsc(struct drm_i915_private *i915, bool use_joiner) +bool intel_dp_joiner_needs_dsc(struct drm_i915_private *i915, + int num_joined_pipes) { /* * Pipe joiner needs compression up to display 12 due to bandwidth * limitation. DG2 onwards pipe joiner can be enabled without * compression. */ - return DISPLAY_VER(i915) < 13 && use_joiner; + return DISPLAY_VER(i915) < 13 && (num_joined_pipes == 2); } static int @@ -2558,7 +2559,7 @@ intel_dp_compute_link_config(struct intel_encoder *encoder, if (num_joined_pipes == 2) pipe_config->joiner_pipes = GENMASK(crtc->pipe + 1, crtc->pipe); - joiner_needs_dsc = intel_dp_joiner_needs_dsc(i915, pipe_config->joiner_pipes); + joiner_needs_dsc = intel_dp_joiner_needs_dsc(i915, num_joined_pipes); dsc_needed = joiner_needs_dsc || intel_dp->force_dsc_en || !intel_dp_compute_config_limits(intel_dp, pipe_config, diff --git a/drivers/gpu/drm/i915/display/intel_dp.h b/drivers/gpu/drm/i915/display/intel_dp.h index bc9a82d82df2..cc08a309eb78 100644 --- a/drivers/gpu/drm/i915/display/intel_dp.h +++ b/drivers/gpu/drm/i915/display/intel_dp.h @@ -123,7 +123,8 @@ int intel_dp_effective_data_rate(int pixel_clock, int bpp_x16, int bw_overhead); int intel_dp_max_link_data_rate(struct intel_dp *intel_dp, int max_dprx_rate, int max_dprx_lanes); -bool intel_dp_joiner_needs_dsc(struct drm_i915_private *i915, bool use_joiner); +bool intel_dp_joiner_needs_dsc(struct drm_i915_private *i915, + int num_joined_pipes); bool intel_dp_has_joiner(struct intel_dp *intel_dp); bool intel_dp_needs_vsc_sdp(const struct intel_crtc_state *crtc_state, const struct drm_connector_state *conn_state); diff --git a/drivers/gpu/drm/i915/display/intel_dp_mst.c b/drivers/gpu/drm/i915/display/intel_dp_mst.c index 383b3e38df52..fb067749f3a0 100644 --- a/drivers/gpu/drm/i915/display/intel_dp_mst.c +++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c @@ -588,7 +588,7 @@ static int intel_dp_mst_compute_config(struct intel_encoder *encoder, pipe_config->output_format = INTEL_OUTPUT_FORMAT_RGB; pipe_config->has_pch_encoder = false; - joiner_needs_dsc = intel_dp_joiner_needs_dsc(dev_priv, pipe_config->joiner_pipes); + joiner_needs_dsc = intel_dp_joiner_needs_dsc(dev_priv, num_joined_pipes); dsc_needed = joiner_needs_dsc || intel_dp->force_dsc_en || !intel_dp_mst_compute_config_limits(intel_dp, @@ -1472,6 +1472,7 @@ intel_dp_mst_mode_valid_ctx(struct drm_connector *connector, mode->hdisplay, target_clock); if (num_joined_pipes == 2) { joiner = true; + num_joined_pipes = 2; max_dotclk *= 2; } @@ -1512,7 +1513,7 @@ intel_dp_mst_mode_valid_ctx(struct drm_connector *connector, dsc = dsc_max_compressed_bpp && dsc_slice_count; } - if (intel_dp_joiner_needs_dsc(dev_priv, joiner) && !dsc) { + if (intel_dp_joiner_needs_dsc(dev_priv, num_joined_pipes) && !dsc) { *status = MODE_CLOCK_HIGH; return 0; }
In preparation of ultrajoiner, use number of joined pipes in the intel_dp_joiner_needs_dsc helper, instead of joiner flag. Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com> --- drivers/gpu/drm/i915/display/intel_dp.c | 9 +++++---- drivers/gpu/drm/i915/display/intel_dp.h | 3 ++- drivers/gpu/drm/i915/display/intel_dp_mst.c | 5 +++-- 3 files changed, 10 insertions(+), 7 deletions(-)