mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-13 20:16:26 +00:00
drm/sti: do not post HQVDP command if no update
Do not process update requests with unmodified parameters. Since the HQVDP command queue is limited to 2, we shall take care of not posting unneeded commands, which would abusively fill the command queue leading to frame update skip. This typically happens when the driver is called with legacy (non-atomic) IOCTL : in that case atomic_update() is called multiple times with the same parameters. Signed-off-by: Fabien Dessenne <fabien.dessenne@st.com> Acked-by: Benjamin Gaignard <benjamin.gaignard@linaro.org>
This commit is contained in:
parent
49fb560a7b
commit
97120776f7
1 changed files with 15 additions and 0 deletions
|
@ -1117,6 +1117,21 @@ static void sti_hqvdp_atomic_update(struct drm_plane *drm_plane,
|
|||
if (!crtc || !fb)
|
||||
return;
|
||||
|
||||
if ((oldstate->fb == state->fb) &&
|
||||
(oldstate->crtc_x == state->crtc_x) &&
|
||||
(oldstate->crtc_y == state->crtc_y) &&
|
||||
(oldstate->crtc_w == state->crtc_w) &&
|
||||
(oldstate->crtc_h == state->crtc_h) &&
|
||||
(oldstate->src_x == state->src_x) &&
|
||||
(oldstate->src_y == state->src_y) &&
|
||||
(oldstate->src_w == state->src_w) &&
|
||||
(oldstate->src_h == state->src_h)) {
|
||||
/* No change since last update, do not post cmd */
|
||||
DRM_DEBUG_DRIVER("No change, not posting cmd\n");
|
||||
plane->status = STI_PLANE_UPDATED;
|
||||
return;
|
||||
}
|
||||
|
||||
mode = &crtc->mode;
|
||||
dst_x = state->crtc_x;
|
||||
dst_y = state->crtc_y;
|
||||
|
|
Loading…
Reference in a new issue