disp: msm: sde: increase display kickoff timeout for hw-fences
Starting with HW-Fencing, the frames hw kickoff can take longer to trigger, given that HW will wait for the input fences signal. Therefore, this change increments the time-outs to wait up to ~10 secs, which corresponds to the current input dma-fences timeout. This ~10secs wait is given in intervals, where the dma-fence is also checked, so in case that the client producer of the fence signals the dma-fence, but misses the hw-fence signaling, Display driver can handle this case and do a sw-override to start the fetching of the incoming frame without waiting for the input hw-fence ipc signal. Change-Id: I6fcacbbaa79ca9847da616bd52efdda4bb8fccae Signed-off-by: Christina Oliveira <quic_coliveir@quicinc.com>
This commit is contained in:
@@ -1725,6 +1725,15 @@ static int _sde_encoder_phys_cmd_wait_for_wr_ptr(
|
||||
|
||||
ret = sde_encoder_helper_wait_for_irq(phys_enc, INTR_IDX_WRPTR,
|
||||
&wait_info);
|
||||
|
||||
/*
|
||||
* if hwfencing enabled, try again to wait for up to the extended timeout time in
|
||||
* increments as long as fence has not been signaled.
|
||||
*/
|
||||
if (ret == -ETIMEDOUT && phys_enc->sde_kms->catalog->hw_fence_rev)
|
||||
ret = sde_encoder_helper_hw_fence_extended_wait(phys_enc, ctl, &wait_info,
|
||||
INTR_IDX_WRPTR);
|
||||
|
||||
if (ret == -ETIMEDOUT) {
|
||||
struct sde_hw_ctl *ctl = phys_enc->hw_ctl;
|
||||
|
||||
@@ -1754,6 +1763,10 @@ static int _sde_encoder_phys_cmd_wait_for_wr_ptr(
|
||||
lock_flags);
|
||||
}
|
||||
}
|
||||
|
||||
/* if we timeout after the extended wait, reset mixers and do sw override */
|
||||
if (ret && phys_enc->sde_kms->catalog->hw_fence_rev)
|
||||
sde_encoder_helper_hw_fence_sw_override(phys_enc, ctl);
|
||||
}
|
||||
|
||||
cmd_enc->wr_ptr_wait_success = (ret == 0) ? true : false;
|
||||
|
Reference in New Issue
Block a user