disp: msm: sde: program the start window based on "EPT_FPS"

Introduce a new connector property called “EPT_FPS” for the cmd
mode panels. User space will set the “EPT_FPS” based on the
intended content fps, relative to the last retire fence timestamp
as calculated by Surface flinger. Program start window based
on the Expected Present Time fps.

Change-Id: I24b93e0f941af9fb2422b2484328254d04a1acbe
Signed-off-by: Shirisha Kollapuram <quic_kshirish@quicinc.com>
Signed-off-by: Veera Sundaram Sankaran <quic_veeras@quicinc.com>
Este commit está contenido en:
Shirisha Kollapuram
2022-08-16 23:47:46 +05:30
cometido por Veera Sundaram Sankaran
padre 2e3ba9430c
commit 0d6e7e269a
Se han modificado 7 ficheros con 156 adiciones y 99 borrados

Ver fichero

@@ -4659,10 +4659,12 @@ void _sde_encoder_delay_kickoff_processing(struct sde_encoder_virt *sde_enc)
ktime_t current_ts, ept_ts;
u32 avr_step_fps, min_fps = 0, qsync_mode;
u64 timeout_us = 0, ept;
bool is_cmd_mode;
struct drm_connector *drm_conn;
struct msm_mode_info *info = &sde_enc->mode_info;
struct sde_kms *sde_kms = sde_encoder_get_kms(&sde_enc->base);
if (!sde_enc->cur_master || !sde_enc->cur_master->connector)
if (!sde_enc->cur_master || !sde_enc->cur_master->connector || !sde_kms)
return;
drm_conn = sde_enc->cur_master->connector;
@@ -4675,6 +4677,15 @@ void _sde_encoder_delay_kickoff_processing(struct sde_encoder_virt *sde_enc)
_sde_encoder_get_qsync_fps_callback(&sde_enc->base, &min_fps, drm_conn->state);
/* use min qsync fps, if feature is enabled; otherwise min default fps */
min_fps = min_fps ? min_fps : DEFAULT_MIN_FPS;
is_cmd_mode = sde_encoder_check_curr_mode(&sde_enc->base, MSM_DISPLAY_CMD_MODE);
/* for cmd mode with qsync - EPT_FPS will be used to delay the processing */
if (test_bit(SDE_FEATURE_EPT_FPS, sde_kms->catalog->features)
&& is_cmd_mode && qsync_mode) {
SDE_DEBUG("enc:%d, ept:%llu not applicable for cmd mode with qsync enabled",
DRMID(&sde_enc->base), ept);
return;
}
avr_step_fps = info->avr_step_fps;
current_ts = ktime_get_ns();