mirror of
https://github.com/torvalds/linux.git
synced 2026-06-01 02:53:36 +02:00
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: Jouni Högander <jouni.hogander@intel.com>
Reviewed-by: Mika Kahola <mika.kahola@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240319123327.1661097-2-jouni.hogander@intel.com
(cherry picked from commit f3b899f0b4)
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
This commit is contained in:
parent
caf3d748f6
commit
64d845f651
|
|
@ -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 */
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user