From: Jani Nikula <jani.nikula@linux.intel.com>
To: Suraj Kandpal <suraj.kandpal@intel.com>, intel-gfx@lists.freedesktop.org
Subject: Re: [Intel-gfx] [PATCH v2] drm/i915/dp: Increase slice_height for DP
Date: Mon, 13 Feb 2023 20:27:48 +0200 [thread overview]
Message-ID: <87zg9hto7v.fsf@intel.com> (raw)
In-Reply-To: <20230202182012.3197674-1-suraj.kandpal@intel.com>
On Thu, 02 Feb 2023, Suraj Kandpal <suraj.kandpal@intel.com> wrote:
> According VDSC spec 1.2a Section 3.8 Options for Slice
> implies that 108 lines is an optimal slice height, but any
> size can be used as long as vertical active
> integer multiple and maximum vertical slice count requirements are met.
>
> Bspec: 49259
>
> Cc: Jani Nikula <jani.nikula@linux.intel.com>
> Cc: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
> Cc: Swati Sharma <swati2.sharma@intel.com>
> Signed-off-by: Suraj Kandpal <suraj.kandpal@intel.com>
>
> diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
> index 62cbab7402e9..cb4fbcd935db 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp.c
> @@ -1415,6 +1415,30 @@ static int intel_dp_sink_dsc_version_minor(struct intel_dp *intel_dp)
> DP_DSC_MINOR_SHIFT;
> }
>
> +static int intel_dp_get_slice_height(int vactive)
> +{
> + int slice_height;
> +
> + /*
> + * VDSC1.2a spec in Section 3.8 Options for Slices implies that
> + * 108 lines is an optimal slice height,
> + * but any size can be used as long as vertical active integer
> + * multiple and maximum vertical slice count requirements are met.
> + */
> + for (slice_height = 108; slice_height <= vactive; slice_height += 2)
> + if (vactive % slice_height == 0)
> + return slice_height;
I realize now that this loop will always find the slice_height as it
iterates to vactive inclusive. vactive % slice_height == 0 if
slice_height == vactive.
I did a bit of scripting on this. It seems pretty common to find a
slice_height < 200, especially for any of the more standard vactives I
checked, but maybe 8% go up to vactive/2, and 15% to vactive, for
arbitrary even vactives. But the ones that go big are typically fairly
obscure heights.
Maybe it's good enough.
> +
> + if (vactive % 8 == 0)
> + slice_height = 8;
> + else if (vactive % 4 == 0)
> + slice_height = 4;
> + else
> + slice_height = 2;
> +
> + return slice_height;
Sorry to say, given what I said above, this fallback appears to be
unnecessary. Maybe just return 2 here instead of the if ladder?
BR,
Jani.
> +}
> +
> static int intel_dp_dsc_compute_params(struct intel_encoder *encoder,
> struct intel_crtc_state *crtc_state)
> {
> @@ -1433,17 +1457,7 @@ static int intel_dp_dsc_compute_params(struct intel_encoder *encoder,
> vdsc_cfg->rc_model_size = DSC_RC_MODEL_SIZE_CONST;
> vdsc_cfg->pic_height = crtc_state->hw.adjusted_mode.crtc_vdisplay;
>
> - /*
> - * Slice Height of 8 works for all currently available panels. So start
> - * with that if pic_height is an integral multiple of 8. Eventually add
> - * logic to try multiple slice heights.
> - */
> - if (vdsc_cfg->pic_height % 8 == 0)
> - vdsc_cfg->slice_height = 8;
> - else if (vdsc_cfg->pic_height % 4 == 0)
> - vdsc_cfg->slice_height = 4;
> - else
> - vdsc_cfg->slice_height = 2;
> + vdsc_cfg->slice_height = intel_dp_get_slice_height(vdsc_cfg->pic_height);
>
> ret = intel_dsc_compute_params(crtc_state);
> if (ret)
--
Jani Nikula, Intel Open Source Graphics Center
next prev parent reply other threads:[~2023-02-13 18:28 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-02-02 11:46 [Intel-gfx] [PATCH 0/1] Fix logic to get slice_height for dp Suraj Kandpal
2023-02-02 11:46 ` [Intel-gfx] [PATCH 1/1] drm/i915/dp: Fix logic to fetch slice_height Suraj Kandpal
2023-02-02 13:02 ` Jani Nikula
2023-02-02 17:59 ` Kandpal, Suraj
2023-02-02 19:29 ` Jani Nikula
2023-02-03 6:07 ` Kandpal, Suraj
2023-02-02 18:20 ` [Intel-gfx] [PATCH v2] drm/i915/dp: Increase slice_height for DP Suraj Kandpal
2023-02-10 2:50 ` Kandpal, Suraj
2023-02-13 18:27 ` Jani Nikula [this message]
2023-02-14 5:20 ` [Intel-gfx] [PATCH v3] " Suraj Kandpal
2023-02-14 9:07 ` Jani Nikula
2023-02-02 12:52 ` [Intel-gfx] [PATCH 0/1] Fix logic to get slice_height for dp Jani Nikula
2023-02-02 13:52 ` [Intel-gfx] ✓ Fi.CI.BAT: success for " Patchwork
2023-02-02 17:54 ` [Intel-gfx] ✓ Fi.CI.IGT: " Patchwork
2023-02-02 20:37 ` [Intel-gfx] ✓ Fi.CI.BAT: success for Fix logic to get slice_height for dp (rev2) Patchwork
2023-02-03 4:05 ` [Intel-gfx] ✓ Fi.CI.IGT: " Patchwork
2023-02-14 6:05 ` [Intel-gfx] ✓ Fi.CI.BAT: success for Fix logic to get slice_height for dp (rev3) Patchwork
2023-02-14 7:25 ` [Intel-gfx] ✓ Fi.CI.IGT: " 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=87zg9hto7v.fsf@intel.com \
--to=jani.nikula@linux.intel.com \
--cc=intel-gfx@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.