From patchwork Fri Jul 31 12:27:03 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Robert Mader X-Patchwork-Id: 27523 Return-Path: X-Original-To: parsemail@patchwork.libcamera.org Delivered-To: parsemail@patchwork.libcamera.org Received: from lancelot.ideasonboard.com (lancelot.ideasonboard.com [92.243.16.209]) by patchwork.libcamera.org (Postfix) with ESMTPS id 051B8BDE4C for ; Fri, 31 Jul 2026 12:27:39 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id A28BA67FD1; Fri, 31 Jul 2026 14:27:38 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=collabora.com header.i=robert.mader@collabora.com header.b="h5+Bp+9G"; dkim-atps=neutral Received: from sender4-op-o11.zoho.com (sender4-op-o11.zoho.com [136.143.188.11]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 4C95465F9F for ; Fri, 31 Jul 2026 14:27:36 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; t=1785500852; cv=none; d=zohomail.com; s=zohoarc; b=VydUSmtguyB7FjQ1sZl8DF1I0MzbRWIxddUV72zw+XuiYH/xfifXdczVgH2duiE08985Ov4Z8X87xT5NKpZh3g2gVnYWhEa9t5Zs6LlFO9PTaxBhClZVuZYgs47kBdXSF18naPeHk0/cd0AuYwWnkl9qskfeUM5cczqcH+lhkG8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1785500852; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:MIME-Version:Message-ID:Subject:Subject:To:To:Message-Id:Reply-To; bh=Ui/4/0foKxB0Ospkl60qw8VcpY6KrceIW8525nr8DmY=; b=FlwkPvhFuxh/vbGP3IxgBB1QI/yniAfs90eR8xAvjiqtIHwqHaNicSb8tdvtRxlJDTPgqqvriDqQ+bAc5hCQPvdWDOA+zEvqbdh2nKM18EzdZ/h8mq5mmnhEtqtsAtrjl+Gpnw4uSgfGTgg8fBAEH2I+fheeqNc2XqnMsdte1wo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=collabora.com; spf=pass smtp.mailfrom=robert.mader@collabora.com; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1785500852; s=zohomail; d=collabora.com; i=robert.mader@collabora.com; h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-ID:MIME-Version:Content-Transfer-Encoding:Message-Id:Reply-To; bh=Ui/4/0foKxB0Ospkl60qw8VcpY6KrceIW8525nr8DmY=; b=h5+Bp+9GcDPYFWTtlXnKzSkZUrgOkUrye9+Clz246eAGoJmxNkEr48Wct8GmIMcO EepEAy7zGK06TM3l3b9RxtOanL644YgjwnijQzqAhPhkEFq3WFLhAEmsjAZ786obUdD eNlHhBYL4ucoOr1DR36xYXtnuwFCeZoGlYyRwBIM= Received: by mx.zohomail.com with SMTPS id 1785500850417374.92728882156905; Fri, 31 Jul 2026 05:27:30 -0700 (PDT) From: Robert Mader To: libcamera-devel@lists.libcamera.org Cc: Robert Mader Subject: [PATCH] pipeline: virtual: Sync dmabufs Date: Fri, 31 Jul 2026 14:27:03 +0200 Message-ID: <20260731122703.111025-1-robert.mader@collabora.com> X-Mailer: git-send-email 2.55.0 MIME-Version: 1.0 X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" Sync the output buffers in order to ensure data coherency. Compare e.g. DebayerCpu::process() Signed-off-by: Robert Mader --- 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(-) 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 +#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 +#include "libcamera/internal/dma_buf_allocator.h" #include "libcamera/internal/mapped_framebuffer.h" #include @@ -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);