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>
Šī revīzija ir iekļauta:
Veera Sundaram Sankaran
2021-09-22 18:20:05 -07:00
vecāks 88c9a184f9
revīzija 8a86ccc9fc
4 mainīti faili ar 271 papildinājumiem un 123 dzēšanām

Parādīt failu

@@ -842,6 +842,36 @@ static inline uint64_t sde_connector_get_lp(
CONNECTOR_PROP_LP);
}
/**
* sde_connector_get_dnsc_blur_io_res - populates the downscale blur src/dst w/h
* @state: pointer to drm connector state
* @res: pointer to the output struct to populate the src/dst
*/
static inline void sde_connector_get_dnsc_blur_io_res(struct drm_connector_state *state,
struct sde_io_res *res)
{
struct sde_connector_state *sde_conn_state;
int i;
if (!state || !res)
return;
memset(res, 0, sizeof(struct sde_io_res));
sde_conn_state = to_sde_connector_state(state);
if (!sde_conn_state->dnsc_blur_count ||
!(sde_conn_state->dnsc_blur_cfg[0].flags & DNSC_BLUR_EN))
return;
res->enabled = true;
for (i = 0; i < sde_conn_state->dnsc_blur_count; i++) {
res->src_w += sde_conn_state->dnsc_blur_cfg[i].src_width;
res->dst_w += sde_conn_state->dnsc_blur_cfg[i].dst_width;
}
res->src_h = sde_conn_state->dnsc_blur_cfg[0].src_height;
res->dst_h = sde_conn_state->dnsc_blur_cfg[0].dst_height;
}
/**
* sde_connector_set_property_for_commit - add property set to atomic state
* Add a connector state property update for the specified property index