mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-07 19:30:30 +09:00
BACKPORT: media: videobuf2: do not sync caches when we are allowed not to
Skip ->prepare() or/and ->finish() cache synchronisation if
user-space requested us to do so (or when queue dma direction
permits us to skip cache syncs).
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>
(cherry picked from commit dcf3bfe7c7)
Conflicts:
drivers/media/common/videobuf2/videobuf2-core.c
Change-Id: I9cb129fa00f5355fbcda552a3c08052c7c324743
Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com>
This commit is contained in:
committed by
Tao Huang
parent
00d81d9d97
commit
59a5bae71b
@@ -932,9 +932,9 @@ void vb2_buffer_done(struct vb2_buffer *vb, enum vb2_buffer_state state)
|
||||
dprintk(4, "done processing on buffer %d, state: %d\n",
|
||||
vb->index, state);
|
||||
|
||||
if (state != VB2_BUF_STATE_QUEUED &&
|
||||
state != VB2_BUF_STATE_REQUEUEING) {
|
||||
/* sync buffers */
|
||||
if ((state != VB2_BUF_STATE_QUEUED &&
|
||||
state != VB2_BUF_STATE_REQUEUEING) &&
|
||||
vb->need_cache_sync_on_finish) {
|
||||
for (plane = 0; plane < vb->num_planes; ++plane)
|
||||
call_void_memop(vb, finish, vb->planes[plane].mem_priv);
|
||||
}
|
||||
@@ -1291,9 +1291,11 @@ static int __buf_prepare(struct vb2_buffer *vb, const void *pb)
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* sync buffers */
|
||||
for (plane = 0; plane < vb->num_planes; ++plane)
|
||||
call_void_memop(vb, prepare, vb->planes[plane].mem_priv);
|
||||
if (vb->need_cache_sync_on_prepare) {
|
||||
for (plane = 0; plane < vb->num_planes; ++plane)
|
||||
call_void_memop(vb, prepare,
|
||||
vb->planes[plane].mem_priv);
|
||||
}
|
||||
|
||||
vb->state = VB2_BUF_STATE_PREPARED;
|
||||
|
||||
@@ -1727,8 +1729,9 @@ static void __vb2_queue_cancel(struct vb2_queue *q)
|
||||
for (i = 0; i < q->num_buffers; ++i) {
|
||||
struct vb2_buffer *vb = q->bufs[i];
|
||||
|
||||
if (vb->state == VB2_BUF_STATE_PREPARED ||
|
||||
vb->state == VB2_BUF_STATE_QUEUED) {
|
||||
if ((vb->state == VB2_BUF_STATE_PREPARED ||
|
||||
vb->state == VB2_BUF_STATE_QUEUED) &&
|
||||
vb->need_cache_sync_on_finish) {
|
||||
unsigned int plane;
|
||||
|
||||
for (plane = 0; plane < vb->num_planes; ++plane)
|
||||
|
||||
Reference in New Issue
Block a user