mirror of
https://github.com/torvalds/linux.git
synced 2026-05-24 23:22:31 +02:00
drm/vc4: crtc: Move the BO handling out of common page-flip callback
We'll soon introduce another completion callback source that won't need to use the BO reference counting, so let's move it around to create a function we will be able to share between both callbacks. Reviewed-by: Melissa Wen <mwen@igalia.com> Signed-off-by: Maxime Ripard <maxime@cerno.tech> Link: https://lore.kernel.org/r/20220610115149.964394-11-maxime@cerno.tech
This commit is contained in:
parent
2523e9dcc3
commit
4d12c36fb7
|
|
@ -802,21 +802,8 @@ vc4_async_page_flip_complete(struct vc4_async_flip_state *flip_state)
|
|||
drm_crtc_vblank_put(crtc);
|
||||
drm_framebuffer_put(flip_state->fb);
|
||||
|
||||
/* Decrement the BO usecnt in order to keep the inc/dec calls balanced
|
||||
* when the planes are updated through the async update path.
|
||||
* FIXME: we should move to generic async-page-flip when it's
|
||||
* available, so that we can get rid of this hand-made cleanup_fb()
|
||||
* logic.
|
||||
*/
|
||||
if (flip_state->old_fb) {
|
||||
struct drm_gem_cma_object *cma_bo;
|
||||
struct vc4_bo *bo;
|
||||
|
||||
cma_bo = drm_fb_cma_get_gem_obj(flip_state->old_fb, 0);
|
||||
bo = to_vc4_bo(&cma_bo->base);
|
||||
vc4_bo_dec_usecnt(bo);
|
||||
if (flip_state->old_fb)
|
||||
drm_framebuffer_put(flip_state->old_fb);
|
||||
}
|
||||
|
||||
kfree(flip_state);
|
||||
}
|
||||
|
|
@ -825,8 +812,27 @@ static void vc4_async_page_flip_seqno_complete(struct vc4_seqno_cb *cb)
|
|||
{
|
||||
struct vc4_async_flip_state *flip_state =
|
||||
container_of(cb, struct vc4_async_flip_state, cb.seqno);
|
||||
struct vc4_bo *bo = NULL;
|
||||
|
||||
if (flip_state->old_fb) {
|
||||
struct drm_gem_cma_object *cma_bo =
|
||||
drm_fb_cma_get_gem_obj(flip_state->old_fb, 0);
|
||||
bo = to_vc4_bo(&cma_bo->base);
|
||||
}
|
||||
|
||||
vc4_async_page_flip_complete(flip_state);
|
||||
|
||||
/*
|
||||
* Decrement the BO usecnt in order to keep the inc/dec
|
||||
* calls balanced when the planes are updated through
|
||||
* the async update path.
|
||||
*
|
||||
* FIXME: we should move to generic async-page-flip when
|
||||
* it's available, so that we can get rid of this
|
||||
* hand-made cleanup_fb() logic.
|
||||
*/
|
||||
if (bo)
|
||||
vc4_bo_dec_usecnt(bo);
|
||||
}
|
||||
|
||||
/* Implements async (non-vblank-synced) page flips.
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user