Unverified Commit 64d845f6 authored by Jouni Högander's avatar Jouni Högander Committed by Rodrigo Vivi
Browse files

drm/i915/psr: Calculate PIPE_SRCSZ_ERLY_TPT value



When early transport is enabled we need to write PIPE_SRCSZ_ERLY_TPT on
every flip doing selective update. This patch calculates
PIPE_SRCSZ_ERLY_TPT same way as is done for PSR2_MAN_TRK_CTL value and
stores i in intel_crtc_state->pipe_srcsz_early_tpt to be written later
during flip.

Bspec: 68927

Signed-off-by: default avatarJouni Högander <jouni.hogander@intel.com>
Reviewed-by: default avatarMika Kahola <mika.kahola@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240319123327.1661097-2-jouni.hogander@intel.com


(cherry picked from commit f3b899f0)
Signed-off-by: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
parent caf3d748
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -1423,6 +1423,8 @@ struct intel_crtc_state {

	u32 psr2_man_track_ctl;

	u32 pipe_srcsz_early_tpt;

	struct drm_rect psr2_su_area;

	/* Variable Refresh Rate state */
+16 −0
Original line number Diff line number Diff line
@@ -2051,6 +2051,20 @@ static void psr2_man_trk_ctl_calc(struct intel_crtc_state *crtc_state,
	crtc_state->psr2_man_track_ctl = val;
}

static u32 psr2_pipe_srcsz_early_tpt_calc(struct intel_crtc_state *crtc_state,
					  bool full_update)
{
	int width, height;

	if (!crtc_state->enable_psr2_su_region_et || full_update)
		return 0;

	width = drm_rect_width(&crtc_state->psr2_su_area);
	height = drm_rect_height(&crtc_state->psr2_su_area);

	return PIPESRC_WIDTH(width - 1) | PIPESRC_HEIGHT(height - 1);
}

static void clip_area_update(struct drm_rect *overlap_damage_area,
			     struct drm_rect *damage_area,
			     struct drm_rect *pipe_src)
@@ -2338,6 +2352,8 @@ int intel_psr2_sel_fetch_update(struct intel_atomic_state *state,

skip_sel_fetch_set_loop:
	psr2_man_trk_ctl_calc(crtc_state, full_update);
	crtc_state->pipe_srcsz_early_tpt =
		psr2_pipe_srcsz_early_tpt_calc(crtc_state, full_update);
	return 0;
}