mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-27 11:19:37 +00:00
media: videobuf2: move cache_hints handling to allocators
This moves cache hints handling from the videobuf2 core down to the allocator's level, because allocators do the sync/flush caches eventually and may take better decisions. Besides, allocators already decide whether cache sync/flush should be done or can be skipped. This patch moves the scattered buffer cache sync logic to one common place. Signed-off-by: Sergey Senozhatsky <senozhatsky@chromium.org> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
This commit is contained in:
parent
0a12d652fc
commit
cde513fd9b
3 changed files with 12 additions and 6 deletions
|
@ -328,9 +328,6 @@ static void __vb2_buf_mem_prepare(struct vb2_buffer *vb)
|
|||
return;
|
||||
|
||||
vb->synced = 1;
|
||||
if (vb->skip_cache_sync_on_prepare)
|
||||
return;
|
||||
|
||||
for (plane = 0; plane < vb->num_planes; ++plane)
|
||||
call_void_memop(vb, prepare, vb->planes[plane].mem_priv);
|
||||
}
|
||||
|
@ -347,9 +344,6 @@ static void __vb2_buf_mem_finish(struct vb2_buffer *vb)
|
|||
return;
|
||||
|
||||
vb->synced = 0;
|
||||
if (vb->skip_cache_sync_on_finish)
|
||||
return;
|
||||
|
||||
for (plane = 0; plane < vb->num_planes; ++plane)
|
||||
call_void_memop(vb, finish, vb->planes[plane].mem_priv);
|
||||
}
|
||||
|
|
|
@ -101,6 +101,9 @@ static void vb2_dc_prepare(void *buf_priv)
|
|||
struct vb2_dc_buf *buf = buf_priv;
|
||||
struct sg_table *sgt = buf->dma_sgt;
|
||||
|
||||
if (buf->vb->skip_cache_sync_on_prepare)
|
||||
return;
|
||||
|
||||
if (!sgt)
|
||||
return;
|
||||
|
||||
|
@ -112,6 +115,9 @@ static void vb2_dc_finish(void *buf_priv)
|
|||
struct vb2_dc_buf *buf = buf_priv;
|
||||
struct sg_table *sgt = buf->dma_sgt;
|
||||
|
||||
if (buf->vb->skip_cache_sync_on_finish)
|
||||
return;
|
||||
|
||||
if (!sgt)
|
||||
return;
|
||||
|
||||
|
|
|
@ -204,6 +204,9 @@ static void vb2_dma_sg_prepare(void *buf_priv)
|
|||
struct vb2_dma_sg_buf *buf = buf_priv;
|
||||
struct sg_table *sgt = buf->dma_sgt;
|
||||
|
||||
if (buf->vb->skip_cache_sync_on_prepare)
|
||||
return;
|
||||
|
||||
dma_sync_sgtable_for_device(buf->dev, sgt, buf->dma_dir);
|
||||
}
|
||||
|
||||
|
@ -212,6 +215,9 @@ static void vb2_dma_sg_finish(void *buf_priv)
|
|||
struct vb2_dma_sg_buf *buf = buf_priv;
|
||||
struct sg_table *sgt = buf->dma_sgt;
|
||||
|
||||
if (buf->vb->skip_cache_sync_on_finish)
|
||||
return;
|
||||
|
||||
dma_sync_sgtable_for_cpu(buf->dev, sgt, buf->dma_dir);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue