[PATCH 08/14] drm/i915/dsb: Precompute DSB_CHICKEN
Manna, Animesh
animesh.manna at intel.com
Wed Jul 3 08:48:49 UTC 2024
> -----Original Message-----
> From: Intel-gfx <intel-gfx-bounces at lists.freedesktop.org> On Behalf Of Ville
> Syrjala
> Sent: Tuesday, June 25, 2024 12:40 AM
> To: intel-gfx at lists.freedesktop.org
> Subject: [PATCH 08/14] drm/i915/dsb: Precompute DSB_CHICKEN
>
> From: Ville Syrjälä <ville.syrjala at linux.intel.com>
>
> Adjust the code that determines the correct DSB_CHICKEN value to be usable
> for use within DSB commands themselves. Ie.
> precompute it based on our knowledge of what the hardware state (VRR vs.
> not mainly) will be at the time of the commit.
>
> Signed-off-by: Ville Syrjälä <ville.syrjala at linux.intel.com>
Reviewed-by: Animesh Manna <animesh.manna at intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_dsb.c | 9 ++++++---
> 1 file changed, 6 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_dsb.c
> b/drivers/gpu/drm/i915/display/intel_dsb.c
> index b362a3050c7f..81937908c798 100644
> --- a/drivers/gpu/drm/i915/display/intel_dsb.c
> +++ b/drivers/gpu/drm/i915/display/intel_dsb.c
> @@ -43,6 +43,7 @@ struct intel_dsb {
> */
> unsigned int ins_start_offset;
>
> + u32 chicken;
> int hw_dewake_scanline;
> };
>
> @@ -149,9 +150,10 @@ static int dsb_scanline_to_hw(struct
> intel_atomic_state *state,
> return (scanline + vtotal - intel_crtc_scanline_offset(crtc_state)) %
> vtotal; }
>
> -static u32 dsb_chicken(struct intel_crtc *crtc)
> +static u32 dsb_chicken(struct intel_atomic_state *state,
> + struct intel_crtc *crtc)
> {
> - if (crtc->mode_flags & I915_MODE_FLAG_VRR)
> + if (pre_commit_is_vrr_active(state, crtc))
> return DSB_SKIP_WAITS_EN |
> DSB_CTRL_WAIT_SAFE_WINDOW |
> DSB_CTRL_NO_WAIT_VBLANK |
> @@ -449,7 +451,7 @@ static void _intel_dsb_commit(struct intel_dsb *dsb,
> u32 ctrl,
> ctrl | DSB_ENABLE);
>
> intel_de_write_fw(display, DSB_CHICKEN(pipe, dsb->id),
> - dsb_chicken(crtc));
> + dsb->chicken);
>
> intel_de_write_fw(display, DSB_INTERRUPT(pipe, dsb->id),
> dsb_error_int_status(display) |
> DSB_PROG_INT_STATUS | @@ -580,6 +582,7 @@ struct intel_dsb
> *intel_dsb_prepare(struct intel_atomic_state *state,
> dsb->free_pos = 0;
> dsb->ins_start_offset = 0;
>
> + dsb->chicken = dsb_chicken(state, crtc);
> dsb->hw_dewake_scanline =
> dsb_scanline_to_hw(state, crtc, dsb_dewake_scanline(state,
> crtc));
>
> --
> 2.44.2
More information about the Intel-gfx
mailing list