pipeline: virtual: Sync dmabufs
diff mbox series

Message ID 20260731122703.111025-1-robert.mader@collabora.com
State New
Headers show
Series
  • pipeline: virtual: Sync dmabufs
Related show

Commit Message

Robert Mader July 31, 2026, 12:27 p.m. UTC
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(-)

Patch
diff mbox series

diff --git a/src/libcamera/pipeline/virtual/image_frame_generator.cpp b/src/libcamera/pipeline/virtual/image_frame_generator.cpp
index 5ba76507a72e..a5a812668d2e 100644
--- a/src/libcamera/pipeline/virtual/image_frame_generator.cpp
+++ b/src/libcamera/pipeline/virtual/image_frame_generator.cpp
@@ -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();
 
diff --git a/src/libcamera/pipeline/virtual/test_pattern_generator.cpp b/src/libcamera/pipeline/virtual/test_pattern_generator.cpp
index 12cce9f7e8c2..95c189760e95 100644
--- a/src/libcamera/pipeline/virtual/test_pattern_generator.cpp
+++ b/src/libcamera/pipeline/virtual/test_pattern_generator.cpp
@@ -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);