[PATCH 08/10] drm/i915/display: Set and get the casf config
Nautiyal, Ankit K
ankit.k.nautiyal at intel.com
Mon Apr 7 06:30:09 UTC 2025
On 4/2/2025 6:26 PM, Nemesa Garg wrote:
> Set the configuration for CASF and capture it
> in crtc_state and get the configuration by
> reading back. Add the support to compare the
> software and hardware state of CASF.
>
> v2: Update subject[Ankit]
> v3: Add the state compare[Ankit]
>
> Signed-off-by: Nemesa Garg <nemesa.garg at intel.com>
LGTM.
Reviewed-by: Ankit Nautiyal <ankit.k.nautiyal at intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_display.c | 7 +++++++
> drivers/gpu/drm/i915/display/skl_scaler.c | 18 ++++++++++++------
> 2 files changed, 19 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
> index 4e84ee149fa2..db82da523323 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -4240,6 +4240,10 @@ static int intel_crtc_atomic_check(struct intel_atomic_state *state,
> return ret;
> }
>
> + ret = intel_casf_compute_config(crtc_state);
> + if (ret)
> + return ret;
> +
> if (DISPLAY_VER(display) >= 9) {
> if (intel_crtc_needs_modeset(crtc_state) ||
> intel_crtc_needs_fastset(crtc_state) ||
> @@ -5292,6 +5296,9 @@ intel_pipe_config_compare(const struct intel_crtc_state *current_config,
>
> PIPE_CONF_CHECK_I(scaler_state.scaler_id);
> PIPE_CONF_CHECK_I(pixel_rate);
> + PIPE_CONF_CHECK_BOOL(hw.casf_params.casf_enable);
> + PIPE_CONF_CHECK_I(hw.casf_params.win_size);
> + PIPE_CONF_CHECK_I(hw.casf_params.strength);
>
> PIPE_CONF_CHECK_X(gamma_mode);
> if (display->platform.cherryview)
> diff --git a/drivers/gpu/drm/i915/display/skl_scaler.c b/drivers/gpu/drm/i915/display/skl_scaler.c
> index d816dae9cec4..c22f067207af 100644
> --- a/drivers/gpu/drm/i915/display/skl_scaler.c
> +++ b/drivers/gpu/drm/i915/display/skl_scaler.c
> @@ -961,16 +961,22 @@ void skl_scaler_get_config(struct intel_crtc_state *crtc_state)
> continue;
>
> id = i;
> - crtc_state->pch_pfit.enabled = true;
> +
> + if (HAS_CASF(display) && id == 1)
> + intel_casf_sharpness_get_config(crtc_state);
> +
> + if (!crtc_state->hw.casf_params.casf_enable)
> + crtc_state->pch_pfit.enabled = true;
>
> pos = intel_de_read(display, SKL_PS_WIN_POS(crtc->pipe, i));
> size = intel_de_read(display, SKL_PS_WIN_SZ(crtc->pipe, i));
>
> - drm_rect_init(&crtc_state->pch_pfit.dst,
> - REG_FIELD_GET(PS_WIN_XPOS_MASK, pos),
> - REG_FIELD_GET(PS_WIN_YPOS_MASK, pos),
> - REG_FIELD_GET(PS_WIN_XSIZE_MASK, size),
> - REG_FIELD_GET(PS_WIN_YSIZE_MASK, size));
> + if (!crtc_state->hw.casf_params.casf_enable)
> + drm_rect_init(&crtc_state->pch_pfit.dst,
> + REG_FIELD_GET(PS_WIN_XPOS_MASK, pos),
> + REG_FIELD_GET(PS_WIN_YPOS_MASK, pos),
> + REG_FIELD_GET(PS_WIN_XSIZE_MASK, size),
> + REG_FIELD_GET(PS_WIN_YSIZE_MASK, size));
>
> scaler_state->scalers[i].in_use = true;
> break;
More information about the dri-devel
mailing list