[{"id":32124,"web_url":"https://patchwork.libcamera.org/comment/32124/","msgid":"<87pln0fqb9.fsf@redhat.com>","date":"2024-11-12T15:02:34","subject":"Re: [PATCH 2/2] debayer_cpu: Replace syncing DMABUFs with DmaSyncer","submitter":{"id":177,"url":"https://patchwork.libcamera.org/api/people/177/","name":"Milan Zamazal","email":"mzamazal@redhat.com"},"content":"Harvey Yang <chenghaoyang@chromium.org> writes:\n\n> As there's an existing helper class DmaSyncer that makes synchronizing\n> DMABUFs more easily, this patch removes the self-defined function and\n> reuse DmaSyncer.\n>\n> Signed-off-by: Harvey Yang <chenghaoyang@chromium.org>\n\nReviewed-by: Milan Zamazal <mzamazal@redhat.com>\n\n> ---\n>  src/libcamera/software_isp/debayer_cpu.cpp | 29 ++++++----------------\n>  1 file changed, 8 insertions(+), 21 deletions(-)\n>\n> diff --git a/src/libcamera/software_isp/debayer_cpu.cpp b/src/libcamera/software_isp/debayer_cpu.cpp\n> index cf5ecdf7a..852e14f20 100644\n> --- a/src/libcamera/software_isp/debayer_cpu.cpp\n> +++ b/src/libcamera/software_isp/debayer_cpu.cpp\n> @@ -20,6 +20,7 @@\n>  #include <libcamera/formats.h>\n>  \n>  #include \"libcamera/internal/bayer_format.h\"\n> +#include \"libcamera/internal/dma_buf_allocator.h\"\n>  #include \"libcamera/internal/framebuffer.h\"\n>  #include \"libcamera/internal/mapped_framebuffer.h\"\n>  \n> @@ -722,23 +723,6 @@ void DebayerCpu::process4(const uint8_t *src, uint8_t *dst)\n>  \n>  namespace {\n>  \n> -void syncBufferForCPU(FrameBuffer *buffer, uint64_t syncFlags)\n> -{\n> -\tfor (const FrameBuffer::Plane &plane : buffer->planes()) {\n> -\t\tconst int fd = plane.fd.get();\n> -\t\tstruct dma_buf_sync sync = { syncFlags };\n> -\t\tint ret;\n> -\n> -\t\tret = ioctl(fd, DMA_BUF_IOCTL_SYNC, &sync);\n> -\t\tif (ret < 0) {\n> -\t\t\tret = errno;\n> -\t\t\tLOG(Debayer, Error)\n> -\t\t\t\t<< \"Syncing buffer FD \" << fd << \" with flags \"\n> -\t\t\t\t<< syncFlags << \" failed: \" << strerror(ret);\n> -\t\t}\n> -\t}\n> -}\n> -\n>  inline int64_t timeDiff(timespec &after, timespec &before)\n>  {\n>  \treturn (after.tv_sec - before.tv_sec) * 1000000000LL +\n> @@ -756,8 +740,12 @@ void DebayerCpu::process(uint32_t frame, FrameBuffer *input, FrameBuffer *output\n>  \t\tclock_gettime(CLOCK_MONOTONIC_RAW, &frameStartTime);\n>  \t}\n>  \n> -\tsyncBufferForCPU(input, DMA_BUF_SYNC_START | DMA_BUF_SYNC_READ);\n> -\tsyncBufferForCPU(output, DMA_BUF_SYNC_START | DMA_BUF_SYNC_WRITE);\n> +\tstd::vector<DmaSyncer> dmaSyncers;\n> +\tfor (const FrameBuffer::Plane &plane : input->planes())\n> +\t\tdmaSyncers.emplace_back(plane.fd.get(), DmaBufAllocator::SyncType::Read);\n> +\n> +\tfor (const FrameBuffer::Plane &plane : output->planes())\n> +\t\tdmaSyncers.emplace_back(plane.fd.get(), DmaBufAllocator::SyncType::Write);\n>  \n>  \tgreen_ = params.green;\n>  \tred_ = swapRedBlueGains_ ? params.blue : params.red;\n> @@ -786,8 +774,7 @@ void DebayerCpu::process(uint32_t frame, FrameBuffer *input, FrameBuffer *output\n>  \n>  \tmetadata.planes()[0].bytesused = out.planes()[0].size();\n>  \n> -\tsyncBufferForCPU(output, DMA_BUF_SYNC_END | DMA_BUF_SYNC_WRITE);\n> -\tsyncBufferForCPU(input, DMA_BUF_SYNC_END | DMA_BUF_SYNC_READ);\n> +\tdmaSyncers.clear();\n>  \n>  \t/* Measure before emitting signals */\n>  \tif (measuredFrames_ < DebayerCpu::kLastFrameToMeasure &&","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 3CB11C324C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 12 Nov 2024 15:02:47 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 068F6657F2;\n\tTue, 12 Nov 2024 16:02:46 +0100 (CET)","from us-smtp-delivery-124.mimecast.com\n\t(us-smtp-delivery-124.mimecast.com [170.10.133.124])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id EA0BC657B0\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 12 Nov 2024 16:02:44 +0100 (CET)","from mail-wm1-f69.google.com (mail-wm1-f69.google.com\n\t[209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS\n\t(version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id\n\tus-mta-48-aet11s25PQakY5-7sbhU-g-1; Tue, 12 Nov 2024 10:02:42 -0500","by mail-wm1-f69.google.com with SMTP id\n\t5b1f17b1804b1-4314f1e0f2bso41424485e9.1\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 12 Nov 2024 07:02:39 -0800 (PST)","from nuthatch (nat-pool-brq-t.redhat.com. [213.175.37.10])\n\tby smtp.gmail.com with ESMTPSA id\n\t5b1f17b1804b1-432aa5b5b2dsm245404785e9.1.2024.11.12.07.02.35\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tTue, 12 Nov 2024 07:02:35 -0800 (PST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=redhat.com header.i=@redhat.com\n\theader.b=\"YM9ofcGy\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n\ts=mimecast20190719; t=1731423763;\n\th=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n\tto:to:cc:cc:mime-version:mime-version:content-type:content-type:\n\tin-reply-to:in-reply-to:references:references;\n\tbh=lcS6DLb5dzhv/sRSmyGwarp1+FoNZhbqBb7xGslulCA=;\n\tb=YM9ofcGyYpLdO/WtiUJb8G84BxdyDDIbUWAc/HYIpfJl8kSOHaq9NQKwC5m6Y54soeF3H4\n\tgHEzQPAEgXupfdYEb8ri9KIzBihKqOW8iU637wzBPB46nVLO1AINO/bO7TvW2gjd9zeoU5\n\tFTAuwWVwtGp4wHdkkiSryE7u1bDc27Y=","X-MC-Unique":"aet11s25PQakY5-7sbhU-g-1","X-Mimecast-MFC-AGG-ID":"aet11s25PQakY5-7sbhU-g","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20230601; t=1731423758; x=1732028558;\n\th=mime-version:user-agent:message-id:date:references:in-reply-to\n\t:subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date\n\t:message-id:reply-to;\n\tbh=lcS6DLb5dzhv/sRSmyGwarp1+FoNZhbqBb7xGslulCA=;\n\tb=fUuTF28ULVa8HBQb/FK7WWWMvYWp+JBdxKuZuhtyJcbYT7OFBJhgLzrx223T9n98UO\n\tQdK1vrF9Z2DeC5o7UJ1DjIQRxFgqFZZ6XR0JToHM+eSJUBFB5/AKzmSYvlZa7W9pOUZN\n\t0440CWAUVi+3xesTpT0P+OajJ2ZtSXsQPzm86sGRRVX484VJeO7jejxQhZvNgFBW5U46\n\t3zceaIINDIQbyMkVGHn+rzbW6rGSaiexBy+y5AQjjxjDkf8lQAuNTGkSG/RWpgFw8RRY\n\tPBAsmqpMEQrNt1vsqKgz4Smwozj8m9kX8RgD9tilOIMZ9PJ/aEwLSmRlPBJ1lO0Wy7DY\n\tfynw==","X-Gm-Message-State":"AOJu0Yy0g4MTaLVnTyA9p6cOUXvAb2xIuLvOAo/b9qy04sRAAvs33xDZ\n\tpOjzD7LUbaA/9Kyx4xO7KeDqs6B0cpd6yfNPh+CPhIDIFT4JqD/+yFsYVVKNfL5ASLW0R9/ICN1\n\twZ0saeHDQ9kFiZs/1zWuQjVYcT9yxpHVzixephUp8p6lvmJZkznQKuBKr2xSpP1Hz5k2oZLLAOg\n\tNNis+CPwfQD2xVgVffhunpa8+lODO24KmKjV2GbsEj/+ngoO/xz9XkhUU=","X-Received":["by 2002:a05:600c:4e8b:b0:42c:c401:6d8b with SMTP id\n\t5b1f17b1804b1-432b74feb99mr141989735e9.7.1731423757183; \n\tTue, 12 Nov 2024 07:02:37 -0800 (PST)","by 2002:a05:600c:4e8b:b0:42c:c401:6d8b with SMTP id\n\t5b1f17b1804b1-432b74feb99mr141988735e9.7.1731423756371; \n\tTue, 12 Nov 2024 07:02:36 -0800 (PST)"],"X-Google-Smtp-Source":"AGHT+IFj+zCszjjf4xMUK6HPibJYth4lQHI3CtMkcX/hB1aPcWelaV4X0xadv3lK8iGw9HdTsdSWfQ==","From":"Milan Zamazal <mzamazal@redhat.com>","To":"Harvey Yang <chenghaoyang@chromium.org>","Cc":"libcamera-devel@lists.libcamera.org","Subject":"Re: [PATCH 2/2] debayer_cpu: Replace syncing DMABUFs with DmaSyncer","In-Reply-To":"<20241112100051.4071443-3-chenghaoyang@chromium.org> (Harvey\n\tYang's message of \"Tue, 12 Nov 2024 09:56:55 +0000\")","References":"<20241112100051.4071443-1-chenghaoyang@chromium.org>\n\t<20241112100051.4071443-3-chenghaoyang@chromium.org>","Date":"Tue, 12 Nov 2024 16:02:34 +0100","Message-ID":"<87pln0fqb9.fsf@redhat.com>","User-Agent":"Gnus/5.13 (Gnus v5.13)","MIME-Version":"1.0","X-Mimecast-Spam-Score":"0","X-Mimecast-MFC-PROC-ID":"WWPKF5hZHyLeWKgXQ16s0krSQ5mDkaW7ZV8jnBF2h4w_1731423758","X-Mimecast-Originator":"redhat.com","Content-Type":"text/plain","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]