From: "Nautiyal, Ankit K" <ankit.k.nautiyal@intel.com>
To: Nemesa Garg <nemesa.garg@intel.com>,
<intel-gfx@lists.freedesktop.org>,
<intel-xe@lists.freedesktop.org>,
<dri-devel@lists.freedesktop.org>
Subject: Re: [PATCH 07/12] drm/i915/display: Configure the second scaler for
Date: Tue, 1 Apr 2025 11:02:57 +0530 [thread overview]
Message-ID: <61fc84b0-46f9-4f2d-91d6-29cc42386290@intel.com> (raw)
In-Reply-To: <20250321160628.2663912-8-nemesa.garg@intel.com>
On 3/21/2025 9:36 PM, Nemesa Garg wrote:
> sharpness
This again is part of subject.
> As only second scaler can be used for sharpness check if it
> is available and also check if panel fitting is not enabled,
> then set the sharpness as both uses pipe scaler so only one
> can be enabled at a time.
This can be improved. Avoid having one long sentence for the commit message.
Regards,
Ankit
>
> v2: Add the panel fitting check before enabling sharpness
> v3: Reframe commit message[Arun]
> v4: Replace string based comparison with plane_state[Jani]
> v5: Rebase
> v6: Fix build issue
> v7: Remove scaler id from verify_crtc_state[Ankit]
> v8: Change the patch title. Add code comment.
> Move the config part in patch#6. [Ankit]
> v9: Refactor the patch[Ankit]
>
> Signed-off-by: Nemesa Garg <nemesa.garg@intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_casf.c | 8 +++++++
> drivers/gpu/drm/i915/display/intel_casf.h | 1 +
> drivers/gpu/drm/i915/display/intel_display.c | 4 +++-
> drivers/gpu/drm/i915/display/skl_scaler.c | 25 +++++++++++++++-----
> 4 files changed, 31 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_casf.c b/drivers/gpu/drm/i915/display/intel_casf.c
> index 4c41a41872bd..367a73a91ae6 100644
> --- a/drivers/gpu/drm/i915/display/intel_casf.c
> +++ b/drivers/gpu/drm/i915/display/intel_casf.c
> @@ -148,6 +148,14 @@ void intel_casf_sharpness_get_config(struct intel_crtc_state *crtc_state)
> }
> }
>
> +bool intel_casf_needs_scaler(const struct intel_crtc_state *crtc_state)
> +{
> + if (crtc_state->hw.casf_params.casf_enable)
> + return true;
> +
> + return false;
> +}
> +
> static int casf_coeff_tap(int i)
> {
> return i % SCALER_FILTER_NUM_TAPS;
> diff --git a/drivers/gpu/drm/i915/display/intel_casf.h b/drivers/gpu/drm/i915/display/intel_casf.h
> index 381d5e10c70d..026a2b8348df 100644
> --- a/drivers/gpu/drm/i915/display/intel_casf.h
> +++ b/drivers/gpu/drm/i915/display/intel_casf.h
> @@ -17,5 +17,6 @@ void intel_casf_sharpness_get_config(struct intel_crtc_state *crtc_state);
> void intel_filter_lut_load(struct intel_crtc *crtc,
> const struct intel_crtc_state *crtc_state);
> void intel_casf_scaler_compute_config(struct intel_crtc_state *crtc_state);
> +bool intel_casf_needs_scaler(const struct intel_crtc_state *crtc_state);
>
> #endif /* __INTEL_CASF_H__ */
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
> index b852ffe94a10..4ffe738ad725 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -60,6 +60,7 @@
> #include "intel_audio.h"
> #include "intel_bo.h"
> #include "intel_bw.h"
> +#include "intel_casf.h"
> #include "intel_cdclk.h"
> #include "intel_clock_gating.h"
> #include "intel_color.h"
> @@ -4225,7 +4226,8 @@ static int intel_crtc_atomic_check(struct intel_atomic_state *state,
>
> if (DISPLAY_VER(display) >= 9) {
> if (intel_crtc_needs_modeset(crtc_state) ||
> - intel_crtc_needs_fastset(crtc_state)) {
> + intel_crtc_needs_fastset(crtc_state) ||
> + intel_casf_needs_scaler(crtc_state)) {
> ret = skl_update_scaler_crtc(crtc_state);
> if (ret)
> return ret;
> diff --git a/drivers/gpu/drm/i915/display/skl_scaler.c b/drivers/gpu/drm/i915/display/skl_scaler.c
> index 39fc537e54f0..d816dae9cec4 100644
> --- a/drivers/gpu/drm/i915/display/skl_scaler.c
> +++ b/drivers/gpu/drm/i915/display/skl_scaler.c
> @@ -5,6 +5,7 @@
>
> #include "i915_drv.h"
> #include "i915_reg.h"
> +#include "intel_casf.h"
> #include "intel_casf_regs.h"
> #include "intel_de.h"
> #include "intel_display_trace.h"
> @@ -272,7 +273,8 @@ int skl_update_scaler_crtc(struct intel_crtc_state *crtc_state)
> drm_rect_width(&crtc_state->pipe_src),
> drm_rect_height(&crtc_state->pipe_src),
> width, height, NULL, 0,
> - crtc_state->pch_pfit.enabled);
> + crtc_state->pch_pfit.enabled ||
> + intel_casf_needs_scaler(crtc_state));
> }
>
> /**
> @@ -311,7 +313,9 @@ int skl_update_scaler_plane(struct intel_crtc_state *crtc_state,
> }
>
> static int intel_allocate_scaler(struct intel_crtc_scaler_state *scaler_state,
> - struct intel_crtc *crtc)
> + struct intel_crtc *crtc,
> + struct intel_plane_state *plane_state,
> + bool casf_scaler)
> {
> int i;
>
> @@ -319,6 +323,10 @@ static int intel_allocate_scaler(struct intel_crtc_scaler_state *scaler_state,
> if (scaler_state->scalers[i].in_use)
> continue;
>
> + /* CASF needs second scaler */
> + if (!plane_state && casf_scaler && i != 1)
> + continue;
> +
> scaler_state->scalers[i].in_use = true;
>
> return i;
> @@ -369,7 +377,7 @@ static int intel_atomic_setup_scaler(struct intel_crtc_state *crtc_state,
> int num_scalers_need, struct intel_crtc *crtc,
> const char *name, int idx,
> struct intel_plane_state *plane_state,
> - int *scaler_id)
> + int *scaler_id, bool casf_scaler)
> {
> struct intel_display *display = to_intel_display(crtc);
> struct intel_crtc_scaler_state *scaler_state = &crtc_state->scaler_state;
> @@ -378,7 +386,7 @@ static int intel_atomic_setup_scaler(struct intel_crtc_state *crtc_state,
> int vscale = 0;
>
> if (*scaler_id < 0)
> - *scaler_id = intel_allocate_scaler(scaler_state, crtc);
> + *scaler_id = intel_allocate_scaler(scaler_state, crtc, plane_state, casf_scaler);
>
> if (drm_WARN(display->drm, *scaler_id < 0,
> "Cannot find scaler for %s:%d\n", name, idx))
> @@ -510,10 +518,14 @@ static int setup_crtc_scaler(struct intel_atomic_state *state,
> struct intel_crtc_scaler_state *scaler_state =
> &crtc_state->scaler_state;
>
> + if (intel_casf_needs_scaler(crtc_state) && crtc_state->pch_pfit.enabled)
> + return -EINVAL;
> +
> return intel_atomic_setup_scaler(crtc_state,
> hweight32(scaler_state->scaler_users),
> crtc, "CRTC", crtc->base.base.id,
> - NULL, &scaler_state->scaler_id);
> + NULL, &scaler_state->scaler_id,
> + intel_casf_needs_scaler(crtc_state));
> }
>
> static int setup_plane_scaler(struct intel_atomic_state *state,
> @@ -548,7 +560,8 @@ static int setup_plane_scaler(struct intel_atomic_state *state,
> return intel_atomic_setup_scaler(crtc_state,
> hweight32(scaler_state->scaler_users),
> crtc, "PLANE", plane->base.base.id,
> - plane_state, &plane_state->scaler_id);
> + plane_state, &plane_state->scaler_id,
> + false);
> }
>
> /**
next prev parent reply other threads:[~2025-04-01 5:33 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-03-21 16:06 [PATCH 00/12] Introduce drm sharpness property Nemesa Garg
2025-03-21 16:06 ` [PATCH 01/12] drm/i915/display: Introduce sharpness strength property Nemesa Garg
2025-03-21 16:06 ` [PATCH 02/12] drm/i915/display: Introduce HAS_CASF for sharpness support Nemesa Garg
2025-04-01 5:22 ` Nautiyal, Ankit K
2025-03-21 16:06 ` [PATCH 03/12] drm/i915/display: Add sharpness strength and winsize Nemesa Garg
2025-04-01 5:28 ` Nautiyal, Ankit K
2025-03-21 16:06 ` [PATCH 04/12] drm/i915/display: Add filter lut values Nemesa Garg
2025-03-21 16:06 ` [PATCH 05/12] drm/i915/display: Compute the scaler filter Nemesa Garg
2025-04-01 5:29 ` Nautiyal, Ankit K
2025-03-21 16:06 ` [PATCH 06/12] drm/i915/display: Add and compute scaler parameter Nemesa Garg
2025-03-21 16:06 ` [PATCH 07/12] drm/i915/display: Configure the second scaler for Nemesa Garg
2025-04-01 5:32 ` Nautiyal, Ankit K [this message]
2025-03-21 16:06 ` [PATCH 08/12] drm/i915/display: Compare the sharpness state Nemesa Garg
2025-04-01 5:34 ` Nautiyal, Ankit K
2025-03-21 16:06 ` [PATCH 09/12] drm/i915/display: Set a scaler mode Nemesa Garg
2025-04-01 5:37 ` Nautiyal, Ankit K
2025-04-01 5:54 ` Garg, Nemesa
2025-03-21 16:06 ` [PATCH 10/12] drm/i915/display: Write and read back the casf registers Nemesa Garg
2025-04-01 5:40 ` Nautiyal, Ankit K
2025-03-21 16:06 ` [PATCH 11/12] drm/i915/display: Enable/disable casf Nemesa Garg
2025-04-01 6:09 ` Nautiyal, Ankit K
2025-03-21 16:06 ` [PATCH 12/12] drm/i915/display: Expose sharpness strength property Nemesa Garg
2025-04-01 6:10 ` Nautiyal, Ankit K
2025-03-21 16:17 ` ✓ CI.Patch_applied: success for Introduce drm sharpness property (rev11) Patchwork
2025-03-21 16:17 ` ✗ CI.checkpatch: warning " Patchwork
2025-03-21 16:19 ` ✓ CI.KUnit: success " Patchwork
2025-03-21 16:35 ` ✓ CI.Build: " Patchwork
2025-03-21 16:37 ` ✓ CI.Hooks: " Patchwork
2025-03-21 16:39 ` ✗ CI.checksparse: warning " Patchwork
2025-03-21 17:04 ` ✓ Xe.CI.BAT: success " Patchwork
2025-03-21 17:46 ` ✗ Fi.CI.CHECKPATCH: warning " Patchwork
2025-03-21 17:46 ` ✗ Fi.CI.SPARSE: " Patchwork
2025-03-21 18:05 ` ✓ i915.CI.BAT: success " Patchwork
2025-03-21 18:11 ` ✗ Xe.CI.Full: failure " Patchwork
2025-03-21 21:40 ` ✗ i915.CI.Full: " 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=61fc84b0-46f9-4f2d-91d6-29cc42386290@intel.com \
--to=ankit.k.nautiyal@intel.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=intel-gfx@lists.freedesktop.org \
--cc=intel-xe@lists.freedesktop.org \
--cc=nemesa.garg@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.