drm/vc4: Always obey implicit sync
authorDaniel Vetter <daniel.vetter@ffwll.ch>
Thu, 5 Apr 2018 15:44:48 +0000 (17:44 +0200)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Wed, 20 Jun 2018 12:45:48 +0000 (14:45 +0200)
Same justification as for drm_gem_fb_prepare_fb.

Cc: Eric Anholt <eric@anholt.net>
Reviewed-by: Eric Anholt <eric@anholt.net>
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20180405154449.23038-9-daniel.vetter@ffwll.ch
Link: https://patchwork.freedesktop.org/patch/msgid/20180409085134.27321-1-daniel.vetter@ffwll.ch
drivers/gpu/drm/vc4/vc4_plane.c

index 2575bd81a0105c4ca3f2f9e84e6a9bd8f886fdb4..3922f5f5807d026c407f38922f5c37ae7f4b9722 100644 (file)
@@ -861,18 +861,21 @@ static int vc4_prepare_fb(struct drm_plane *plane,
        struct dma_fence *fence;
        int ret;
 
-       if ((plane->state->fb == state->fb) || !state->fb)
+       if (!state->fb)
                return 0;
 
        bo = to_vc4_bo(&drm_fb_cma_get_gem_obj(state->fb, 0)->base);
 
+       fence = reservation_object_get_excl_rcu(bo->resv);
+       drm_atomic_set_fence_for_plane(state, fence);
+
+       if (plane->state->fb == state->fb)
+               return 0;
+
        ret = vc4_bo_inc_usecnt(bo);
        if (ret)
                return ret;
 
-       fence = reservation_object_get_excl_rcu(bo->resv);
-       drm_atomic_set_fence_for_plane(state, fence);
-
        return 0;
 }