Merge "disp: msm: sde: cache cwb enc mask to use during seamless transitions"
此提交包含在:
@@ -930,6 +930,7 @@ void sde_encoder_set_clone_mode(struct drm_encoder *drm_enc,
|
||||
}
|
||||
}
|
||||
|
||||
sde_crtc_state->cached_cwb_enc_mask = sde_crtc_state->cwb_enc_mask;
|
||||
sde_crtc_state->cwb_enc_mask = 0;
|
||||
}
|
||||
|
||||
@@ -2605,6 +2606,8 @@ static void sde_encoder_virt_mode_set(struct drm_encoder *drm_enc,
|
||||
struct sde_encoder_virt *sde_enc;
|
||||
struct sde_kms *sde_kms;
|
||||
struct drm_connector *conn;
|
||||
struct drm_crtc_state *crtc_state;
|
||||
struct sde_crtc_state *sde_crtc_state;
|
||||
struct sde_connector_state *c_state;
|
||||
struct msm_display_mode *msm_mode;
|
||||
struct sde_crtc *sde_crtc;
|
||||
@@ -2669,6 +2672,16 @@ static void sde_encoder_virt_mode_set(struct drm_encoder *drm_enc,
|
||||
if (ret)
|
||||
return;
|
||||
|
||||
crtc_state = sde_crtc->base.state;
|
||||
sde_crtc_state = to_sde_crtc_state(crtc_state);
|
||||
if ((sde_enc->disp_info.intf_type == DRM_MODE_CONNECTOR_VIRTUAL) &&
|
||||
((sde_crtc_state->cached_cwb_enc_mask & drm_encoder_mask(drm_enc)))) {
|
||||
SDE_EVT32(DRMID(drm_enc), sde_crtc_state->cwb_enc_mask,
|
||||
sde_crtc_state->cached_cwb_enc_mask);
|
||||
sde_crtc_state->cwb_enc_mask = sde_crtc_state->cached_cwb_enc_mask;
|
||||
sde_encoder_set_clone_mode(drm_enc, crtc_state);
|
||||
}
|
||||
|
||||
/* reserve dynamic resources now, indicating non test-only */
|
||||
ret = sde_rm_reserve(&sde_kms->rm, drm_enc, drm_enc->crtc->state, conn->state, false);
|
||||
if (ret) {
|
||||
|
新增問題並參考
封鎖使用者