Skip to content

Commit

Permalink
drm/vc4: Hook up plane prepare_fb to lookup dma-buf reservations.
Browse files Browse the repository at this point in the history
This way drm_atomic_helper_wait_for_fences() will actually do
something.  The vc4_seqno_cb has been doing the fence waits on V3D
manually, so far.

Signed-off-by: Eric Anholt <[email protected]>
Link: http://patchwork.freedesktop.org/patch/msgid/[email protected]
Acked-by: Daniel Vetter <[email protected]>
Reviewed-by: Boris Brezillon <[email protected]>
  • Loading branch information
anholt committed Jun 22, 2017
1 parent 7d2818f commit 334dbd6
Showing 1 changed file with 17 additions and 0 deletions.
17 changes: 17 additions & 0 deletions drivers/gpu/drm/vc4/vc4_plane.c
Original file line number Diff line number Diff line change
Expand Up @@ -759,9 +759,26 @@ void vc4_plane_async_set_fb(struct drm_plane *plane, struct drm_framebuffer *fb)
vc4_state->dlist[vc4_state->ptr0_offset] = addr;
}

static int vc4_prepare_fb(struct drm_plane *plane,
struct drm_plane_state *state)
{
struct vc4_bo *bo;
struct dma_fence *fence;

if ((plane->state->fb == state->fb) || !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);

return 0;
}

static const struct drm_plane_helper_funcs vc4_plane_helper_funcs = {
.atomic_check = vc4_plane_atomic_check,
.atomic_update = vc4_plane_atomic_update,
.prepare_fb = vc4_prepare_fb,
};

static void vc4_plane_destroy(struct drm_plane *plane)
Expand Down

0 comments on commit 334dbd6

Please sign in to comment.