[PATCH 2/2] drm/sti: do not post HQVDP command if no update
Benjamin Gaignard
benjamin.gaignard at linaro.org
Wed Dec 7 11:11:10 UTC 2016
Acked-by: Benjamin Gaignard <benjamin.gaignard at linaro.org>
2016-12-05 16:09 GMT+01:00 Fabien Dessenne <fabien.dessenne at st.com>:
> 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 at st.com>
> ---
> drivers/gpu/drm/sti/sti_hqvdp.c | 15 +++++++++++++++
> 1 file changed, 15 insertions(+)
>
> diff --git a/drivers/gpu/drm/sti/sti_hqvdp.c b/drivers/gpu/drm/sti/sti_hqvdp.c
> index a547723..55cbaea 100644
> --- a/drivers/gpu/drm/sti/sti_hqvdp.c
> +++ b/drivers/gpu/drm/sti/sti_hqvdp.c
> @@ -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;
> --
> 2.7.4
>
--
Benjamin Gaignard
Graphic Study Group
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog
More information about the dri-devel
mailing list