disp: msm: sde: add dnsc_blur validations in wb encoder

Add downscale blur block validations in atomic_check phase of writeback
encoder. Downscale blur along with partial update is not supported.
NV12 output in WB is not supported with downscale blur as CDM block
usage is mutually exclusive with dsnc_blur. If destination scaler is
enabled, the ds src or dst should match with dnsc_blur src based on
the ds tap point chosen.

Change-Id: I1d643dc26738c0e77d8e9181b4c834693153209c
Signed-off-by: Veera Sundaram Sankaran <veeras@codeaurora.org>
Этот коммит содержится в:
Veera Sundaram Sankaran
2021-09-22 18:20:05 -07:00
родитель 88c9a184f9
Коммит 8a86ccc9fc
4 изменённых файлов: 271 добавлений и 123 удалений

Просмотреть файл

@@ -874,6 +874,32 @@ static inline bool sde_crtc_state_in_clone_mode(struct drm_encoder *encoder,
return false;
}
/**
* sde_crtc_get_ds_io_res - populates the destination scaler src/dst w/h
* @state: pointer to drm crtc state
* @res: pointer to the output struct to populate the src/dst
*/
static inline void sde_crtc_get_ds_io_res(struct drm_crtc_state *state, struct sde_io_res *res)
{
struct sde_crtc_state *cstate;
int i;
if (!state || !res)
return;
cstate = to_sde_crtc_state(state);
memset(res, 0, sizeof(struct sde_io_res));
for (i = 0; i < cstate->num_ds; i++) {
if (cstate->ds_cfg[i].scl3_cfg.enable) {
res->enabled = true;
res->src_w += cstate->ds_cfg[i].lm_width;
res->dst_w += cstate->ds_cfg[i].scl3_cfg.dst_width;
res->src_h = cstate->ds_cfg[i].lm_height;
res->dst_h = cstate->ds_cfg[i].scl3_cfg.dst_height;
}
}
}
/**
* sde_crtc_get_secure_transition - determines the operations to be
* performed before transitioning to secure state