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:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* Copyright (C) 2014-2021 The Linux Foundation. All rights reserved.
|
||||
* Copyright (C) 2013 Red Hat
|
||||
* Author: Rob Clark <robdclark@gmail.com>
|
||||
@@ -614,6 +614,29 @@ void sde_plane_dump_input_fence(struct drm_plane *plane)
|
||||
}
|
||||
}
|
||||
|
||||
bool sde_plane_is_sw_fence_signaled(struct drm_plane *plane)
|
||||
{
|
||||
struct sde_plane *psde;
|
||||
struct sde_plane_state *pstate;
|
||||
struct dma_fence *fence;
|
||||
|
||||
if (!plane) {
|
||||
SDE_ERROR("invalid plane\n");
|
||||
} else if (!plane->state) {
|
||||
SDE_ERROR_PLANE(to_sde_plane(plane), "invalid state\n");
|
||||
} else {
|
||||
psde = to_sde_plane(plane);
|
||||
pstate = to_sde_plane_state(plane->state);
|
||||
|
||||
if (pstate->input_fence) {
|
||||
fence = (struct dma_fence *)pstate->input_fence;
|
||||
return dma_fence_is_signaled(fence);
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
int sde_plane_wait_input_fence(struct drm_plane *plane, uint32_t wait_ms)
|
||||
{
|
||||
struct sde_plane *psde;
|
||||
|
Viittaa uudesa ongelmassa
Block a user