Commit 97120776 authored by Fabien DESSENNE's avatar Fabien DESSENNE Committed by Vincent Abriou

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: default avatarFabien Dessenne <fabien.dessenne@st.com>
Acked-by: default avatarBenjamin Gaignard <benjamin.gaignard@linaro.org>
parent 49fb560a
...@@ -1117,6 +1117,21 @@ static void sti_hqvdp_atomic_update(struct drm_plane *drm_plane, ...@@ -1117,6 +1117,21 @@ static void sti_hqvdp_atomic_update(struct drm_plane *drm_plane,
if (!crtc || !fb) if (!crtc || !fb)
return; 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; mode = &crtc->mode;
dst_x = state->crtc_x; dst_x = state->crtc_x;
dst_y = state->crtc_y; dst_y = state->crtc_y;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment