@@ -14,6 +14,7 @@
#include <libcamera/framebuffer.h>
+#include "libcamera/internal/dma_buf_allocator.h"
#include "libcamera/internal/mapped_framebuffer.h"
#include "libyuv/convert.h"
@@ -127,7 +128,10 @@ int ImageFrameGenerator::generateFrame(const Size &size, const FrameBuffer *buff
{
ASSERT(!scaledFrameDatas_.empty());
- MappedFrameBuffer mappedFrameBuffer(buffer, MappedFrameBuffer::MapFlag::Write);
+ DmaSyncer outDmaSyncer(buffer->planes()[0].fd,
+ DmaSyncer::SyncType::Write);
+ MappedFrameBuffer mappedFrameBuffer(buffer,
+ MappedFrameBuffer::MapFlag::Write);
const auto &planes = mappedFrameBuffer.planes();
@@ -11,6 +11,7 @@
#include <libcamera/base/log.h>
+#include "libcamera/internal/dma_buf_allocator.h"
#include "libcamera/internal/mapped_framebuffer.h"
#include <libyuv/convert_from_argb.h>
@@ -44,6 +45,8 @@ static const unsigned int kARGBSize = 4;
int TestPatternGenerator::generateFrame(const Size &size,
const FrameBuffer *buffer)
{
+ DmaSyncer outDmaSyncer(buffer->planes()[0].fd,
+ DmaSyncer::SyncType::Write);
MappedFrameBuffer mappedFrameBuffer(buffer,
MappedFrameBuffer::MapFlag::Write);
Sync the output buffers in order to ensure data coherency. Compare e.g. DebayerCpu::process() Signed-off-by: Robert Mader <robert.mader@collabora.com> --- src/libcamera/pipeline/virtual/image_frame_generator.cpp | 6 +++++- src/libcamera/pipeline/virtual/test_pattern_generator.cpp | 3 +++ 2 files changed, 8 insertions(+), 1 deletion(-)